SurO
SurO ist ein HobbyOS, welches durch einen Programmierwettstreit entstanden ist. Version 0.1 war noch eine in QBasic geschriebene DOS-GUI. Version 3,5b ist momentan in Flat-Assembler geschrieben, soll aber dann in Version 3,5c einen eigenen (Meta-)Assemblerdialekt benutzen.
Inhaltsverzeichnis
Screenshot
Intern geschossener Screenshot mit diversen Programmen auf verschiedenen verschobenen Hyperebenen.
Sichtbare Programme: Datum, Uhrzeit, Tetris, Mandelbrot, Editor mit ASCII-Code des Mandelbrotprogrammes.
Features
Im Moment sind die folgenden Features implementiert:
- Multitasking (+SMP)
- FAT32 Dateisystem
- Editor (Angucken und Editieren des Arbeitsspeichers oder von Dateien)
- HyperEbenenProjektionsTreiber (Sowas wie Grafikfenster für Programme)
- 1024x768x25 (8881 rgba) Grafik + süßer Fadenkreuzmauszeiger
- kleine C-Bibliothek <surlib.c> über Interrupt 35h
- Uhr- und Datumsanzeige
- Screenshots im SVM-Format (abgewandeltes PPM-Format, kann in PPM umgewandelt werden)
Ladbare Programme [Programmiersprache]
- Tetris [fasm]
- Mandelbrot [C]
- Hallo Welt [C]
Beispiel-Programm für die zugehörige C-Bibliothek
<c>
- include "surlib.h"
void main(){
sur_HE_erstelle_std(); //Grafikfenster erstellen
sur_HE_clear(0x00330011); //mit aRGB-Wert Füllen
sur_Eingabe_registriereTasten_AlifNum(); //Alphanumerische Tastatur anfordern
char cha[2]; cha[1]=0; //Nullterminiertes Zeichen
sur_HE_male_cstring("Hallo",0x4040,0x0000ffff); //schreibe "Hallo" in Türkis auf den Bildschirm
//zweiter parameter ist die Position 0x400*y+x
sur_Eingabe_warteTaste(cha); //auf einen Tastendruck warten
sur_wandle_deKey2ANSI(cha); //deutschen Tastencode in Schriftzeichen umwandeln
sur_HE_male_cstring("Welt!",0x4070,0x00ffff00); //schreibe "Welt!" in Gelb auf den Bildschirm
sur_HE_male_cstring(cha,0x8040,0x0000ff00); //Gib das Zeichen von der Tastatur in Grün aus
sur_sys_prog_ende(); //Beende das Programm
} </c> Kompiliert wird in ein Binärformat mit:
gcc sur_hello_world.c -o hello.x -m32 -nostdlib -O2 -emain -Wl,-Ttext,0 -Wl,--oformat,binary --std=gnu99
Konzepte
Sogenannte BlockDaten [BD] bestehend aus Datenblock-Ketten, diese sollen Systemweit Verwendung finden und ermöglichen Sparse-Files und das schnelle Einfügen durch Zwischenblöcke.
Filter die zwischen BD und Flachen Daten umwandeln, aber auch Filter die ein Bild rotieren etc. Filter finden vor allem Systemweit Verwendung in Treiberketten die von dem sogenannten TriebMeister [TM] (eine Art Treiberverwaltung nur weitgehender, da sie auch Userprogramme einbinden kann) aufgebaut werden sollen.
Der TriebMeister soll später vermutlich außerdem eine Kompatibilitätsschicht zur Benutzung von CDI erhalten, eventuell über einen einfachen Filter als Zwischenschicht.
ToDo
Aktuell wird daran gearbeitet das Sheduling zu optimieren und das Bearbeiten von Dateien komfortabler zu machen indem BlockDaten und die Grundfunktionen des Texteditors vi implementiert werden.
Außerdem soll ein virtuelles Dateisystem [vDS] implementiert werden, dieses soll unter anderem als Zwischenschicht zum FAT32-Treiber dienen und über zusätzliche Filter Dateiverschlüsselung bieten, aber zunächst dient es dazu dem ebenfalls zu implementierenden TriebMeister feste Zugriffsorte für interne oder ladbare Treibermodule zu geben, um so unter anderem den geplanten RTL8139-Treiber nach Erkennung durch den PCI-Treiber laden zu können.
