Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Auf Speicher 0xB8000 zugreifen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
12.03.2013, 01:35 Uhr
Hans
Library Walker
(Operator)


Hi,

nur damit wir uns richtig verstehen: mit NASM meinst du den Netwide Assembler, richtig?

Naja und Betriebssysteme und C ist ja auch nichts Neues, dafür wurde die Sprache ja schliesslich mal entworfen. Aber wenn Du schon mit FreeDOS hantierst, dann guck Dir doch da mal die Quellcodes an. Bezüglich printf nimm einen beliebigen Open Source Compiler und guck Dir da an, wie es implementiert ist, also z.B. gcc oder Open Watcom.

Aber so, wie ich die letzten Postings verstehe, geht es Dir erst mal darum, Assembler zu lernen. Das kannst Du aber auch in der Konsole unter Windows oder Linux machen. Evtl. Installierst Du OpenDOS in einer VM, also einer Virtuellen Maschiene, damit Dir da nichts vom Arbeitssystem kaputt geht. Vielleicht (kenn mich mit VMs und Emulatoren nicht aus) lässt sich die VM auch so konfigurieren, das sie nur 386er-Code ausführt, falls Dir das was nützt.

Ansonsten wünsche ich viel Erfolg bei dem Experiment.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
12.03.2013, 11:18 Uhr
~f.-th.
Gast


Willst du da wirklich selbst etwas entwickeln?

Es gibt doch mehrere Projekte, die sich mit Betriebssystem-Entwicklungen beschäftigen und noch Mitstreiter suchen.
Beispiele:
https://www.google.de/search?q=projekt+betriebssystem+entwickeln&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a

Zum Einen befürchte ich das deine bisherigen Infos bezüglich der Grafikspeicheradressen überholt sind. Da hast du bei aktuellen Projekten sicher bessere Infos dort.

Und zum Zweiten hast du ja Mitstreiter. Du kannst dich da um Teilgebiete kümmern, aber das intensiver.

FreeDOS wurde zu Beginn mit dem Turbo C 2.0 entwickelt. Später war da der Open-Watcom am Start. Vermutung, das hängt mit der Speicheraufteilung zusammen. Da bekommst du vom Open-Watcom mehr Unterstützung.

Linux und ähnliche Betriebssysteme, wozu das aktuelle MAC-OS gehört, auch da kommst du an die Quelltexte und kannst deine Ideen dort einbringen. Da kannst du dich auch mit moderneren/aktuelleren Programmiersprachen einbringen. C++ sollte da einfacher umzusetzen sein.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
21.03.2013, 16:01 Uhr
~Solomon
Gast


Hallo Leute!

Mir ist heute was aufgefallen: Es muss, wenn auch nicht 0xB8000, eine Adresse geben, da wo man eine Zeichenausgabe in der Terminal machen kann, weil es sonst den Befehl "echo" nicht geben würde. Dieser Befehl funktioniert ja auf einem Mac. Ich gebe einfach "echo hallo" ein und schon zeigt das Terminal "hallo". Deshalb meine Frage: In was für eine Adresse schreibt der Echo-Befehl das Wort "hallo" rein? Anders gefragt: Wie funktioniert diese Funktion?

Danke im Voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
21.03.2013, 17:31 Uhr
Hans
Library Walker
(Operator)


Hi,

wenn Du die Quellcodes von FreeDOS hast, dann wühl Dich doch mal da durch, bzw. nimm die Suchfunktion des BS oder ein Programm wie grep und durchsuch die Quellcodes damit nach dem echo-befehl.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
21.03.2013, 18:26 Uhr
~Solomon
Gast


FreeDOS arbeitet 100 prozentig nach 0xB8000! Bei Mac, Linux und Windows ist es anders: Wenn man auf diesen Speicher zugreifen will, dann kommt ein Segmentation fault.

Es muss eine andere Adresse oder einen anderen Weg geben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
21.03.2013, 18:41 Uhr
~Solomon
Gast


Was ich meine: FreeDOS ist praktisch wie MS-DOS, also nur Zeilenbasiert. Deshalb muss es ja praktisch auf 0xB8000 zugreifen, weil es sowieso keine andere Möglichkeit hat. Wenn beim Mac ich zugreifen könnte, würde rein theoretisch, so denke ich, oben links der Buchstabe erscheinen. Nicht in der Konsole, sondern am Monitor. Bzw. Ich denke, dass das unmöglich wäre, da die Video-Modi verschieden sind.

