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:

Ein Real OS in Basic

 
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
Georgp24



Anmeldungsdatum: 30.06.2006
Beiträge: 81
Wohnort: Ahlen

BeitragVerfasst am: 22.09.2006, 20:59    Titel: Ein Real OS in Basic Antworten mit Zitat

Nachdem reichlich FAKE OS's in Basic geschrieben wurden, habe ich ein kleines Beispiel für ein richtiges Operating System in Powerbasic und viel Inline-Assembler programmiert.

Es braucht kein DOS oder anderes Betriebssystem und kann mit meinem Bootloader von Diskette gestartet werden.
Allerdings kann man es zum Test auch in einer Windows-Dos Box aufrufen wenn einem das Erstellen einer Boot-Diskette zu mühselig ist. Es muß dann aber eine formatierte Diskette mit den zu startenden Programmen eingelegt sein.

Es ist etwas DOS kompatibel und kann sehr einfache Programme, die in Powerbasic für DOS, Assembler, Turbo Pascal, Turbo-C and MS-C geschrieben sind starten und ausführen. Quickbasic aus unten genannten Gründen nicht.

Leider läßt sich das Beispiel nicht nach Quickbasic übertragen, da Quickbasic beim Programmstart jede Menge DOS Interrupts aufruft, die mein Bootloader nicht verarbeiten kann. Powerbasic ist da im Vergleich sehr zurückhaltend.

Hier kann man es herunterladen, am besten in den Edit-Mode gehen, alles markieren und dann kopieren:
http://www.powerbasic.com/support/forums/Forum7/HTML/002992.html

Das Beispiel werde ich nicht weiter entwickeln, da dies bis auf die "Shell" in Inline Assembler zu schreiben wäre und ich dann lieber direkt in Assembler programmiere. Außerdem habe ich andere Projekte.

Georg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 23.09.2006, 11:24    Titel: Antworten mit Zitat

OS=betriebssys=dosunabhängig

inden ersten zeilen steht: FOR DOS
sorry aba HÄ
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Georgp24



Anmeldungsdatum: 30.06.2006
Beiträge: 81
Wohnort: Ahlen

BeitragVerfasst am: 23.09.2006, 11:58    Titel: Antworten mit Zitat

Die Programmiersprache in der das Betriebssystem Beispiel geschrieben ist, ist Powerbasic for DOS.

Powerbasic for DOS Programme kommen beim Start mit sowenig DOS-Calls hin, daß ich diese in meinem Bootloader abfangen konnte. (in 510 byte Code)

Innerhalb des Basic Programms, hier also meinem Betriebssystem Beispiel, darf man dann natürlich keine Files öffnen oder andere Befehle aufrufen, die einen DOS-Call durchführen. DOS ist ja nicht da und man würde sich selbst aufrufen, was Powerbasic nicht erlaubt. Für Bildschirmausgaben und Tastatureingaben verwendet Powerbasic nur BIOS Aufrufe und so kann man hier ohne Dos-Calls auskommen.

Die Interrupt-Service Routine für die von diesem Betriebssystem Beispiel unterstützten DOS-Funktionen sind komplett in Inline Assembler geschrieben, da Powerbasic eben nicht reentrant ist. Ich hatte diesen Teil vorher auch in Basic geschrieben, mußte aber feststellen, daß dies wirklich nicht funktioniert.

Zum Laden der Programmdateien von der Floppy werden BIOS Aufrufe verwendet. Die Funktionen dafür sind in Basic geschrieben und können daher leider nicht von der Interrupt-Service Routine verwendet werden. Sie müßten dazu auf Inline Assembler umgeschrieben werden.

Georg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 24.09.2006, 10:47    Titel: Antworten mit Zitat

also ist dein bootloader mit anderen worten ein viertel msdos oder was zwinkern
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 24.09.2006, 11:32    Titel: Antworten mit Zitat

Der Interrupt 21h (0x21) ist einer der vielen freien Software-Interrupts, die ein Programm/Betriebssystem im RM belegen darf. DOS und viele andere Hobby-OS' benutzen den Interrupt 0x21 für ihre eigenen Betriebssystemfunktionen. Georgp24 sein Bootloader/OS klinkt sich in den noch freien 21er ein und setzt einige DOS-Ints um. Also eine Art DOS-Kopie, nur dass nicht alle Funktionen, sondern nur die nötigsten umgesetzt wurden.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Georgp24



Anmeldungsdatum: 30.06.2006
Beiträge: 81
Wohnort: Ahlen

