Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 22.09.2006, 19:59 Titel: Ein Real OS in Basic |
|
|
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 |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 23.09.2006, 10:24 Titel: |
|
|
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 |
|
|
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 23.09.2006, 10:58 Titel: |
|
|
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 |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 24.09.2006, 09:47 Titel: |
|
|
also ist dein bootloader mit anderen worten ein viertel msdos oder was _________________ 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 |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 24.09.2006, 10:32 Titel: |
|
|
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 |
|
|
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 24.09.2006, 11:06 Titel: |
|
|
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 |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 24.09.2006, 11:22 Titel: |
|
|
Das "frei" bezog sich auch auf "sobald noch kein Betriebssystem geladen ist".
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). _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 23.05.2007, 13:58 Titel: |
|
|
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 |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 14.06.2007, 13:46 Titel: |
|
|
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 |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 14.06.2007, 18:02 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.06.2007, 18:17 Titel: |
|
|
AFAIK ist das genau so... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Georgp24
Anmeldungsdatum: 30.06.2006 Beiträge: 81 Wohnort: Ahlen
|
Verfasst am: 14.06.2007, 20:48 Titel: |
|
|
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 |
|
|
Eisbaer
Anmeldungsdatum: 16.10.2004 Beiträge: 354 Wohnort: Deutschland,Bayern
|
Verfasst am: 15.06.2007, 10:16 Titel: OS in Basic |
|
|
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 |
|
|
|