Ich könnte bei Linux bei den Code schauen. Aber das ist für mich erst die Notlösung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
21.03.2013, 23:08 Uhr
Hans
Library Walker
(Operator)


Hi,


Zitat von ~Solomon:
FreeDOS arbeitet 100 prozentig nach 0xB8000! Bei Mac, Linux und Windows ist es anders: Wenn man auf diesen Speicher zugreifen will, dann kommt ein Segmentation fault.

ach da steckt das Problem. Klar, das ist bei Windows, Linux und Mac völlig normal, dass ein Segmentation Fault kommt, wenn man auf die Hardware direkt zugreifen will. Das ist von den Systementwicklern so gewollt. Falls Du wissen willst, warum das so ist, dann guckst Du hier.


Zitat von ~Solomon:
Es muss eine andere Adresse oder einen anderen Weg geben.

Ja, gibt es: Da es sich um Multitaskingsysteme handelt, ist der Zugriff nur indirekt, d.h. über das Betriebssystem möglich. Alles andere würde zu chaotischem Verhalten wie unerklärliche Programmabstürze, seltsamen Daten, etc. führen, wie man bei DOS sehen kann wenn man zu viele TSRs am laufen hat, die sich dann nicht miteinander vertragen. Wenn du also unter Win/Mac/Linux auf die Hardware zugreifen willst, dann nur über Systemaufrufe. Oder Du schreibst Dir einen entsprechenden Systemtreiber... - das ist zwar leicht dahin geschrieben, aber trotzdem eine der anspruchsvolleren "Übungen", die einem begegnen können. Und letztlich läuft es für Dein Anwendungsprogramm auch darauf hinaus, dass Du die Funktionen des Treibers aufrufst.


Zitat von ~Solomon:
Wenn beim Mac ich zugreifen könnte, würde rein theoretisch, so denke ich, oben links der Buchstabe erscheinen. Nicht in der Konsole, sondern am Monitor. Bzw. Ich denke, dass das unmöglich wäre, da die Video-Modi verschieden sind.

Das hast Du schon fast richtig erfasst. Da der Mac und Windows mit grafischen Benutzerschnittstellen arbeiten ist alles, was auf dem Bildschirm dargestellt wird, Grafik. Es gibt da keine Textkonsole im klassischen Sinn mehr, die gibt's AFAIK nur noch unter Unix/Linux. (Und da auch nur, wenn du ohne GUI arbeitest.) Das Fenster, das mit einer Konsole erscheinen kann, ist ebenfalls Grafik. Der Kommandointerpreter, der da im Hintergrund werkelt, hat zwar einen Speicherbereich, in den er seine Ausgaben hinein schreibt, aber das ist auch nur ein Pufferspeicher, der bei jedem Programmstart woanders liegen kann. Die eigentliche Ausgabe erfolgt dann wiederum durch das Betriebssystem, weil das die Kontrolle über die Grafikkarte hat und bestimmt, was in deren Speicher liegt. Eine Ausnahme sind Spiele, aber darum geht es ja nicht. Selbst Grafikprogramme wie CAD-Systeme oder auch Bildverarbeitungen greifen nicht direkt auf die Grafikkarte zu, sondern auf Datenstrukturen, die das BS an die Grafikkarte weiter reicht, wodurch dann das Bild auf dem Monitor erscheint.
Hoffe, das ist jetzt einigermassen klar geworden.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 21.03.2013 um 23:13 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
22.03.2013, 12:44 Uhr
~Solomon
Gast


Danke für deine Antwort.

Tja, dann muss ich es wohl weiter auf FreeDOS probieren. Zwar habe ich bereits FreeDOS auf "Q", einer Mac-Version für "Qemu", installiert, aber hat FreeDOS einen C++ oder C Kompilier? Wenn ja, dann muss es ein anderer sein, also nicht g++ oder gcc. Wenn nein, wie installiert man, vor allem moderne, Kompilier auf FreeDOS? Ich weiß, diese Fragen sind nicht mehr Programmierspezifisch, aber es wäre sehr nett von euch, wenn ihr darauf eine Antwort hättet.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
22.03.2013, 16:00 Uhr
Tommix



Hallo,
ich fürchte die Worte "modern" und "DOS" schließen einander aus, aber sieh Dir das:
www.delorie.com/djgpp/
mal an.

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
22.03.2013, 16:40 Uhr
~Solomon
Gast


Wie installiere ich das in FreeDOS?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: