Roman wrote:
SpyderTL's OS is written in C#. His signature contains a link.
Sort of.
I've essentially written my own language using XML, XSD and XSLT files. I only use C# to run the XSLT transforms, and to calculate memory addresses, and format output files for specific platforms. I could just as easily do this part in Java or Python.
I basically define all CPU instructions and platform memory locations in XML files (essentially name/value pairs), and then use XSLT files to transform any references to those names into the corresponding hex values. Then, I add more layers of XSLT transforms on top of that, and use C# code to recursively convert high level XML elements (<console:WriteLine>Hello, World!</console:WriteLine>) into low level XML elements (<cpu:WriteALToDXPort/>), and finally I use C# code to write these low level hex values to a file (or physical disk, if I'm feeling brave that day.)
Although, I wouldn't call it "cross-platform", I do have XML files defined for several different platforms, so I can actually build projects for x86, ARM, NES, SNES, N64, GameBoy, GBA, Windows, Java, .NET, and pretty much any other platform that I can find an emulator (and documentation) for. Eventually, I hope to have a very high level layer that truly is cross-platform, that will compile down to several different platforms, but I'm still quite far from that particular goal.
If nothing else, all of my files are in XML, so they should be fairly easy to transform into other languages, if you wanted to use them to build, say, your own emulator.
onlyonemac wrote:
It sounds like your OS has a very cool internal (and possibly external?) API.
My goal was to build an OS that booted faster than MS-DOS, but had more built-in functionality than Windows does, out of the box. If you've ever used PowerShell, or the Immediate Window in Visual Studio, this is what I was shooting for. I want a simple object-oriented command line, with a large number of built in "classes" that can be combined to perform most every day tasks, like downloading files, reading web pages, playing video and audio streams, rendering 3D models, etc.
I also wanted to completely rethink OS development using modern tools and practices, in order to avoid inheriting any "legacy" patterns that most OS designs (even most indie OS designs) may gravitate toward. So, the system is built around Objects, Classes and Stream Readers, instead of traditional Files, File Systems, and Memory Buffers.