Anzeige:
Ergebnis 1 bis 9 von 9

Thema: [C] print() selbstgemacht?

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.09.2002
    Beiträge
    9

    [C] print() selbstgemacht?

    Ich habe gemeinsam mit einem Freund begonnen, ein kleines Betriebssystem zu schreiben. Der Kernel sollte in C geschrieben sein, doch weil keine Libs verfügbar sind, bräuchte ich ne Funktion zur Ausgabe von Zeichen/Strings auf dem Bildschirm.

    Ich hab gelesen, dafür muss man in den Grafikspeicher schreiben.
    Davon hab ich keine Ahnung. Ich hoffe, jemand hier schon!

    Kennt jemand Tutorials, eine Funktion oder ähnliches?(muss ja nicht unbedingt das printf() aus der stdio.h sein, es reicht, wenn man einen String ausgeben kann)
    My brain is running Linux.
    Nur WineX will nicht...

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    naja, wenn du alle 2mm nachfragen musst, kommst du wohl nicht sehr weit

    MfG Peschmä

    P.S. ich weiss die Antwort auch nicht
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.07.2001
    Ort
    Wien
    Beiträge
    90
    Du kannst ja versuchen die dietlibc statisch zu linken. Ansonsten kannst du entweder die BIOS-Funktionen verwenden (Interrupt 0x10) oder eben direkt in den VGA-Speicher schreiben (Adresse weiß ich nicht)
    Diese Message wurde erstellt mit freundlicher Unterstützung eines frei-
    laufenden Pinguins aus artgerechter Freilandhaltung. Er ist garantiert
    frei von Micro$oft'schen Viren.

  4. #4
    Registrierter Benutzer
    Registriert seit
    29.09.2002
    Beiträge
    9
    @peschmae: Wenn die Adresse vom Grafikspeicher länger als 2mm ist, dann stimmt das

    @ComSubVie: Hää?! Von ner dietlibc hab ich noch nie was gehört...
    Und das mit den BIOS-Funktionen muss ich mal meinem Freund vorsetzen.

    @All: Kennt wer die Adresse?
    My brain is running Linux.
    Nur WineX will nicht...

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    Hi,
    dafür hast du ja das bios, das dir die notwendigen funktionienen bietet,
    hier ein link zu DER interupt liste:
    http://www-2.cs.cmu.edu/afs/cs/user/...WWW/files.html
    ich würde mit interrupt 21 anfangen
    und solange du nichts mit grafik machen möchtest,
    hände weg vom direkten speicher zugriff oder int 10.
    wg. dietlibc, setzt diese nicht auf linux als bs ?

    gruss
    Arthur

  6. #6
    Registrierter Benutzer
    Registriert seit
    29.09.2002
    Beiträge
    9
    Hmm...
    Aber Interrupts sind doch eher ASM, und eigentlich ging es hier um C!

    Ich werds meinem Freund trotzdem vorsetzen, der hat mehr Ahnung von ASM als ich.
    Und deinen Rat mit int 10 werde ich (höchstwahrscheinlich) befolgen, nur das mit dem dir. Speicherzugriff kann ich dir nicht versprechen!

    Dazu brauch ich aber erst Mal die Adresse vom Grafikspeicher, wo wir wieder am Anfang wären.
    ...
    Da fällt mir was ein!
    Beim GB(A)-Programmieren wusste ich wie lang/breit die Anzeigefläche/der Grafikspeicher ist. Aber hier?
    Wer ahnung hat bitte helfen!!

    An alle anderen trotzdem schon mal Danke!
    My brain is running Linux.
    Nur WineX will nicht...

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Willkommen in der Systemprogrammierung
    Lade dir die Interruptliste am Besten gleich runter, die wirst du nicht nur beim Programmieren in Assembler brauchen, sondern allgemein bei systemnaher Programmierung (unabhängig von der Sprache).
    Deine Frage nach dem Videospeicher wird dort übrigens behandelt, und zwar in MEMORY.LST im Teil C:
    --------V-MB8000000--------------------------
    MEM B800h:0000h - EGA/VGA+ TEXT BUFFER
    Size: 32768 BYTEs

  8. #8
    Registrierter Benutzer
    Registriert seit
    29.09.2002
    Beiträge
    9

    ThX!

    Ich hab die Tabelle nur flüchtig durchgeguckt, danke!
    My brain is running Linux.
    Nur WineX will nicht...

  9. #9
    Registrierter Benutzer
    Registriert seit
    25.05.2003
    Ort
    München
    Beiträge
    20
    Ich empfehle die Artikel von www.deinmeister.de

    Ist zwar hauptsächlich auf ASM fixiert. Aber wenn du ein OS schreiben willst wirst du nicht um Assembler herumkommen. Sehr empfehlenswert ist der Artikel zur Speicheradressierung im Real und Protected Mode.

    Wie schon "The Ripper" erwähnt hat. Eine Interruptliste ist unerläßtlich bei der Systemprogrammierung. Ich empfehle hierzu "Ralf Browns Interrupt List" (einfach mal bei google suchen, die ist ein Klassiker)

    Weiterhin viel Spaß
    Neulich bei Microsoft: "Hey, it compiles. Ship it..."

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •