Ingrese una cadena de texto y una posición PAR (no impar) entre 0-3998 para escribir el carácter ASCII correspondiente:
Cadena de Texto:
Posición de Memoria (0-3998):




Ingrese un valor de cursor entre 0 y 1999 para mover el cursor emulado en pantalla.





Modelando una VGA Estándar con HTML5 (Historia Informativa 3)

Emulando la Memoria y Desplegando Caracteres


La forma más eficiente de emular la memoria es usar DataViews, aunque esto requiere los navegadores web más modernos, como por ejemplo Google Chrome 21+ o Firefox 15+.

Para evitar sobrecargar la emulación con hilos, y para que la memoria tenga un efecto inmediato, como sucedería en realidad, usamos una función que verifica los rangos de memoria que escribe, y por cada escritura, si el rango de memoria escrita está dentro del rango del modo 80x25, y si además la posición de memoria es par (lo que significa un byte de memoria de video para el carácter, NO para el atributo), entonces escribimos el carácter de texto en la posición especificada, de forma inmediata.

Es decir, usamos una función wrapper a través de la que actualizamos la memoria y a continuación actualizamos el video emulado de acuerdo a dichos valores de memoria.

El siguiente paso es emular el efecto que tendría escribir los caracteres de atributo. Para esto necesitamos conocer qué significa cada uno de los bits del byte de atributos, necesitamos por lo menos valores de paleta de 16 colores sueltos, necesitamos releer el valor del carácter en cuestión cada vez que se escriba un byte de atributo (y leer el byte de atributo cada vez que se escriba un carácter), y necesitamos por lo menos cambiar los valores de los mapas de bits de los caracteres, para que reflejen los nuevos colores (tendremos que crear constantemente clones de los caracteres para no alterar las plantillas originales, en caso de que ambos colores, el de fondo y el del carácter, sean idénticos, lo cual destruiría el carácter al ponerlo todo del mismo color). Como se ve, este siguiente paso de emulación es más intensivo, y cada paso que agreguemos será igualmente más intensivo.