ProbablyNotArtyom / G-DOS

Licence: other
A portable, ROM-booting hobby OS. Currently supports m68k, arm, and PowerPC targets

Programming Languages

c
50402 projects - #5 most used programming language
assembly
5116 projects
Makefile
30231 projects
javascript
184084 projects - #8 most used programming language
shell
77523 projects
tcl
693 projects

Projects that are alternatives of or similar to G-DOS

Unicorn
Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, X86)
Stars: ✭ 4,934 (+13605.56%)
Mutual labels:  arm, m68k, powerpc
Capstone
Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings.
Stars: ✭ 5,374 (+14827.78%)
Mutual labels:  arm, m68k, powerpc
Awesome Cpus
All CPU and MCU documentation in one place
Stars: ✭ 1,602 (+4350%)
Mutual labels:  arm, m68k, powerpc
docker-elasticsearch
Multi-architecture (arm, x86) Docker image for Elasticsearch
Stars: ✭ 14 (-61.11%)
Mutual labels:  arm, multiarch
Steed
[INACTIVE] Rust's standard library, free of C dependencies, for Linux systems
Stars: ✭ 520 (+1344.44%)
Mutual labels:  arm, powerpc
tupai
Tupai is a multi-tasking operating system I wrote for my degree that focuses on safety and design, targeting a variety of platforms.
Stars: ✭ 21 (-41.67%)
Mutual labels:  arm, osdev
Fukuro
Simple microkernel (early stage)
Stars: ✭ 18 (-50%)
Mutual labels:  arm, osdev
Keypatch
Multi-architecture assembler for IDA Pro. Powered by Keystone Engine.
Stars: ✭ 939 (+2508.33%)
Mutual labels:  arm, powerpc
Cemu
Cheap EMUlator: lightweight multi-architecture assembly playground
Stars: ✭ 666 (+1750%)
Mutual labels:  arm, powerpc
Simde
Implementations of SIMD instruction sets for systems which don't natively support them.
Stars: ✭ 1,012 (+2711.11%)
Mutual labels:  arm, powerpc
Keystone
Keystone assembler framework: Core (Arm, Arm64, Hexagon, Mips, PowerPC, Sparc, SystemZ & X86) + bindings
Stars: ✭ 1,654 (+4494.44%)
Mutual labels:  arm, powerpc
Bap
Binary Analysis Platform
Stars: ✭ 1,385 (+3747.22%)
Mutual labels:  arm, powerpc
Raspberry Pi Os
Learning operating system development using Linux kernel and Raspberry Pi
Stars: ✭ 11,000 (+30455.56%)
Mutual labels:  arm, osdev
Sleef
SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT
Stars: ✭ 353 (+880.56%)
Mutual labels:  arm, powerpc
Easy Linux Pwn
A set of Linux binary exploitation tasks for beginners on various architectures
Stars: ✭ 353 (+880.56%)
Mutual labels:  arm, powerpc
Arm now
arm_now is a qemu powered tool that allows instant setup of virtual machines on arm cpu, mips, powerpc, nios2, x86 and more, for reverse, exploit, fuzzing and programming purpose.
Stars: ✭ 719 (+1897.22%)
Mutual labels:  arm, powerpc
cross
“Zero setup” cross compilation and “cross testing” of Rust crates
Stars: ✭ 3,550 (+9761.11%)
Mutual labels:  arm, powerpc
kernel
Main kernel tree
Stars: ✭ 28 (-22.22%)
Mutual labels:  arm, osdev
Simd
C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.
Stars: ✭ 1,263 (+3408.33%)
Mutual labels:  arm, powerpc
Cross
“Zero setup” cross compilation and “cross testing” of Rust crates
Stars: ✭ 2,461 (+6736.11%)
Mutual labels:  arm, powerpc

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].