Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wie wäre ein gemeinsames Projekt?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Question



Anmeldungsdatum: 01.06.2005
Beiträge: 9

BeitragVerfasst am: 24.09.2005, 15:53    Titel: Wie wäre ein gemeinsames Projekt? Antworten mit Zitat

Hallo die Runde,

erklärt mich bitte nicht für verrückt, aber die Anstrengungen von Forenteilnehmern, ein Fake-OS zu basteln, ist mir nicht mehr aus dem Sinn gegangen.

Dem Anspruch eines "echten" Fake-OS gerecht zu werden, ist eine schwierige Aufgabe. Tatsächlich haben die Programme auch nur am Rande etwas Ähnlichkeit mit einem Betriebsprogramm, ich fürchte, die Enttäuschung für den Ersteller ist entsprechend hoch (besonders, wenn die Arbeit kritisiert wird).

Aber es gibt etwas, was man tatsächlich programmieren kann/könnte...

Stellt euch vor:
Ein QBasic-Programm, das sich wie eine kleine CPU verhält.

Wie könnte das aussehen?

Ein Vorschlag für das Grundgerüst:

Ein Basicprogramm, dass zwei Datenfelder öffnet, sagen wir zu jeweils 32 Kilobyte.

Im Programm muss es eine Funktion geben, dieses Datenfeld aus einer externen Datei befüllen zu lassen.
Das erste Feld stellt den "Kernel" dar.

Anschließend müsste das Programm seine Arbeit in einem Befehlsemulator beginnen.

Der Befehls-Emulator müsste demnach die Befehle eines kleinen 8-Bit-Mikroprozessors "verstehen".
Zum Beispiel den MOS6502- oder MOS6510-Befehlssatz (das ist die CPU, die auch im Commodore64 die Arbeit erledigte, die Assemblercodes sind sicher leicht im Internet zu finden).
Alternativ könnte man einen eigenen Befehlssatz erfinden.

Wenn dieser "Befehlsprozessor" steht, könnte man das "Kernel"-Datenfeld mit einem "Betriebssystem" füllen.

Das würde -- schematisch -- so aussehen:
Programm startet, läd eine 32 Kilobyte große Datei als "Kernel" in eine (Vorschlag) Stringvariable.
Der Emulator liest die dort abgelegten Bytes und interpretiert sie.
An welcher "Adresse" im Datenfeld der Emulator anfangen soll, müsste man noch festlegen, sinnvoll ist sicher, die letzten beiden Bytes als Adresse zu benutzen (32 KB lassen sich mit 2 Byte prima kodieren: &h0000 bis &h7FFF).

Vorteile des "Projektes":

  • Es lässt sich gemeinsam daran arbeiten.
  • In einer Art "Arbeitsforum" kann man diskutieren, wie die Befehle verarbeitet werden sollen, die der Interpreter "kennt".
  • Durch das Nachahmen von Maschinensprache-Befehlen lernt jeder Projektteilnehmer automatisch auch etwas Maschinensprache kennen (auch wenn es "alter" Assembler ist).
  • Die fortgeschrittenen Programmierer könnten einen "echten" Kernel (in Maschinensprache) schreiben, so dass sich der "Befehlsprozessor" wie eine echte CPU verhält.


Gegenüber einem "Fake-OS" würde ein solches Projekt auch bedeuten, dass später jeder Interessent für dieses emulierte System Programme schreiben kann...

Wenn die ersten Maschinensprache-Routinen geschrieben werden, werden sicher auch Änderungen am Interpreter nötig.
Das in Basic geschriebene Interpreterprogramm emuliert ja nur; es wird wahrscheinlich auch nur sehr langsam arbeiten.

Der Witz ist, dass man eine Art C-64 programmieren könnte, also ein Kernel, das eine Basic-Umgebung zur Verfügung stellt.

Alternativ kann der Kernel auch völlig andere Aufgaben erledigen.
Es ist -- wenn das Interpreterprogramm fertig ist -- kein Problem, nur ein paar KB der Kerneldatei mit einem "Bootloader" zu füllen und so auch eine Art DOS zu realisieren.

