Autor Thema: Text Ausgabe unter PMode ...(umlauten)  (Gelesen 6249 mal)

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« am: 21. July 2006, 16:05 »
moin,

also unter PMode gibt mal ja so etwas auf den Bildschirm aus ...


mov 0xB8000, byte 'A'

aber wie kann man den Ü, Ä, Ö und ß ausgeben??? also die Umlauten ...
thetrue way is my way

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 21. July 2006, 17:37 »
Also, der Textmodus benutzt standardmässig ASCII. Du musst also nur in eine ASCII-Tabelle schauen welchen Wert das Zeichen hat.

Wenn du in deinem Editor Umlaute benutzt und bei der Textausgabe andere Zeichen herauskommen dann benutzt dieser einen anderen Zeichensatz.
db 0x55AA

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #2 am: 21. July 2006, 18:28 »
das dürte aber nicht passieren, weil der assembler ja alles in ASCII zeichen umwandelt, glaub ich jedenfalls

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 21. July 2006, 20:10 »
Der Assembler macht damit gar nichts, sondern nimmt es einfach so, wie es da im Code steht (und somit, wie es im Editor gespeichert wurde). Solange man sich auf ASCII (also 7 Bit) beschränkt, dürfte es sowieso keine Probleme geben, aber da sind dummerweise keine Umlaute enthalten.

Ich bin mir nicht sicher, ob standardmäßig ein Zeichensatz benutzt wird, in dem es Umlaute gibt, da müßtest du einfach mal alle Zeichen ausgeben lassen und durchschauen. Wenn ja, Glückwunsch, du mußt einfach den entsprechenden Wert nehmen.

Wenn es dort keinen Umlaut gibt, dürfte dein Problem im wesentlichen darin bestehen, der Grafikkarte Bitmaps für einen anderen Zeichensatz unterzujubeln. Wie man das genau macht, überlasse ich dann aber wieder dir, denn das weiß ich momentan selbst auch nicht.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #4 am: 21. July 2006, 20:23 »
nja, erst will ich ohne vesa etc auskommen, erst nur textmode ...
thetrue way is my way

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 21. July 2006, 20:28 »
Von VESA redet hier auch niemand. Trotzdem willst du irgendwie einen Text anzeigen. Und daher wird jedem Zeichen eine Bitmap zugeordnet, die dann angezeigt wird, wenn an der entsprechenden Stelle das Zeichen steht. Wo sollten die Buchstaben sonst herkommen?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #6 am: 21. July 2006, 20:57 »
nee, ich will es nur mit dem VideoRam die Umlauten ausgeben ...
also ab 0xB8000 ...
thetrue way is my way

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #7 am: 21. July 2006, 21:08 »
davon redet taljeth auch. Man kann den font des textmodes anpassen. Und dass macht man imho indem man nem bios interrupt ne bitmap an die Hand gibt. Imho gibts aber beim textmode auch so die umlaute, aber ich weiß auch nicht welchen code die haben. Auf jeden Fall nicht den den ein gcc/g++ den umlauten gibt, dass hab ich auch schon versucht.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 21. July 2006, 23:06 »
Deswegen habe ich als allererstes gesagt, er soll sich mal eine Tabelle ausgeben lassen, um zu schauen, ob es die Umlaute nicht doch irgendwo gibt. Mit gcc hat das übrigens herzlich wenig zu tun, der nimmt die Datei eben so, wie sie kommt. Das hängt allein vom Texteditor ab, mit dem du den Umlaut eingefügt hast.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 22. July 2006, 02:17 »
Aaaaalso:
Der erweiterte ASCII-Zeichensatz hat die Umlaute und die kann man auch im Textmode 0x3 ausgeben... Benutze einfach die folgenden Codes:


Ä 0x8E   ä 0x84
Ö 0x99   ö 0x94
Ü 0x9A   ü 0x81


In NASM sieht das dann so aus:

msg0 db "Ich bin ein String mit den Umlauten:", 0x84, 0x94, 0x81,"." 0


Das würde dann, wenn du's ausgibst, so aussehen:

Ich bin ein String mit den Umlauten äöü.


Ich hoffe das hat dir geholfen...[/code]

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 22. July 2006, 11:01 »
Die Frage ist nur ob es eine Standard Erweiterung ist, die auf allen PCs benutzt wird oder ob diese je nach Land variiert.
db 0x55AA

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 22. July 2006, 12:47 »
Hmm... das weiß ich leider nicht genau... es ist kein Standard... der Standard umfasst nur 7bit, glaube ich... allerdings wird des auf einigermaßen jedem PC laufen... denke ich... wenn dir des net sicher genug ist, und du wirklich möchtest, dass es auf JEDEM PC 100%ig läuft.. dann nimm halt Unicode XD Aber dafür kannste den Textmodus 3 dann vergessen...
Eine andere möglichkeit ist, du stellst sicher, dass die VGA 8x16 Fonts an diesen 6 Codepositionen ( 0x81, 0x84, 0x8E, 0x94, 0x99, 0x9A ) wirklich den Bitmaps für die Umlaute entsprechen... wenn nicht überschreibst du sie halt mit deinen eigenen bitmaps für die umlaute

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #12 am: 22. July 2006, 13:14 »
unicode ist gut, doch wie kann man es benutzen???
thetrue way is my way

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #13 am: 22. July 2006, 13:33 »
im textmode garnicht. Erst wenn du deine eigene gui machst und deine eigenen Fonts renderst, dann macht unicode sehr viel Sinn. Aber das ist für dich noch ein __sehr__ __sehr__ langer weg. Also find dich vorerst mal damit ab, dass du zwar die Umlaute verwenden kannst, aber evtl. nur in Europa oder deutschsprachigen Ländern.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #14 am: 22. July 2006, 13:42 »
hmm, ok ^^
thetrue way is my way

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 22. July 2006, 21:19 »
Wie ich schon sagte du könntest die Umlaute auf ALLEN rechnern benutzen, wenn du vorher die Bitmaps für die Umlaute im VGA Font überprüfst und gegebenenfalls mit deinen eigenen Bitmaps überschreibst, wenn diese net den Umlauten entsprechen.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #16 am: 24. July 2006, 10:56 »
OK, hier sollte aber noch erwähnt werden das dies nichts mit dem PM zu tun hat. Im RM ist das genau das selbe mit den ASCII-Zeichen. Ja, ich weiß das dies hier sowieso jeder weiß. Aber der Vollständigkeit her. ^^

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen