Ich habe diesen Thread erstellt, da ich "das" GUI/OS Projekt in Angriff nehmen möchte und auf eure Mithilfe angewiesen bin, d.h.
egal ob es sich um eine Rückmeldung, eine Frage, einen Kommentar, eine Idee, einen Optimierungvorschlag o.ä.. handelt, haltet euch bitte nicht zurück.
Mein momentaner Skilllevel wird wahrscheinlich nicht ausreichen, um das Projekt alleine fertigzustellen.
Ich möchte zumindest den ersten Schritt wagen und mit der Umsetzung beginnen, anstatt nur darüber zu fantasieren.
Details zur Idee/Vorstellung sind im Thread Neues OS/GUI für den C64 zu finden.
Kurzzusammenfassung:
Es soll eine GUI werden, die minimal, möglichst klein und schnell ist und schnell umgesetzt werden soll.
In der max. Stufe sollen sich mehrere Programme den Speicher teilen können (kein Multitasking!).
Es sollen für das "Basissystem" alle Dinge eingespart werden, die nicht benötigt werden.
Ich habe mir folgende Roadmap überlegt:
Version | Beschreibung |
0.1 | Ringbuffer für maus und keyboard events Testprogramm im Textmodus |
0.2 | fake-ramdisk/filesystem getDir, Load, evtl. Save, getError |
0.3 | memory manager (alloc, free, dispose, getSize ...) Entwurf für ein extrem einfaches relocatable Format (Ideen für Bibliotheksaufrufe) |
0.4 | Bisherigen Module in das relocatable Format umwandeln Funktion: loadModule (entspricht: memory manager + fake-filesystem mit relocatable verbinden) Über eine Art config.sys/autoexec.bat nachdenken |
0.5 | Grafik Treiber (Sprite und Maus-Cursor hierhin einfügen/verschieben) Anzeige im Bitmap Modus, d.h. die Testprogramme ab hier laufen im Grafikmodus |
0.6 | Hilfsfunktionen für die GUI einfache GUI-Elemente/Widgets |
0.7 | Erste einfache GUI mit einer Menübar ("Ausführen", "Verlassen" und einem Dialog) |
spätere | Ein Modul, dass die geladenen Treiber abfragen kann; eines für den Zugriff auf Speichererweiterungen Umsetzen von mehr Modulen, Widgets und Dialogen |
Ich weiss, dass das Vorhaben abenteuerlich (+ evtl. sehr naiv) klingt, da es sich um ein "größeres" Projekt handelt.
Wichtig sind für mich jedoch auch die subtilen Dinge, wie z.B.. Best-Practices, die Übersicht beibehalten, Aufteilung des Projekts, Doku, Kommentare im Quelltext etc, die von eurer Mithilfe profitieren können.
Jeder darf und soll sich einbringen, wenn er möchte.
Dieser Thread wird praxisnah bleiben + ich werde mich um eine schnelle Umsetzung bemühen.
------
Im Anhang ist die Version 0.1 mit einigen Abkürzungen, d.h. überall, wo ich zuviel Zeit verbraucht habe, um mir eine bessere Lösung zu überlegen/finden, habe ich abgebrochen;
Es ist mir wichtiger ist, das Projekt fertigzustellen, anstatt einpaar Bytes oder Cyclen einzusparen.
(Ich denke, dass man die Optimierungen ans Ende stellen kann; Primär soll das "Basissystem" funktionieren/zusammenspielen.)
Beschreibung zur aktuellen V0.1:
Auf dem Bildschirm sieht man den Ringbuffer (ist bei $0400). Verwendet habe ich die Routinen aus codebase64.
Ich muss noch die mouse.asm um unterschiediche Typen von Mausevents erweitern; ich bin an dem Vergleich zwischen mouse_buttons und mouse_obuttons "gescheitert", d.h. ich habe in der aktuellen Version dort einen Zwischenstop eingelegt.
Es gibt noch andere Stellen im Code, die ich mit Sternchen ***** markiert habe.
(...)
Dennoch, wer einwenig Zeit hat über das Projekt zu schauen, oder seine Gedanken dazu zu äußern, ist dazu eingeladen das zu machen!