Autor Thema: Möglichkeiten des Textmodes??  (Gelesen 8285 mal)

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« am: 16. December 2006, 23:07 »
Hi
mein OS (PM) läuft im 80×50 Textmode.
Welche möglichkeiten habe ich, die Ausgaben "individueller" zu gestalten??

- Kann ich die Zeichen austauschen (im RM oder PM)?? (wenn ja, wie??)
 (andere schriftart)

- Kann ich den 8Bit Farbcode ändern (im RM oder PM)?? (wenn ja, wie??)
bsp.:
 Rot (0xC) ist nicht 0x0000FF sondern 0x0000AA

- Kann ich mehrere Schriftarten verwenden (wenn ja, wie kann ich zwischen denne im PM wechseln)

- Irgend welche anderen möglichkeiten??

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #1 am: 17. December 2006, 00:30 »
Im normalen Text Mode, wie den 80x50, den du benutzt (gehe mal vom GRUB-gesetzt aus), unterstützt nir 4 bit nibbles für vorder- und hintergrundfarben, und es gibt auch nur den standard font. Das liegt in der Einfachheit der CGA begründet, damit du nur in den speicher schreiben musst.
Es gibt allerdings die Möglichkeit, in den modus 13h zu schalten (auch durch GRUB, leiber keine Ahnung wie...). Dann hast du 320x200 pixel zur Verfügung, und 256 Farben (kannst/musst auch palette setzen). Die sache mit den fonts liegt dann bei dir, d. h. du musst die pixel so setzen dass sie einen ordentlichen text ergeben.
Der modus 12h bietet 640x480, aber nur 16 farben.
Alles was darüber hinausgeht, müsstest du mit VESA treibern machen.
Hoffe, das hilft dir ein wenig

PS: Es gibt auch noch die drawing characters im extended ASCII... damit wird meistens auch gearbeitet... auch textart is möglich, hängt aber mal von deinen fähigkeiten ab  :wink:
« Letzte Änderung: 17. December 2006, 00:32 von FalShen »

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 17. December 2006, 01:15 »
irgend wie kann man auch die bitmaps von den ascii yeichen andern
weiss leider nur grad nicht genau wie
war klaub ich irgend ein bios int der die addresse davon liefert
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #3 am: 17. December 2006, 10:00 »
PS: Es gibt auch noch die drawing characters im extended ASCII... damit wird meistens auch gearbeitet... auch textart is möglich, hängt aber mal von deinen fähigkeiten ab  :wink:

Da ich mit diesen zusätzlichen 127 Zeichen sehr viel zustande bringe, möchte ich eben nur diesen 80×50 modus nutzen. Ich habe vorher auch mal geplant in mit VESA eine Textumgebung zu simulieren, aber das würde zu sehr dazu verleiten die ein oder andrer Bitmap zu verwenden. Mein GUI soll nur aus ASCII-Codes (+extension) bestehen.
Deshalb interessiere ich mich für die Möglichkeiten.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 17. December 2006, 14:45 »
Du benutzt 80x50 ... dieser Modus ist CGA-kompatibel.
Jetzt hängt es davon ab, wieweit du diese CGA-kompatiblität halten willst (ich vermute, dass es dir egal ist).

In EGA- und VGA-Karten kannst du Fonts laden (ob's bei CGA geht, weiß ich nicht). Außerdem hast du, insbesondere bei manchen VGA-Karten, noch höhere Auflösungen als 80x50.

Schau dir mal SVGATextMode an, das programmiert dir die VGA-Register entsprechend. Dazu brauchst du aber einen Linuxkernel neuer als 1.5 (ob es mit 2.6ern noch geht, weiß ich nicht). Du kannst dir ja ein primitives Linux aufsetzen und es dort ausprobieren. Gibt es auch im Source.

Ein Link dazu noch: http://www.waltdnes.org/tips_and_tricks/textmodes.html

Gruß,
Svenska

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #5 am: 17. December 2006, 19:46 »
Kompatibilität ist mir eigentlich sch*** egal.
Hauptsache es läuft auf meinen Rechnern (nicht älter als 10 Jahre)

Mit Linux möchte ich in meinem OS eigentlich nichts zu tun haben. Da dieses sich grundlegend von Andrern bekannten systemen abheben soll, somit nicht mit "bekannten" Systemkomponenten "verschmutzt" werden soll... ;)

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 17. December 2006, 20:42 »
So meinte ich das nun auch wieder nicht.

