von DOSferatu » Fr 26. Aug 2011, 09:32
Ja, das ist alles richtig, das sind die Einstellungen des "DOS-Fensters" von Windows.
Wie man leicht sieht, fangen auch ab 176 die "Grafikzeichen" an, die eben bei Codepage 850 "durchsetzt" sind mit Buchstaben. Will sagen: in CP437 sind von 176 bis 219 ausschließlich Grafikzeichen (Raster, Klötze, Halbklötze und vor allem alle möglichen einfachen und doppelten Linien, auch als Ecken oder Kreuz), in CP852 sind dort NUR noch Buchstaben, diese entsprechen auch den Codes im Unicode. Der CP850 ist ein Hybrid aus CP437 und CP852, in dem einige Grafikzeichen aus CP437 erhalten wurden und die, die eine Kombination aus Doppel- und Einfachlinien bilden, sowie die beiden senkrechten Halbklötze wurden durch die Zeichen aus CP852 ersetzt. Und ja, richtig gesehen: Die Umlaute kommen doppelt vor (einmal an der Stelle, an der sie in CP437 liegen und einmal an der Stelle von CP852).
ABER:
Was Charlie wahrscheinlich will, ist ein Spiel in Textmode zu schreiben, bei dem er die Buchstaben, aber vor allem die für so etwas recht nützlichen Grafikzeichen verwendet - und CP437 (der "DOS-Zeichensatz") hat eben die meisten davon. Für das "DOS-Fenster" kann man da nichts machen, das wird immer CP850 benutzen. Aber im Vollbild geht das schon.
Erklärung: Diese Zeichensatz-Codepage-Einstellung bewirkt NUR, daß bei NEUSETZEN eines Textmodes der entspechende Zeichensatz in die Grafikkarte geladen wird. Es ist nicht verboten, danach einen ANDEREN Zeichensatz in die Grafikkarte zu laden (man kann sogar völlig eigene generieren, die NUR aus Grafikzeichen bestehen, damit könnte man ein noch cooler aussehendes Textmode-Spiel machen. Allerdings geht das nur im Vollbild-Mode. Der Fenster-Mode von Windows emuliert das alles nur, die Zeichen sind auch nicht immer 8x16 (bzw eigentlich 9x16), indem er einfach einen monospaced Zeichensatz (alle Zeichen gleiche Breite) benutzt und in einem Fenster darstellt. Hier ist es NICHT möglich, den Zeichensatz zu ändern - bzw: Es ist möglich, intern wird das dann gemacht, aber es wird eben nicht angezeigt (dran denken: Das "DOS", vor allem die Hardware, wird im Windows-Fenster nur emuliert).
Unter reinem DOS ist das alles natürlich keine Frage.
@Charlie: Wie genau hast Du Dir das vorgestellt?
Wenn Du ein Textmode-Spiel machen willst, das auch diese "Grafikzeichen" benutzt UND auch im FENSTER von Windows läuft, dann mußt Du mit den Zeichensätzen, die Windows dazu bietet, vorlieb nehmen (die alle der Codepage850 entsprechen). Wenn Du Vollbild willst, dann kannst Du auch den Zeichensatz nach eigenen Wünschen beliebig ändern, da das Vollbild direkt anzeigt, was die Grafikkarte macht.
Achja: Notebook-Grafikchips sind manchmal nicht ganz so kompatibel zu "VGA", wie man es sich wünschen würde und mitunter sehen die Textmodi auf solchen Notebooks echt besch...eiden aus...
Achja, noch eine Anmerkung: Die Zeichen 0 bis 127 (ASCII-7) haben sich zum weltweiten Standard etabliert - was bedeutet: Egal, welche Codepage, welchen Unicode oder sonstwas man verwendet: Die Zeichen 0 bis 127 sind überall die gleichen! (Was natürlich nicht bedeutet, daß man sie nicht selbst ändern darf/kann, wenn man die Zeichen im Grafikkartenspeicher softwareseitig ändert.)
Falls also Fragen, wie man den Zeichensatz ändert, kann ich gerne weiterhelfen. (Achja: Auch im Textmode ist man nicht auf diese 16 Standardfarben angewiesen - da kann man ebenfalls 16 eigene definieren - kann ich auch gern erklären...)
Anmerkung: Die Farben im "DOS-Fenster" von Windows entsprechen nicht 100% den Textmode (EGA) Farben in DOS. Der auffälligste Unterschied ist die Farbe 6, die in Windows dunkelgelb ist, in DOS aber orange/braun. aber auch die anderen Farben (mit Ausnahme von schwarz/weiß) sind leicht anders, sie haben aber denselben Farbton, nur die Helligkeiten unterscheiden sich.
Ich kenne mich mit diesem ganzen Kram sehr gut aus, habe mich jahre/jahrzehntelang mit Programmierung unter DOS und einigen Besonderheiten der Hardware (vor allem im Grafikbereich) befaßt. Für Fragen dazu wäre ich also wohl nicht die schlechteste Wahl.
Ja, das ist alles richtig, das sind die Einstellungen des "DOS-Fensters" von Windows.
Wie man leicht sieht, fangen auch ab 176 die "Grafikzeichen" an, die eben bei Codepage 850 "durchsetzt" sind mit Buchstaben. Will sagen: in CP437 sind von 176 bis 219 ausschließlich Grafikzeichen (Raster, Klötze, Halbklötze und vor allem alle möglichen einfachen und doppelten Linien, auch als Ecken oder Kreuz), in CP852 sind dort NUR noch Buchstaben, diese entsprechen auch den Codes im Unicode. Der CP850 ist ein Hybrid aus CP437 und CP852, in dem einige Grafikzeichen aus CP437 erhalten wurden und die, die eine Kombination aus Doppel- und Einfachlinien bilden, sowie die beiden senkrechten Halbklötze wurden durch die Zeichen aus CP852 ersetzt. Und ja, richtig gesehen: Die Umlaute kommen doppelt vor (einmal an der Stelle, an der sie in CP437 liegen und einmal an der Stelle von CP852).
ABER:
Was Charlie wahrscheinlich will, ist ein Spiel in Textmode zu schreiben, bei dem er die Buchstaben, aber vor allem die für so etwas recht nützlichen Grafikzeichen verwendet - und CP437 (der "DOS-Zeichensatz") hat eben die meisten davon. Für das "DOS-Fenster" kann man da nichts machen, das wird immer CP850 benutzen. Aber im Vollbild geht das schon.
Erklärung: Diese Zeichensatz-Codepage-Einstellung bewirkt NUR, daß bei NEUSETZEN eines Textmodes der entspechende Zeichensatz in die Grafikkarte geladen wird. Es ist nicht verboten, danach einen ANDEREN Zeichensatz in die Grafikkarte zu laden (man kann sogar völlig eigene generieren, die NUR aus Grafikzeichen bestehen, damit könnte man ein noch cooler aussehendes Textmode-Spiel machen. Allerdings geht das nur im Vollbild-Mode. Der Fenster-Mode von Windows emuliert das alles nur, die Zeichen sind auch nicht immer 8x16 (bzw eigentlich 9x16), indem er einfach einen monospaced Zeichensatz (alle Zeichen gleiche Breite) benutzt und in einem Fenster darstellt. Hier ist es NICHT möglich, den Zeichensatz zu ändern - bzw: Es ist möglich, intern wird das dann gemacht, aber es wird eben nicht angezeigt (dran denken: Das "DOS", vor allem die Hardware, wird im Windows-Fenster nur emuliert).
Unter reinem DOS ist das alles natürlich keine Frage.
@Charlie: Wie genau hast Du Dir das vorgestellt?
Wenn Du ein Textmode-Spiel machen willst, das auch diese "Grafikzeichen" benutzt UND auch im FENSTER von Windows läuft, dann mußt Du mit den Zeichensätzen, die Windows dazu bietet, vorlieb nehmen (die alle der Codepage850 entsprechen). Wenn Du Vollbild willst, dann kannst Du auch den Zeichensatz nach eigenen Wünschen beliebig ändern, da das Vollbild direkt anzeigt, was die Grafikkarte macht.
Achja: Notebook-Grafikchips sind manchmal nicht ganz so kompatibel zu "VGA", wie man es sich wünschen würde und mitunter sehen die Textmodi auf solchen Notebooks echt besch...eiden aus...
Achja, noch eine Anmerkung: Die Zeichen 0 bis 127 (ASCII-7) haben sich zum weltweiten Standard etabliert - was bedeutet: Egal, welche Codepage, welchen Unicode oder sonstwas man verwendet: Die Zeichen 0 bis 127 sind überall die gleichen! (Was natürlich nicht bedeutet, daß man sie nicht selbst ändern darf/kann, wenn man die Zeichen im Grafikkartenspeicher softwareseitig ändert.)
Falls also Fragen, wie man den Zeichensatz ändert, kann ich gerne weiterhelfen. (Achja: Auch im Textmode ist man nicht auf diese 16 Standardfarben angewiesen - da kann man ebenfalls 16 eigene definieren - kann ich auch gern erklären...)
Anmerkung: Die Farben im "DOS-Fenster" von Windows entsprechen nicht 100% den Textmode (EGA) Farben in DOS. Der auffälligste Unterschied ist die Farbe 6, die in Windows dunkelgelb ist, in DOS aber orange/braun. aber auch die anderen Farben (mit Ausnahme von schwarz/weiß) sind leicht anders, sie haben aber denselben Farbton, nur die Helligkeiten unterscheiden sich.
Ich kenne mich mit diesem ganzen Kram sehr gut aus, habe mich jahre/jahrzehntelang mit Programmierung unter DOS und einigen Besonderheiten der Hardware (vor allem im Grafikbereich) befaßt. Für Fragen dazu wäre ich also wohl nicht die schlechteste Wahl.