domingo, 24 de enero de 2016

Mas recursos por favor!!!

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.


No hay comentarios:

Publicar un comentario