# 43/50 Zeilenmodus



## uploader (18. Februar 2005)

Hallo, 

weiß jemand, wie man in den 43/50-Zeilen Textmodus wächselt. Ich progge für DOS, kann also jeden Blödsin machen. 
Eigenlich sind die 50 Zeilen schon eingestellt, aber die unteren Zeilen sind nicht auf dem Bildschirm. Ich hab auch auf 8x8 Zecihen gestellt.

Gruß

uploader


----------



## uploader (19. Februar 2005)

Folgenden Code habe ich probiert

```
; Textmode 3h setzen
	mov	ax, 0003h
	int	10h
	; 50 Zeilen + 8x8 Zeichensatz
	mov	ax, 1123h
	mov	bl, 0
	mov	dl, 50d
	int	10h
```
Wenn ich dann mehrere Zeilen ausgebe, sind nur 25 Zeilen sichtbar, dann ist Bildschirmende. Weitere Zeilen "verschwinden" dann "unter" dem Bildschirm. Wenn noch weitere Zeilen ausgegeben werden, wird auch weiter gescrollt. Ich hab zwar nicht nachgezählt, aber ich gehe davon aus, dass die 50 Zeilen eingestellt sind.

Was mach ich falsch?


----------



## uploader (21. Februar 2005)

Ich habe in einem anderen Forum eine Lösung gefunden. Trozdem poste ich dass auch hier, falls das hier Jemand sucht.


```
;43/50 Zeilenmodi
	
	; 1. Page wählen, sicher ist sicher
	mov	ax, 0500h
	int	10h
	
	; VideoConfig auslefen (EGA Info)
	mov	ax, 1200h	; warum auch al setzen ?
	mov	bl, 10h
	xor	cx, cx		; ? wahrscheinlich Fehler im V.BIOS ?
	int	10h
	or	cx, cx		; zf bestimmen
	je	nixda		; wenn cx == 0, dann schluß
	; in bh = 0 für color, bh = 1 für mono, siehe unten (a)
	
	; 350 scanlines für nächsten Videomode == 43 Zeilen
	mov	bl, 30h
	mov	ax, 1201h	; 1202h für 400 scanlines == 50 Zeilen
	int	10h
	mov	ax, 0007h	; monoText MDA, HERC, EGA, VGA
	or	bh, bh		; zf = 0 für color, siehe oben (a)
	jne	nocolor
	mov	al, 03h		; colorText CGA, EGA, MCGA, VGA
nocolor:
	int	10h
	
	; 8x8 ROM-Zeichensatz
	mov	ax, 1112h
	mov	bl, 00h		; Block 0
	int	10h
	
	; ***** jetzt ClearScreen ******
	; Space über DOS ausgeben
	mov	dl, 20h
	mov	ah, 02h
	int	21h
	; mit BackSpace wieder zurück
	mov	ax, 0e08h
	xor	bh, bh
	int	10h
	; Zeichen an Cursorpos einlesen
	mov	ah,08h
	int	10h
	; 0 Zeilen scrollen == CLS
	mov	bh, ah		; Attribut in bx, deswegen die Ausgabe zuvor
	xor	cx, cx		; von 0,0
	mov	ax, 0600h
	mov	dx, 314fh	; bis 49,79
	int	10h
	; ***** ClearScreen ende ******
nixda:
```

Gruß
uploader


----------

