Textmode 80x25 und 80x50
Textmode 80x25 und 80x50
Hallo zusammen
Schonwieder ein neuer thread von mir, aber ich fand bei google keine Informationen darüber.
Aber von euch weiß es sicher jemand:
Wie kann ich zwischen den Text-Modi 80x50 und 80x25 hin und her schalten?
Die programmiersprache in der das geschieht kann C oder ASM sein. Aber wahrscheinlich muss es ja ASM sein xD
ich freue mich auf Antworten,
oDOSseus
Schonwieder ein neuer thread von mir, aber ich fand bei google keine Informationen darüber.
Aber von euch weiß es sicher jemand:
Wie kann ich zwischen den Text-Modi 80x50 und 80x25 hin und her schalten?
Die programmiersprache in der das geschieht kann C oder ASM sein. Aber wahrscheinlich muss es ja ASM sein xD
ich freue mich auf Antworten,
oDOSseus
Re: Textmode 80x25 und 80x50
Dabei kann ich helfen.oDOSseus hat geschrieben:Hallo zusammen
Schonwieder ein neuer thread von mir, aber ich fand bei google keine Informationen darüber.
Aber von euch weiß es sicher jemand:
Wie kann ich zwischen den Text-Modi 80x50 und 80x25 hin und her schalten?
Die programmiersprache in der das geschieht kann C oder ASM sein. Aber wahrscheinlich muss es ja ASM sein xD
ich freue mich auf Antworten,
oDOSseus
In meinem Textbetrachter wird ggf. auch hin und her geschaltet wenn vorher 80x25 eingestellt war:
http://www.alice-dsl.net/freecracmaps/Tool/TEXT-OUT.ZIP
Siehe dazu auch meinen Beitrag: Text butterweich scrollen(Panning)
http://www.dosforum.de/viewtopic.php?f=15&t=5900
80x50
Code: Alles auswählen
30 DB xor bl, bl ; Inhalt löschen
B8 12 11 mov ax, 1112h ; 80x50
CD 10 int 10h
RBIL->inter61a.zip->INTERRUP.A
--------V-101112-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA)
AX = 1112h
BL = block to load
Return: nothing
Notes: (see AX=1110h)
SeeAlso: AX=1103h,AX=1110h,AX=1111h,AX=1114h,AH=1Bh,AX=CD10h
Code: Alles auswählen
30 DB xor bl, bl
B8 14 11 mov ax, 1114h ; 80x25
CD 10 int 10h
RBIL->inter61a.zip->INTERRUP.A
--------V-101114-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA)
AX = 1114h
BL = block to load
Return: nothing
Notes: (see AX=1110h)
http://www.pobox.com/~ralf
http://www.pobox.com/~ralf/files.html
ftp://ftp.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/
Dirk
Re: Textmode 80x25 und 80x50
vielen herzlichen Dank.
Das hat mir weiter geholfen. Und es sind so herrlich wenige Zeilen =)
Das werde ich direkt einbauen, danke
Das hat mir weiter geholfen. Und es sind so herrlich wenige Zeilen =)
Das werde ich direkt einbauen, danke
Re: Textmode 80x25 und 80x50
Gelöscht, da falsch platziert.
Zuletzt geändert von oDOSseus am Sa 14. Aug 2010, 14:37, insgesamt 1-mal geändert.
Re: Textmode 80x25 und 80x50
primaoDOSseus hat geschrieben:vielen herzlichen Dank.
Das hat mir weiter geholfen.
Wenn man die 7 Bytes z.B als "Z50.com" abspeichert ist der Name genauso lang wie das Programm.Und es sind so herrlich wenige Zeilen =)
Mir persöhnlich gefällt 80x50 besser und so schalte ich es auch nach dem Booten gleich ein.Das werde ich direkt einbauen, danke
Dirk
Re: Textmode 80x25 und 80x50
eine Frage hätte ich da noch:
Wenn ich bei 80x25 Text darstellen will, dann schreibe ich ihn immer direkt in den dafür vorgesehen Bereich im Speicher (0xB8000000). Das is ja auch nich so schwer mit 1 Byte Buchstabe und 1 Byte formatierung. Wie aber ist es bei 80x50er auflösung? Wo muss ich dahin schreiben? Diese Lösung wäre mir in C am liebsten, da ich in Assembler erst noch einiges aufarbeiten muss.
Außerdem:
hat der 80x50 modus einen besonderen Namen? dann kann ich danach vernünftig googlen. die suche nach "80x50" und einem suchwort befördert meist nur Müll zu tage.
Wenn ich bei 80x25 Text darstellen will, dann schreibe ich ihn immer direkt in den dafür vorgesehen Bereich im Speicher (0xB8000000). Das is ja auch nich so schwer mit 1 Byte Buchstabe und 1 Byte formatierung. Wie aber ist es bei 80x50er auflösung? Wo muss ich dahin schreiben? Diese Lösung wäre mir in C am liebsten, da ich in Assembler erst noch einiges aufarbeiten muss.
Außerdem:
hat der 80x50 modus einen besonderen Namen? dann kann ich danach vernünftig googlen. die suche nach "80x50" und einem suchwort befördert meist nur Müll zu tage.
Re: Textmode 80x25 und 80x50
Den Namen dafür kenne ich auch nicht.oDOSseus hat geschrieben:eine Frage hätte ich da noch:
Wenn ich bei 80x25 Text darstellen will, dann schreibe ich ihn immer direkt in den dafür vorgesehen Bereich im Speicher (0xB8000000). Das is ja auch nich so schwer mit 1 Byte Buchstabe und 1 Byte formatierung. Wie aber ist es bei 80x50er auflösung? Wo muss ich dahin schreiben? Diese Lösung wäre mir in C am liebsten, da ich in Assembler erst noch einiges aufarbeiten muss.
Außerdem:
hat der 80x50 modus einen besonderen Namen? dann kann ich danach vernünftig googlen. die suche nach "80x50" und einem suchwort befördert meist nur Müll zu tage.
Der Textbildschirm wird um 25 Zeilen größer und beim Zugriff auf die nachfolgenden 25 Zeilen wird der Zeiger wie bisher einfach nur weiter erhöht.
..
Ganz praktisch wenn man den momentanen Eingabebildschirm vor dem Starten der Anwendung so belässt wie er ist und nicht mit eigenen Textausgaben überschreibt.
So kann man seine eigene Ausgaben z.B. auf der zweiten Bildschirmseite machen und der Zustand von Seite 0 bleibt unverändert.
Wenn man zwischen verschiedenen Bildschirmseiten(Pages) hin und her umschalten möchte, muss nun der doppelte Speicherbedarf der Bildschirmseite(80x50) berücksichtigt werden,
da sich damit die Startadressen der nachfolgenden Pages geändert haben. Ich vermute die Anzahl der verfügbaren Pages insgesamt wird sich halbiert haben.
Dirk
Re: Textmode 80x25 und 80x50
Hab ich schon versucht.
Klappte erst nicht.
Aber jetzt irgendwie schon xD
seltsam seltsam
Des weiteren ist bei mir DOS dabei abgestürzt. Das sollte mir zu denken geben xD
Klappte erst nicht.
Aber jetzt irgendwie schon xD
seltsam seltsam
Des weiteren ist bei mir DOS dabei abgestürzt. Das sollte mir zu denken geben xD
Re: Textmode 80x25 und 80x50
Zum Testen könntest du dieses hier mal davor setzen, ggf. hat eine vorherige Anwendung etwas verstellt:oDOSseus hat geschrieben:Hab ich schon versucht.
Klappte erst nicht.
Aber jetzt irgendwie schon xD
seltsam seltsam
Des weiteren ist bei mir DOS dabei abgestürzt. Das sollte mir zu denken geben xD
mov ax, 3 ; Textmode(color) einschalten.
int 10h
Dirk
Re: Textmode 80x25 und 80x50
Sicher, dass du den interrupt meinst?
http://www.ctyme.com/intr/rb-0088.htm
http://www.ctyme.com/intr/rb-0088.htm
Re: Textmode 80x25 und 80x50
Den meinte ich nicht, sondern diesen hier:oDOSseus hat geschrieben:Sicher, dass du den interrupt meinst?
http://www.ctyme.com/intr/rb-0088.htm
http://www.ctyme.com/intr/rb-0069.htm
VIDEO - SET VIDEO MODE
AH = 00h
AL = desired video mode (see #00010)
03h = T 80x25 8x8 640x200 16 4 B800 CGA,PCjr,Tandy
= T 80x25 8x14 640x350 16/64 8 B800 EGA
= T 80x25 8x16 640x400 16 8 B800 MCGA
= T 80x25 9x16 720x400 16 8 B800 VGA
= T 80x43 8x8 640x350 16 4 B800 EGA,VGA [17]
= T 80x50 8x8 640x400 16 4 B800 VGA [17]
Die Register AX, BX, CX und DX kann man in Highbyte und Lowbyte unterteilen und auch jeweils seperat auf diese Bytes mit ihrem jeweiligen Registernamen zugreifen.
Das AX -Register wird unterteilt in Lowbyte(AL) und dem Highbyte(AH).
BL + BH = BX
CL + CH = CX
DL + DH = DX
Mit "mov ax, 0003" wird AH = 00 und AL = 03. (Die vorderen Nullen habe ich hier mal zum besseren Verständniss mit eingetragen.)
Vergleichsweise könnte man auch dafür "mov ah, 0" und "mov al, 3" benutzen.
Dirk
Re: Textmode 80x25 und 80x50
Oh ich habe mich verlesen
Ich las AH statt AX, wahrscheinlich weil ich es gewohnt bin das die Funktionsnummer in AH steht xD.
Mein fehler. Sah wohl ziemlich dumm aus xD.
Ich las AH statt AX, wahrscheinlich weil ich es gewohnt bin das die Funktionsnummer in AH steht xD.
Mein fehler. Sah wohl ziemlich dumm aus xD.
Re: Textmode 80x25 und 80x50
Das kann am Anfang schon mal passieren.oDOSseus hat geschrieben:Oh ich habe mich verlesen
Ich las AH statt AX, wahrscheinlich weil ich es gewohnt bin das die Funktionsnummer in AH steht xD.
Mein fehler. Sah wohl ziemlich dumm aus xD.
Dirk
Re: Textmode 80x25 und 80x50
Die Funktionsnummer steht ja auch hier in AH. Nur ist die Funktionsnummer eben 0.oDOSseus hat geschrieben:Oh ich habe mich verlesen
Ich las AH statt AX, wahrscheinlich weil ich es gewohnt bin das die Funktionsnummer in AH steht xD.
Mein fehler. Sah wohl ziemlich dumm aus xD.
In AL steht ja nicht die Funktionsnummer, sondern der Parameter (in diesem Fall die Nummer des Text-/Grafikmodus).
Re: Textmode 80x25 und 80x50
Welche Probleme können dabei Auftreten wenn man für eine DOS-Anwendung mit Inline Assembler-Befehle in ein C-Listing einbaut und gibt es Probleme bei der Ausführung von Subroutinen(Stack) und/oder Zugriffe auf einen Datenbereich,DOSferatu hat geschrieben:Die Funktionsnummer steht ja auch hier in AH. Nur ist die Funktionsnummer eben 0.oDOSseus hat geschrieben:Oh ich habe mich verlesen
Ich las AH statt AX, wahrscheinlich weil ich es gewohnt bin das die Funktionsnummer in AH steht xD.
Mein fehler. Sah wohl ziemlich dumm aus xD.
In AL steht ja nicht die Funktionsnummer, sondern der Parameter (in diesem Fall die Nummer des Text-/Grafikmodus).
welche Fehler können dabei passieren und wie stellt man das genau an?
Ein paar kurze Beispiele wären hilfreich.
Dirk