BeitragVerfasst am: 24.09.2006, 12:06    Titel: Antworten mit Zitat

Ein Viertel MS-DOS in 510 byte Code zu schreiben, das schaffe ich nicht.

Der Bootloader lädt und startet das Betriebssystem von Diskette.

Außerdem hat er soviel INT21h "Unterstützung", daß er eine DOS-Version zurückliefert und das Carry-Flag auf alle anderen Calls setzt. Das reicht damit ein Powerbasic for DOS Programm weitermacht und nicht abbricht.

Mao, so ganz teile ich Deine Meinung nicht. Ich denke man sollte den Int21h nicht als frei bezeichnen, denn er ist der wichtigste Interrupt, den DOS nutzt. Wenn man diesen umlegt, kann man DOS nicht mehr verwenden. Es sei denn, man hat eine Interrupt Chain aufgebaut, die die ursprüngliche DOS Funktion aufruft nachdem die eigene Routine ausgeführt wurde. Ich würde nur die Interrupts 60h-67h als frei bezeichnen, da diese "offiziell" von Anwenderprogrammen verwendet werden dürfen. Ein Packet Driver installiert sich z.B. auf INT60h oder folgende.

Wenn man ein DOS-kompatibles Betriebssystem schreiben will, muß man natürlich den Int21h umlegen, da die Anwendungsprogramme darüber die DOS Funktionen aufrufen und man diesen ja seine kompatiblen Funktionen bereitstellen muß.

Georg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 24.09.2006, 12:22    Titel: Antworten mit Zitat

Das "frei" bezog sich auch auf "sobald noch kein Betriebssystem geladen ist". zwinkern
Nicht jedes Programm, das selbstständig bootet, bezeichnet man als Betriebssystem. Deswegen "Programm/Betriebssystem". Klar, dass man den 21er nicht während des DOS-Betriebs umlegen kann (außer, wie gesagt, mit 'ner Weiterleitung/Kopie auf einen anderen). lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Georgp24



Anmeldungsdatum: 30.06.2006
Beiträge: 81
Wohnort: Ahlen

BeitragVerfasst am: 23.05.2007, 14:58    Titel: Antworten mit Zitat

Ich möchte noch ergänzen, daß dieses OS auch Quickbasic Programme laden und ausführen kann.

Beim compilieren verwendet Quickbasic automatisch EXEPACK um die generierte EXE Datei zu komprimieren. Wenn man das Programm jedoch vorher mit der utility "unp" entpackt, kann man das Programm ausführen.

Man kann auch ein Quickbasic Programm zu Fuß mit bc und link compilieren, dann wird es nicht gepackt und kann ausgeführt werden.

Zum Test habe ich ein "Hallo Welt" Beispiel verwendet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 14.06.2007, 14:46    Titel: Antworten mit Zitat

wenn du das noch weiterentwckeln möchtest, inegriere doch einen exeunpacker in dein OS, der QB (+ andere gepackte progs) erkennt, und automatisch extrahiert....
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 14.06.2007, 19:02    Titel: Antworten mit Zitat

Es kann sein, dass ich falsch liege, aber solche gepackten EXEn haben eigentlich einen Unpacker als Stub, der den Rest des Programms in den RAM entpackt; a la UPX.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.06.2007, 19:17    Titel: Antworten mit Zitat

AFAIK ist das genau so... Ja!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Georgp24



Anmeldungsdatum: 30.06.2006
Beiträge: 81
Wohnort: Ahlen

BeitragVerfasst am: 14.06.2007, 21:48    Titel: Antworten mit Zitat

Dieses OS soll zeigen, dass und wie es möglich ist ein OS in Basic zu programmieren. Einen praktischen Einsatzbereich sehe ich momentan nicht.

Erweiterungen müssten vor allem in Inline Assembler geschrieben werden. Ich halte es daher nicht für sinnvoll die Funktionalität des OS zu erweitern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eisbaer



Anmeldungsdatum: 16.10.2004
Beiträge: 354
Wohnort: Deutschland,Bayern

BeitragVerfasst am: 15.06.2007, 11:16    Titel: OS in Basic Antworten mit Zitat

Da hast du recht, denoch ein sehr gutes Projekt, und eben doch der Beweis das ein OS in Basic möglich ist.

Ich würde sagen, das dieser Beitrag sinnvoll ist für sämtliche neu Topic's über das Programmieren eines Betriebssystems in einer Basic Sprache.

danke für das lehrreiche Programm.

Grüße Eisbaer
_________________
Eigene Webseite:
http://www.eisbaer-studios.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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