duskos

dusk os fork
git clone git://git.alexwennerberg.com/duskos
Log | Files | Refs | README | LICENSE

commit cf8c0eb6e24de492bb680bfffa4e818b6ef5dfb4
parent 445c39361bdd1037913c675bf40228c3c58e48cf
Author: Virgil Dupras <hsoft@hardcoded.net>
Date:   Thu, 20 Oct 2022 17:53:28 -0400

Add ROADMAP.md

Diffstat:
DNEXTSTEPS.md | 30------------------------------
MREADME.md | 34+++-------------------------------
AROADMAP.md | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 82 insertions(+), 61 deletions(-)

diff --git a/NEXTSTEPS.md b/NEXTSTEPS.md @@ -1,30 +0,0 @@ -# Next steps - -Right now, my focus is on the C compiler, but here's some ideas of things to -improve in periphery of that main effort. - -## Word annotations - -I'd like documentation about words to be in-system and this could be done with -an annotation system. The annotation system is already there, we would need to -populate those annotations. - -Then, it's a matter of developing a nice interactive application to navigate -words and see their associated documentation. - -### Argspecs - -Right now, only one type of annotation is there, the docstring. However, another -type of annotation would be useful, argspecs. To have comments like ( a b -- n ) -be in a separate structure is not only for better doc formatting, it's also that -it will eventually be essential for C code to call Forth words. Because the C -compiler has to know the signature of a word to properly call it, we'll need -that argpec annotation to have a "machine-readable" structure. - -## Accelerators - -It would be fun if assemblers were leveraged early in the boot process to -accelerate some core words. For example, it could override the "+" word into an -immediate that emits `eax [ebp] mov, ebp 4 i32 add, [ebp] eax add,`, or even -better, that detects if the last compiled word was a literal and replace that -literal with `[ebp] (replaced literal) i32 add,`. diff --git a/README.md b/README.md @@ -96,19 +96,6 @@ and some of those pieces might be useful debugging tools which will be difficult to retrofit because they need a wider system. You'll also need a higher cognitive space to fit BSD/Linux wider abstractions in your mind. -## Roadmap - -The high level roadmap for Dusk OS is: - -1. Have a 32-bit Forth written in x86 run on top of of a Linux system. -2. Create a pseudo C compiler that is partly written in Forth and has the - peculiarity of bootstrapping itself from it. No binary except Dusk's core. -3. Target a machine (probably legacy PC) and have it run bare metal on it. -4. Self-host. -5. Steal drivers from Linux and/or BSD kernels to widen hardware support. -6. Port exiting POSIX applications so that Dusk OS fulfills its stated goals. -7. Add support for more machines. - ## Status * Has a VM written in C, buildable from a POSIX environment, which allows Dusk @@ -124,29 +111,13 @@ The high level roadmap for Dusk OS is: * PS/2 keyboard * PCI controllers * ATA controllers + * AHCI controllers * PC COM ports * Can read, write and boot from FAT12/FAT16 (no FAT32 for now) volumes. * Can create new FAT12 volumes. * It completely self-hosts on all its target (only PC for now) machines. -In a general way, here's the list of things missing from Dusk C for it to be -consider complete: - -* union -* switch -* enum -* goto -* float -* a few little ops here and there -* the check phase (anything that is currently understood by the parser is - compiled no matter how nonsensical). -* probably countless bugs - -So, there's a fair chunk of work left, but there's also a lot that's already -done. - -It's also important to note that, by design, this C compiler departs from ANSI -standard in some ways, described in its [technical details][duskcc]. +What's next? See the [roadmap][roadmap]! Development happens on [sourcehut][3]. @@ -237,6 +208,7 @@ BIOS" mode. [usage]: fs/doc/usage.txt [dict]: fs/doc/dict.txt [duskcc]: fs/doc/cc.txt +[roadmap]: ROADMAP.md [3]: https://sr.ht/~vdupras/duskos [4]: https://sr.ht/~vdupras/duskos/lists [5]: fs/tests/cc/test.c diff --git a/ROADMAP.md b/ROADMAP.md @@ -0,0 +1,79 @@ +# Dusk OS Roadmap + +The biggest task is always to iron out the bugs, which are in ample numbers at +this stage of development, but there's otherwise many exciting features on the +roadmap! + +## Complete DuskCC + +In a general way, here's the list of things missing from Dusk C for it to be +consider complete: + +* union +* switch +* enum +* goto +* float +* a few little ops here and there +* the check phase (anything that is currently understood by the parser is + compiled no matter how nonsensical). +* probably countless bugs + +So, there's a fair chunk of work left, but there's also a lot that's already +done. + +## Text editor + +TODO: description + +## Memory explorer + +TODO: description + +## Begin porting UNIX apps + +I was thinking of beginning with something like [GNU diffutils][diffutils]. + +## uxn + +I was thinking of not only porting the C uxn VM, but also making uxn a first +class citizen of Dusk, with the possibility of creating adhoc uxn words. I think +it would open interesting doors. + +## Word annotations + +I'd like documentation about words to be in-system and this could be done with +an annotation system. The annotation system is already there, we would need to +populate those annotations. + +Then, it's a matter of developing a nice interactive application to navigate +words and see their associated documentation. + +## Accelerators + +It would be fun if assemblers were leveraged early in the boot process to +accelerate some core words. For example, it could override the "+" word into an +immediate that emits `eax [ebp] mov, ebp 4 i32 add, [ebp] eax add,`, or even +better, that detects if the last compiled word was a literal and replace that +literal with `[ebp] (replaced literal) i32 add,`. + +## Hardware configuration system and guide + +Right now, init scripts are a bit hackish and a structured configuration system +would help a lot in facilitating the run of Dusk on a multitude of hardware +configuration. + +## Graphical system + +Being able to push pixels to screen will eventually allow for PDF viewing and +will also allow varvara-based uxn roms to run on Dusk. + +## New architectures + +What about the Raspberry pi? + +## USB drivers + +Especially to access mass storage through it. + +[diffutils]: https://www.gnu.org/software/diffutils/