DV3-Info
Start-Spanish
Assembler y DV3
Downloads!
Mailing-List!
Thanks to...
Links!
Ensamblador y el DV3

Capítulo 4

Matriz de juego de caracteres del DV3 :
Dando un vistazo de cerca a los caracteres impresos en la pantalla LCD, parecería que su ancho es de 5 píxeles y su altura máxima es de 7 píxeles.
Probando los experimentos descriptos en el capítulo 3, podemos probar que es imposible imprimir dos caracteres directamente uno al lado del otro. Aun si uno de los caracteres comienza a sobrescribir otro, podemos ver que siempre habrá un claro en el ultimo píxel. Ciertamente, la matriz de juego de caracteres es 7 x 9 usando las filas de píxeles externos como un marco en blanco !

Posicionamiento en línea y columna de los caracteres :
Cambiando el valor de la línea de una de las cadenas de salida a 0 (ejem. dirección 8201A0h D8 F2 46 00 -> D8 F2 00 00) implicará la impresión de la cadena en la primera línea de la pantalla (incluyendo una línea de píxeles en blanco de la matriz del juego de caracteres !). Cambiando el valor de la columna a 0 (ejem. dirección 8201A6h C9 23 -> C9 2 0) implicará la impresión de la cadena en la parte mas a la izquierda de la pantalla (con el claro de un píxel con respecto al borde real de la pantalla !). Aumentando el valor de la línea, la cadena de salida variara desde la parte posterior a la parte inferior de la pantalla.
Usando un valor máximo 98h (152 dec.) la cadena de salida se imprimirá exactamente en la parte mas inferior de la pantalla sin el claro del marco de píxeles en blanco del carácter. Esto es, porque esta fila mas baja de píxeles ya esta impresa fuera de la pantalla. Puedes incluso elevar el valor de la línea algunos píxeles mas y observaras que solo la mitad posterior de los caracteres se mantendrán visible en la pantalla !
Considerando, que el valor de la línea es esta posicionando la primera fila de arriba de un carácter, estamos descubriendo que la altura vertical (valor Y) de nuestra pantalla LCD es de 160 píxeles (152 + 1 de línea cero + 7 píxeles visibles de un carácter) !

El problema del posicionamiento de columnas :
Ahora intentaremos investigar de la misma manera el ancho (valor X) de la pantalla LCD del DV3.
Para obtener resultados útiles vamos a reducir la cuarta cadena de salida a un carácter cambiando el valor de la dirección 8200CAh desde 6Ch a 00h. Porque 00h marca el final de una cadena de salida, solo la letra "F" será ahora impresa en la pantalla. Ahora elevamos el valor de la columna del comando MOV a la dirección 8201A6h.
La estructura de este comando es de la siguiente manera :

    C9 23 -> MOV R2, 03h -> C9 = MOV; 2 = R2; 3 = 03h

Pero aquí estamos encarando un problema: Este comando (un comando de 2 bytes) solo da lugar para un digito de una figura. Lo que significa que solo podemos modificar el valor de la columna de 0 a Fh (0 a 15 dec.) ! Podemos solo seleccionar las primeras 16 posiciones de píxeles de esta forma.
Podemos fácilmente resolver este dilema con otro comando MOV, el cual fue previamente usado por el valor de la línea :

    D8 F2 46 00 -> MOV R2, 0046h -> D8 = MOV; F2 = R2; 4600 = 0046h

Este comando (un comando de 4 bytes) ofrece lugar para un digito de cuatro figuras ! Pero por consiguiente también necesitamos dos sitios de almacenaje mas que con el comando de 2 bytes. Estamos dejando ahora el marco solo modificando el código de maquina dado y escribiendo nuestra primera línea de assembler !
Sobrescribe con el editor hexa el antiguo comando MOV (C9 23) con el nuevo (D8 F2 46 00). Acto seguido encadena los siguientes comandos E2 82 E0 1E y 18 F8. Finalmente cierra tu primer programa con el código F1 FF el cual es el comando HALT.
Graba el archivo y desensámblalo nuevamente. Porque necesitábamos cuatro sitios de almacenamiento (bytes) mas para nuestras modificaciones (dos bytes para el comando MOV y dos bytes para el comando HALT) el antiguo comando SCALL en la dirección 8201AEh ha desaparecido.
No usamos mas NPLv111.bin para su propósito original pero como un recipiente para nuestro propio programa en código de maquina el cual imprime el texto a ciertas posiciones y luego finaliza !

Nota: De cualquier manera es una buena idea usar el comando HALT si quieres  repetir varios experimentos sin repetir el proceso de borrado y actualizado del  DV3. Podes economizar mucha batería y mucho tiempo de esta manera !

Ahora, elevando el valor de la columna en nuestro nuevo comando MOV, nuestra cadena de salida, la "F", se moverá del borde izquierdo al derecho de la pantalla. Usando un valor máximo de 99h (153 dec.) la “F” se imprimirá bien al borde derecho de la pantalla incluyendo el claro de un pixel.
De hecho puedes incrementar el valor a 9Ah (154 dec.) por lo que aun el claro de un pixel desaparecerá. Pero imprimir mas allá de el area definida causará un error - la cadena de salida será impresa en una posición inferior a la que fue definida por el valor de la línea !

Mediante el mismo calculo lo usamos para calcular el tamaño de píxeles verticales (valor Y) de la pantalla del DV3, podemos ahora resolver que el tamaño de píxeles horizontales (valor X) es también 160 !

    Resultados :
    1. El tamaño de la pantalla de LCD del DV3 es 160 x 160 píxeles.
    2. No usamos mas NPLv111.bin para su propósito original sino como un recipiente para transportar programas propios dentro del DV3 !

 

[DV3-Info] [Start-Deutsch] [Ergebnisse] [Start-Englisch] [Results]