Skip to content

Latest commit

 

History

History
executable file
·
92 lines (68 loc) · 3.52 KB

README.md

File metadata and controls

executable file
·
92 lines (68 loc) · 3.52 KB

G'DOS

G'DOS is a portable, multi-architecture ROM-native hobby OS that also functions as a bootloader for other software, such as Linux. It is being developed mainly to power my various homebrew computer projects.

G'DOS after boot

Here are some highlights of what I've implemented so far:

  • ELF binary loading
  • Dynamic memory allocation
  • Syscall interface
  • Custom libc
  • Hardware detection & driver subsystem
  • Linux kernel bootloader
  • G'Shell, the command line interface
  • G'Mon, the scriptable memory monitor

Purpose?

G'DOS initially started as G'Mon, the machine language monitor I wrote for use on my various homebrew computer projects. Each time I began working with a new piece of hardware, I had to port the its 100% assembly source over the the new machine. After 3 architectures, I figured I had spent more time porting it than I did actually working on it. This angers the programmer.

So I rewrote the entire thing in C instead, and adopted the helpful strategy of "throw everything you can't possibly write in C into a special folder so you can deal with it later" approach. From there it grew out of control like some sort of strange mold, into what G'DOS is today.

Now just like a strange mold, G'DOS continues to grow. It still remains my main project, software-wise at least.

Try it out

If you just want to try G'DOS out, then I recommend targeting emu68k platform for the m68k architecture, since that's the platform I can provide the most support for.

After building and installing the simulator, you can configure G'DOS using

./config.sh ARCH=m68k PLATFORM=emu68k

then to build and launch the simulator use

make && make run

after the window opens, click Run and you should see G'DOS booting up.

Building

This is the current list of supported platforms and architectures supported by G'DOS

  • m68k
    • Blitz
    • BSVC
    • mcf5208
  • arm
    • versatilepb
  • ppc
    • psim

To build, just take the arch and platform name and run the config script with them

./config.sh PLATFORM=<platform> ARCH=<arch>

config.sh just saves any arguments it receives to a hidden .config file in the build directory for the makefile to grab from. This is just a small convenience thing so that you don't have to append PLATFORM and ARCH every time you make a target.

To build the rom image, just make target all:

make all

The other default targets are clean, which deletes all the generated object files, and distclean, which does the same thing as clean, but also deletes the config file generated by config.sh

Testing

Each architecture supports at least one simulator platform. When targeting a simulated platform, you can make run and the simulator will be launched with the generated binary running.

Out of the previous platform list, these are the ones that are simulators. also listed is the name of the simulator used

Porting / Contribution

A porting guide is planned at some point soon.

If by some chance you have homebrew hardware you want to port G'DOS to, then by all means, contributions are welcome.

Authors

  • NotArtyom - Things that do stuff - Website