mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-21 13:28:41 +00:00
233 lines
No EOL
10 KiB
HTML
233 lines
No EOL
10 KiB
HTML
<html>
|
|
<head></head>
|
|
<body>
|
|
<h3>Public</h3>
|
|
<ul>
|
|
<li>Convert current DB from FB to SQL Compact<ul>
|
|
<li>without EDM as first step - just straight port</li>
|
|
</ul>
|
|
</li>
|
|
<li>Installer - how do we get it to stop asking UAC every time?<ul>
|
|
<li><a href="http://msmvps.com/blogs/martinzugec/archive/2008/05/16/ignore-uac-for-specific-programs.aspx">
|
|
http://msmvps.com/blogs/martinzugec/archive/2008/05/16/ignore-uac-for-specific-programs.aspx</a></li>
|
|
<li><a href="http://hardforum.com/archive/index.php/t-1611290.html">
|
|
http://hardforum.com/archive/index.php/t-1611290.html</a></li>
|
|
<li><a href="http://www.prnwatch.com/prio.html">http://www.prnwatch.com/prio.html</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>Dynamic load/unload IL2CPU and other parts so we dont need to exit and run
|
|
builder every time for changes</li>
|
|
<li>X# msbuild action</li>
|
|
<li><a href="http://www.tellingmachine.com/post/Too-much-VMWare-can-cause-Unable-to-connect-to-host-Error-The-specified-version-was-not-found.aspx">http://www.tellingmachine.com/post/Too-much-VMWare-can-cause-Unable-to-connect-to-host-Error-The-specified-version-was-not-found.aspx</a><ul>
|
|
<li>Check in builder? Modify for users?</li>
|
|
<li>there are TWO of these text files if the user has VIX installed, I had to modify
|
|
the one in m vmware dir</li>
|
|
</ul>
|
|
</li>
|
|
<li>Cosmos.VS.Windows, Package - use vsix reg tool</li>
|
|
</ul>
|
|
<h3>
|
|
Matthijs</h3>
|
|
<ul>
|
|
<li>Remove old debug pages, rename remaining to Cosmos</li>
|
|
</ul>
|
|
<h3>
|
|
Kudzu</h3>
|
|
<ul>
|
|
<li>X# <ul>
|
|
<li>X#<ul>
|
|
<li>Waitforhandshake</li>
|
|
<li>Complete</li>
|
|
<li>Code Completion</li>
|
|
</ul>
|
|
<li>Asm stepping<ul>
|
|
<li>Historical panels</li>
|
|
</ul>
|
|
</li>
|
|
<li>Convert cxdb to sql compact and edm<ul>
|
|
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=17876">http://www.microsoft.com/download/en/details.aspx?id=17876</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>Increase speed of DebugStub / lower impact</li>
|
|
<li>DS Ping or set a breakpoint while not in a break state will hang VS.<ul>
|
|
<li>This is because its waiting on some other command to release?</li>
|
|
</ul>
|
|
</li>
|
|
<li>Watches<ul>
|
|
<li>Memory watches</li>
|
|
<li>this:28 - show its size</li>
|
|
<li>watches - show EBP+-</li>
|
|
<li>frame - show var names</li>
|
|
<li>asm window - show values of EBP, etc...</li>
|
|
</ul>
|
|
</li>
|
|
<li>watches that can see fields/members<ul>
|
|
<li>of other classes besides this</li>
|
|
</ul>
|
|
</li>
|
|
<li>ATA / FAT</li>
|
|
<li>ring restrictions on console etc.. by class, or explict inclusion</li>
|
|
<li>PIT/RTC<ul>
|
|
<li>And sleep, needed for ATA</li>
|
|
</ul>
|
|
</li>
|
|
<li>tohex plug based on string input of X8 etc</li>
|
|
<li>Bootstrap - clean up more</li>
|
|
<li>networking</li>
|
|
<li>gc</li>
|
|
<li>USB</li>
|
|
</ul>
|
|
<p>
|
|
scanner issue: <a href="http://groups.yahoo.com/group/Cosmos-Dev/message/4789">
|
|
http://groups.yahoo.com/group/Cosmos-Dev/message/4789</a><br />
|
|
debugstub.SkipMethod<br />
|
|
SkipClass<br />
|
|
speedup debug stub on no trigger<br />
|
|
compiler dynamic load<br />
|
|
unsafe arrays but controllled
|
|
</p>
|
|
<h3>
|
|
Matthijs - Next Release</h3>
|
|
<ul>
|
|
<li>Express isnt showing any templates - VB only?</li>
|
|
<li>C# for menus</li>
|
|
<li>Debug VS on Cosmos menu</li>
|
|
</ul>
|
|
<h3>
|
|
Trivalik - Next Release</h3>
|
|
<ul>
|
|
<li>Remove 2008<ul>
|
|
<li>And 2010 suffixes</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h3>
|
|
Next Release + 1</h3>
|
|
<ul>
|
|
<li>Throw exception on null ref...</li>
|
|
<li>Plugs - warn if plugging something that doesnt exists... caused the x08 bug?</li>
|
|
<li>Write out .asm line number to the cxdb file so I can use it in cgdb</li>
|
|
<li>(joint with Kudzu) - Move all critical plugs out of old asms and remove building
|
|
of old asms.<ul>
|
|
<li>And the plugs also from CustomImplementations in IL2CPU?</li>
|
|
</ul>
|
|
</li>
|
|
<li>Exceptions dont work. Try int.parse("asdf"). It runs but when the exception is
|
|
hit we get garbage back instead. (ie exceptions through plug proxy dont work)</li>
|
|
<li>We are still stuck on install.bat.. I made a change in Cosmos.Hardware.. but it
|
|
didnt take effect until I ran install.bat..</li>
|
|
<li>IL2CPU.AlwaysCompile attribute and get rid of IDT.Dummy</li>
|
|
<li>int j = Array.IndexOf(Digits, s[i]);<ul>
|
|
<li>When Digits is a char array, we get a plug needed error.</li>
|
|
</ul>
|
|
</li>
|
|
<li>cxdb contains full asm path and filenames over and over... cant we write them
|
|
out once and use a byte/word index to identify them? This will make it smaller
|
|
and make reading faster.</li><li>Plugs <ul>
|
|
<li>Source Plugs - Leave as they are</li>
|
|
<li>Assembly Plugs - Change to have attribute on the TARGET instead of the
|
|
implementation and only allow assembly.. this cuts out the "proxy" class and
|
|
makes it easier to find plug impls. See Rings.html for more info. The assembly
|
|
level plugs can even go in the same assembly, source file and if we can the same
|
|
class? That is currently these assembly plugs require 3 classes to implement.
|
|
its ugly and messy... we can get it down to 2 - 1 + assembly (X# only!). Current
|
|
way is such a mess we even comment them as plugged, but then have to go guessing
|
|
where the impl is... See example down below....</li>
|
|
<li>Convert all source plugs and disable old attributes...so for new ones use new
|
|
names</li>
|
|
</ul>
|
|
</li>
|
|
<li>We need to dynamically
|
|
load the plugs etc so we can just rebuild and run and even trace them without
|
|
rerunnig the bat for each change</li>
|
|
</li>
|
|
<li>2010 support<ul>
|
|
<li>http://blogs.msdn.com/b/jacdavis/archive/2010/04/05/vs-2010-version-of-debugenginesample-is-now-available.aspx</li>
|
|
<li>Trivalik worked on some already</li>
|
|
</ul>
|
|
</li>
|
|
<li>Ring attributes and enforcement<ul>
|
|
<li>Also allow restriction of assembly references</li>
|
|
<li>Only allow core to be /unsafe, no others</li>
|
|
</ul>
|
|
</li>
|
|
<li>Ask on forums: How to debug the vsdebug pkg?<ul>
|
|
<li>http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/6a9a307a-19fa-4c06-8728-303c1f4dd0bc/</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h3>
|
|
Even later</h3>
|
|
<ul>
|
|
<li>localloc - int.parse needs plug for now because of this.</li>
|
|
<li>use INT3 for BP? Will save 3 bytes per call.. which is a lot...</li>
|
|
<li>Gradual X# upgrades (Kudzu)</li>
|
|
<li>Filesystem</li>
|
|
<li>Memory Manager<ul>
|
|
<li>http://www.osdever.net/tutorials/view/memory-management-1</li>
|
|
<li>http://www.osdever.net/tutorials/view/memory-management-2</li>
|
|
</ul>
|
|
</li>
|
|
<li>UDP</li>
|
|
<li>TCP</li>
|
|
<li>Cosmos.Debug.Common - much in here is not common and should be moved to
|
|
VSDebug.. Add Readme.html that NASM and VSDebug use whats left</li>
|
|
<li>foreach / interfaces</li>
|
|
</ul>
|
|
<h3>
|
|
Further Down</h3>
|
|
<ul>
|
|
<li>USB</li>
|
|
</ul>
|
|
<h3>
|
|
Notes</h3>
|
|
<h3>
|
|
Assembly Plug Example</h3>
|
|
<h4>
|
|
Old way</h4>
|
|
<p>
|
|
(3 classes, often 3 source files as well)</p>
|
|
<pre>public class CPUBus {
|
|
// Plugged
|
|
public static void Write8(UInt16 aPort, byte aData) { }
|
|
...
|
|
|
|
[Plug(Target = typeof(Cosmos.Kernel.CPUBus))]
|
|
class CPUBus {
|
|
[PlugMethod(Assembler = typeof(Assemblers.IOWrite8))]
|
|
public static void Write8(UInt16 aPort, byte aData) { }
|
|
...
|
|
|
|
public sealed class IOWrite8: AssemblerMethod {
|
|
public override void AssembleNew(object aAssembler, object aMethodInfo) {
|
|
//TODO: This is a lot of work to write to a single port. We need to have some kind of inline ASM option that can emit a single out instruction
|
|
new CPUx86.Move { DestinationReg = CPUx86.Registers.EDX, SourceReg = CPUx86.Registers.EBP, SourceDisplacement = 0xC, SourceIsIndirect = true };
|
|
new CPUx86.Move { DestinationReg = CPUx86.Registers.EAX, SourceReg = CPUx86.Registers.EBP, SourceDisplacement = 0x8, SourceIsIndirect = true };
|
|
new CPUx86.Out { DestinationReg = CPUx86.Registers.AL };
|
|
}
|
|
} </pre>
|
|
<h4>
|
|
New way</h4>
|
|
<p>
|
|
See how much neater and self contained this is? :)</p>
|
|
<p>
|
|
public class CPUBus {<br />
|
|
|
|
<br />
|
|
[AsmBody(Assembler = typeof(IOWrite8))]<br />
|
|
public static void Write8(UInt16 aPort, byte aData) { }<br />
|
|
// Nested class even... :) Keeps it all in one unit!<br />
|
|
public class IOWrite8 : CodeBlock {
|
|
<br />
|
|
public override void Assemble() {<br />
|
|
EDX = EBP + 0x0C;<br />
|
|
EAX = EBP + 0x08;<br />
|
|
Port[DX] = AL;<br />
|
|
}<br />
|
|
}
|
|
<br />
|
|
<br />
|
|
} </p>
|
|
|
|
</body>
|
|
</html> |