SVGATextMode programmiert dir die VGA-Register so, wie du es gern hättest. Auch in sehr großen Auflösungen.
Außerdem ist in Busybox eine Funktion zum Laden der Consolefonts drin. Auch das spielt direkt in den Textmodus rein.

Diese Programme sollten dir vielleicht ein paar Hinweise geben, wie das funktionieren kann (es funktionieren tut) und was möglich ist.

Dich interessieren, soweit ich es verstanden habe, die Möglichkeiten zum Nachladen von Fonts im Textmodus, die eigene Erstellung von Zeichen (was in die Fonts reinspielt) und die Möglichkeit, vllt eine Auflösung jenseits von 80x50 zu verwenden. :) Da wollte ich dir ein paar Hinweise geben, wo du suchen kannst... :) :)

Gruß,
Svenska

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #7 am: 17. December 2006, 20:50 »
Ok, Danke

dann habe ich dich Falsch verstanden. Das hörte sich nach "nimm den Treiber, dann kannst du alles über diesen Treiber regeln" an.

werde mich dann mal auf die suche machen.

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #8 am: 18. December 2006, 15:14 »
Habe bisher nur code gefunden...
Gib es keine Listen, in denen die Register aufgelistet sind, und welche funktion welche bits bzw die register selber haben??

500 Zeile unkommentierter Quellcode helfen mir nicht allzuviel

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 18. December 2006, 17:10 »
Eine solche Liste ist mir nicht bekannt.
Aber die Dokumentation zu SVGATextMode ist eine interessante Lektüre :)

Es hängt aber alles außerhalb der Standardmodi von den Fähigkeiten der Grafikkarte, deren Architektur und den Möglichkeiten des Bildschirms ab. Ich vermute, dass SVGATextMode das allerletzte aus der Hardware rauskitzeln kann - auf meinem Notebook funktionieren aber nur 80x25, 80x40, 80x43 und 80x50 (wobei nur 80x40 lesbar ist).

Möglichkeiten jenseits von 80x50 sind hardwarespezifisch; eine VESA-Konsole wäre wahrscheinlich einfacher.

Gruß,
Svenska

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #10 am: 19. December 2006, 13:05 »
m...
Da klingt dan VESA doch etwas interessanter...

Mal gucken, was der VESA standard so zu beietn hat  8-)

Krox

  • Beiträge: 38
    • Profil anzeigen
    • Coding42.de
Gespeichert
« Antwort #11 am: 19. December 2006, 21:49 »
kann das von FalShen nich so stehen lassen  :-D
Grub kann nichtnur Mode 12h/13h, sondern jeden vesa Modus (über vbe) initialisieren. Nur is das in der offiziellen version noch nicht implementiert, gibt aber nen patch (den ich auch benutze). Grub gibt dir auch gleich nen Info Block mit FarbTiefe/Auflösung/BufferAdresse.
21 ist nur die halbe Wahrheit

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #12 am: 19. December 2006, 22:56 »
Ich bin aber von standard GRUB ausgegangen. Ich hab so wieso ein problem damit, mich bei allem auf GRUB zu verlassen. Da lernt man ja nichts.

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #13 am: 20. December 2006, 14:03 »
Ich benutze GRUB überhaupt nicht.
Mein OS soll eh nur von Wechseldatenträger aus gebootet wirden. Da ist ein Multibootloader sowiso überflüssig....

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #14 am: 21. December 2006, 19:32 »
Wenn interesse besteht kann ich mal ein kleines Beispielprogramm hochladen mit dem man den aktuellen Zeichensatz auslesen und als PCX oder gleich als C-Struct speichern kann. Ein Codebeispiel aus meinem OS zum setzen eines Zeichensatzes hätte ich auch noch...

PS: Hat sich zwar noch keiner gemeldet, aber ich hab trotzdem mal schnell die Sachen zusammengesucht (das Beispiel ist zwar nicht aus meinem OS, aber dafür läuft es auch unter DOS):

http://www.mmcoding.eu/projects.php#fontman
« Letzte Änderung: 21. December 2006, 20:29 von [MM] »

 

Einloggen