mcleod_ideafix escribió:Lástima que sólo haya 16KB en la CGA. De todas formas... ¿podría aumentarse artificialmente la resolución usando caracteres de bloque? Yo porque dibujando soy un negado, pero creo que se podría conseguir un dibujo de 80x50 usando dichos caracteres, si bien con la limitación de que dentro de un bloque de carácter sólo pueda haber dos colores.
A menos que redefinas el charset (y creo que en la CGA no se puede hacer en modo de texto), no existe un set de caracteres de bloque completos. Sólo hay mitades horizontales y mitades verticales. Se puede usar las mitades horizontales para tener 80x50 "píxels" en modo de texto de 80x25, usando dos colores por celda (convirtiendo cada celda de caracter en 2). El problema es que, aunque la "tinta" puede tomar cualquiera de los 16 colores, el "papel" sólo puede tomar los 8 primeros, ya que el bit 4 del papel indica parpadeo. En la VGA se podía cambiar este comportamiento para poder usar 16 colores en el "papel", pero desconozco si la CGA permitía hacer lo mismo.
EDITO: En efecto, la CGA permite desactivar el parpadeo:
Código: Seleccionar todo
mov ax,40H
mov es,ax
mov dx,es:[063H] ;get port address of the card
add dx,4
mov al,es:[065H] ;get current value of Mode Select Register
and al,0dfH ;mask value by 1101 1111 (to clear bit 5)
out dx,al ;disable blink
mov es:[065H],al ;save the new setting
En ese caso, sí, se podría tener un display de 80x50 en 16 colores usando el modo de texto y el caracter con ASCII 220 (o 223), y tocando solo los nibbles de los bytes de atributos.
http://es.wikipedia.org/wiki/P%C3%A1gin ... 3digos_437