Es wäre ein umfangreiches Projekt, keine Frage.
Man bräuchte einen Maintainer, der die einzelnen Module überwacht, an denen programmiert wird.
Jede Arbeit, jedes Modul und jede Basic-Zeile müsste dokumentiert sein, damit auch weniger erfahrene Leute deren Sinn begreifen.
Das ganze Projekt sollte (im Forum) vom Anfang bis "Ende" beschrieben sein, damit auch jemand etwas davon hat, der das irgendwann später liest (oder jemand, der sich erst noch im Forum anmeldet).

Der C-64 hatte die Adressen &hA000 bis &hBFFF und &hE000 bis &hFFFF (sowie einen Teil des "normalen" Speichers &h0000 bis &h0400) für sein System belegt, das sind 17.406 Byte, in denen ein funktionierendes System untergebracht war.

Umgekehrt gab es für den C-64 ein Basicprogramm ("Pilot"), das in Basic geschrieben war und eine Programmiersprache emulierte...


Ich gebe auch zu, dass das Projekt einen Pferdefuß hat.
Nur der "Loader/Interpreter" ist ein Basic-Programm.
Die eigentliche Aufgabe ist es, aus den Befehlen, die der Interpreter eingepflanzt bekommt, ein Betriebssystem zu basteln.
Der Schwerpunkt liegt also in der "Maschinensprache".

Es muss zu Beginn ja nicht einmal ein komplettes Betriebssystem sein: In die "Kernel"-Datei kann man ja auch kleinere Programme schreiben, die vom Interpreter ausgeführt werden sollen.

Aber es gibt ja noch andere Aspekte:

  • Der "Loader/Interpreter" kann sowohl unter QB4.5, QuickBasic, VisualBasic und was weiß ich noch alles programmiert werden.
  • Basierend auf den Befehlen, die der Interpreter verstehen würde, werden wir ein (Basic?) Programm brauchen, das den Maschinencode erstellt (also einen Assembler)


... Genug gesponnen...

Dieser Thread kann schließlich genausogut verstauben.

Gibt es denn Forenteilnehmer, die sich für ein solches Projekt interessieren würden?
Jemand, der über einen langen Zeitraum an so einer Entwicklung teilnehmen will?
Jemand da, der Interessierten Lesern auch die einzelnen Schritte erklärt, der vielleicht Webseiten pflegt und eine FAQ anlegt?
Vielleicht jemand, der als Maintainer die Arbeit des Projekts als "oberste Instanz" betreuen mag?
Ist es überhaupt von Interesse, von einem BASIC-Projekt aus in Richtung Assembler/Maschinensprache zu schnuppern?

Vielen Dank für's lesen (ich weiß, wie lang der Text ist lächeln ).
Vielen Dank für eure Meinungen (und Ideen).

Viele Grüße

Thomas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
d.j.peters
Gast





BeitragVerfasst am: 25.09.2005, 02:44    Titel: Antworten mit Zitat

Hallo Thomas,
virtuelle CPU's oder echte emulierte CPU's exestieren schon lange.
Z.B. der Bytecode einer JAVA Runtime Engine wird so behandelt als sei es für einen virtuellen Prozessor geschrieben.
Daher wenn man nun diese VCPU emuliert läuft das dann in Handys, Palmtops, Homecomputer, PC's ...

Ist auf jeden Fall ein sehr interessante Sache und Du kannst ganze Diplomarbeiten im WEB durchforsten.

Viel glück für dieses Projekt.

Grüsse Joshy
Nach oben
Question



Anmeldungsdatum: 01.06.2005
Beiträge: 9

BeitragVerfasst am: 25.09.2005, 13:19    Titel: Antworten mit Zitat

Genau, das ist ein weiterer Vorteil...
Es ist nämlich nicht so, als wäre eine emulierte CPU etwas, was man nicht mit BASIC realisieren könnte.

Und wenn ein solches Emu-Programm das erste Mal gecoded wurde, lässt sich die nächste Emulation in Angriff nehmen, vielleicht ein 80(x)86... ? Na, ich will nicht übertreiben.
Ich denke nur, der Erfolg wäre der Umgang mit der Programmiersprache, die Überlegungen zu einer Architektur, Gedanken über ein lauffähiges System...
Womit "allen" gedient ist. Denen, die gern programmieren, denen, die gern über den Tellerrand schauen und denen, die so etwas, wie ein OS basteln wollen.

Aber wie gesagt, genausogut kann es passieren, dass dieser Thread einfach nur weiter runterrutscht

Greets
Thomas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz