Das einzige was heute beim Fachgespräch bisschen zu kurz gekommen ist war der Nerdtalk. Es war nicht viel Zeit, und ich hätte gerne mehr von meinen Projekten erzählt und erklärt. Wann sitzt dir schon mal ein Informatiker im Ruhestand gegenüber? He has seen some shit.
Und hier kann ich das auch nicht in vollem Umfang tun. Dat is einfach zu viel, zu intensiv und am Ende bin ich dann von halbe Bluesky gemutet. Mal wieder mit Nerds rumhängen und den shit shooten. Das fehlt mir sehr.
Mach doch einen Nerd-Account von Dir auf. Ich würde *sofort* reinfolgen!
DIES IST DER NERD ACCOUNT
🫠 Ich würd soooo gern mehr von Deinem OS sehen. 😭
Glaube ich dir. Also immerhin hab ich es hinbekommen schon paar Demo Videos zu machen. Falls du dieses noch nicht gesehen hast:

dot - sneak preview
dot - sneak preview

YouTube
😍 Da steht immer "returning to kernel". Wird die Kommandozeile (noch?) vom Kernel direkt gestellt oder hast Du schon so etwas wie eine Shell?
Obwohl die commandline immer noch im Kernel sitzt ist sie mittlerweile schön modular und dynamisch. Ich behalte sie auch im Kernel, aber nur mit minimalen Systemfunktionen. Extra utils dann in Form von binaries. Der Dispatcher: befehl scan /bin ansonsten interne hashmap mit befehl->fn
Und returning to kernel kommt, wenn eine binary ausgeführt wurde und entweder durch exit oder crash per trampolin zum kernel zurück kehrt. Das ist quasi der exclusive Modus, wie bei DOS.
Und falls du dir das geben willst ist hier der komplette Raytracer. Dann bekommste eine Ahnung, wie die kernel ABI aussieht.

dot OS demo app: raytracing, i...
dot OS demo app: raytracing, input, sound, and framebuffer rendering through runtime-bound surfaces.

dot OS demo app: raytracing, input, sound, and framebuffer rendering through runtime-bound surfaces. - raytracer.c

Gist
Mittlerweile ist die noch minimaler und sauberer. Ich entwickle die Apps zusammen mit der ABI. Hier mal ein aktuelles Beispiel: //kernel abi #define DOT_NEW_ABI #include <app_dot.h> // main int app(int argc, char** argv, kernel_abi_t *sys) { sys->log("Hello World!\n"); return 0; }
Jetzt will ich kernel_abi_t sehen. 🤓
Das wird dir aufgrund der Architektur nicht wirklich helfen. typedef struct kernel_abi { uint32_t abi_version; uint32_t abi_size; /* logging */ void (*log)(const char *s); /* future-proofing */ const void* (*query)(const char* name); } kernel_abi_t;
Ich ahnte das, als ich im Raytracer den Pointer auf die query function gesehen habe. 🥲 Hatte kurz vermutet, da wären alle Kernelfunktionen als Pointer drin (was freilich nicht dynamisch gewesen wäre).
Der Hinweis ist ganz oben. Dort werden die Oberflächen von APIs, die du nutzen willst, definiert. Und dann kannste selektiv in main query/bind machen. Der uniheader und die #defines fungieren damit auch schön als Metadata, zum Beispiel beim Docs generieren.
Wie machst Du I/O? Übers BIOS? 🤔
Definier mal genauer, was du mit I/O meinst. Das kann ja alles mögliche sein beim sog. Computer.
Datenaustausch mit Geräten wie Massenspeicher. Ich sehe im Prompt /mount/rom . Ist im Kernel Image ein Disk Image integriert und wird das als bisher einziges als "rom" gemountet?
Achso. Okay das ist auch ein schönes Ding. Und zwar heften Treiber Gerätefunktionen an Stabile dev interfaces. Diese steuerst du an. Bspw. blockdev, audiodev, inputdev, displaydev, netdev, serialdev, scandev, printdev, timerdev, rawdev etc. rom ist immer embedded, hd0, fd0 etc. sind dann Geräte.
Ich würd' auch gerne mal so etwas entwickeln. Aber da wären noch die ganzen anderen Projekte, die ich immer wieder mal anfasse: Prolog-artige Datenbank, gedacht für das Durchleuchten von Vernetzungen von Politik, Wirtschaft, Personen, Faschos usw.. Dann eine Programmiersprache, eine Art …
… type-safe C, nahe an der Maschine (so wie C es ja auch ist) und mit moderner Syntax. Virtuelle Maschine, würde die winzig vong Code her maken wollen, aber das artet immer so aus bei mir. 🙈 Dafür dann Compiler für meine Sprache schreiben. 🤓 Im Moment habe ich Text Displays abstrahiert und für iOS …
… eine Display View geschrieben. Dagegen gehe ich gerade und entwickle ein TUI-Framework. Will mir eine Art Terminal mit Datenbank, wie in großen Konzernen die Leute im Einkauf/der Buchhaltung das genutzt haben basteln. Soll dann auf meinem iPad mit Tastatur neben meinem Mac stehen, wenn ich …
… "No Man's Sky" spiele. Inventar erfassen und so. Ich weiß nie, wo alle meine Ressourcen und Handelsgüter gerade herumliegen. Das TUI-Ding wollte ich dann auch mit ink verbinden und ein Text Adventure darüber laufen lassen. Meine Liste ist eeeeendlos. 🥲