En mis tempranos días de Universidad, cuando el turbo pascal
pagaba mis cuentas, recuerdo una tarde en que programaba, mejor dicho, tiraba
unas líneas de código para una encomienda que mi hicieron, y me di cuenta que
la pantalla, mi diseño, se pintaba muy lento…. Corrían los días del fiel DOS y
sus pantallas de 80 x 25 en modo carácter. La inquietud me vino, porque tenía
instalado un programa de Norton, no recuerdo cual era, y en este último las pantallas
volaban, superponían ventanas y se pintaban en un dos por tres!!!
Yo me dije, Carambolas Blas! ¿Que ocurre aquí? Repámpanos,
que el diablo me lleve, y toda esa suerte de frases rebuscadas que usan en los
comics para no decir groserías!!! Jajajajaja. El caso es que me dije, ¿cómo es
esto posible? ¿Qué estoy haciendo mal?
Yo pintaba mis pantallas con una rutina….. si, si, era muy inocente.
Y se podía ver como se dibujaba cada línea de caracteres por el monitor, una
tras otra…. Lentoooooo….
Las de Norton aparecían casi al instante!!! QUE ENVIDIA!!!
Me puse a pensar entonces, si, a veces lo hago, y me dije que
todo esto que se ve son ceros y unos, que deben estar almacenados en algún lugar
de la memoria del computador, lo que ahora llamaré Memoria de Vídeo. Imaginé
que si podía diseñar mis pantallas y almacenarlas a disco, y luego cuando las
necesitara cargarlas a una memoria cache y, en su momento, mover todos esos
bytes directamente a la Memoria de Video, seguramente mis pantallas parecerían ser
tan rápidas como las que veía en otros sistemas comerciales.
Así que me propuse a buscar un manual de la computadora modelo IBM AT que estaba usando, una manual de
referencia del MS DOS que usaba, y ponerme a leer en busca de la información
que me indicara la dirección de memoria donde se inicia o se carga la Memoria
de Video.
Luego de mucho leer encontré lo que buscaba!!!
En tarjetas de video monocromáticas la dirección de la
Memoria de Video inicia en la posición $B000, y la dirección $B800 en tarjetas
a color en modo texto ambos casos.
Ya sólo me quedaba averiguar cuál era la instrucción para
mover bloques de memoria, hacer mi programa que diseñara y guardara las
pantallas en disco, y LISTO!!! A probar el mover esos bytes a la Memoria de
Video!!!
No tengo palabras que reflejen el júbilo cuando logre que
mis pantallas “volaran”, al poder superponer ventanas y cargar otras de manera
casi instantánea. Fue una tontería, de mediana complejidad para ese entonces,
pero marcó la diferencia en mi modo de pensar y de resolver problemas con la
maravillosa herramienta que tenemos.
Con pocos recursos se podían hacer grandes cosas.
Hoy por hoy me enojo cuando algún novato, y no tan novatos,
me dice que necesitan 16 Gb de RAM, procesadores de 8 y más núcleos, memorias SSD….
Y los sistemas siguen LENTOS y LENTOS!!!!
&”%”$”$#!#”&!/! sapos y centellas!!!
Por eso mis respetos al programador que hizo un programa de
ajedrez para la Sinclair ZX-81, con apenas 1K de memoria RAM, cpu tipo tortuga,
cinta magnética de casette como dispositivo de almacenamiento y salida a TV de
color como pantalla.
1K de memoria señores. 1K. Yo con eso no alcanzo a escribir
un Hola Mundo en C!!! jajajajajaja
Respetos y Honor a quien honor merece.
Comentarios
Publicar un comentario