Windows XP en Windows 7

No hace mucho tiempo se ha hecho pública una característica enormemente interesante que va a traer el nuevo Windows 7 y, como suele pasar a veces, los betatesters somos los últimos en enterarnos.

Algunas versiones de Windows 7 traerán una copia de Windows XP3 SP3 virtualizada mediante lo que será la nueva versión de Virtual PC, que supongo usará Hyper-V ya que sólo funcionará con los micros de última generación. Bueno, realmente no la traerá, sino que uno podrá bajársela de internet como si fuera un extra del Ultimate, lo que tampoco está mal, ya que si no lo quieres pues no lo usas ni gastas espacio de disco.

Los sitios de referencia sobre esta nueva característica, que ya estará presente en la inminente RC, son varios. Paul Thurrott se hace eco de ella aquí y aquí, así como los blogs de Windows 7 y otros.

Parece ser, por las pantallas vistas, que por fin Virtual PC traerá soporte para USB, con lo que una de las bazas de vmWare se pierde, ya que ninguna versión de virtualización de Microsoft ha traído soporte para ello, y muchos de nosotros usamos vmWare sólo porque trae USB virtualizado. De hecho, en mi caso, usando máquinas virtuales corriendo XP para poder tener dispositivos legados que no funcionan ni en Vista ni en 64 bits, así como tener separados ciertos programas que no pueden coexistir juntos, Virtual PC va sensiblemente más rápido que vmWare y se integra mejor, al menos en mi equipo. Y encima ayuda a mantener el ordenador relativamente limpio sin tener que instalar programas de terceros.

La otra baza es algo similar al Unity de vmWare, ya que las aplicaciones que lancemos desde el XP virtualizado podrán correr como si fueran nativas pero, según los pantallazos que he visto, con el decorado de ventanas de XP. Esperemos que funcione algo más rápido que el Unity.

No obstante, esto que parece tan bonito supone una seria patada en la boca a vmWare, supongo que no intencionada, pero cualquiera sabe. Me explico.

Tanto los productos de virtualización de Microsoft como los de vmWare, así como la mayoría de los demás, soportan el bit VT de los nuevos (y no tan nuevos) procesadores Intel y AMD. Siendo sincero no sé exactamente en qué ayuda dicho bit (es una tarea pendiente el averiguarlo, dentro de mi larga lista de tareas pendientes), pero según los expertos sí que lo hace, y no poco.

No obstante parece ser que hay algún tema de exclusividad sobre el mismo. Es decir, que si un programa de virtualización lo usa, otro ya no podrá hacerlo. De nuevo ignoro si es una limitación física o si se trata de que los productos actuales exigen su uso exclusivo porque sí, porque ellos lo valen, o como forma de intentar quitarse de en medio a la competencia, pero lo cierto es que Hyper-V se da de patatas con vmWare y lo mismo pasa con Virtual PC y los dos anteriores.

Si uno tiene abierta una máquina virtual de un tipo, y abre otra de otro tipo, instantes después tendrá una bonita pantalla azul que, con suerte sólo será eso: pantalla azul y reinicio, pero otras muchas significará la pérdida de parte del sistema de archivos y las menos, la ruptura completa del sistema operativo. Y esto no viene de terceras partes, viene de mi experiencia directa: hace un tiempo usaba indistintamente vmWare y Virtual PC, y a veces se me olvidaba que ya tenía lanzado un sistema en uno de ellos y lanzaba otro… cosa de la que me enteraba inmediatamente.

Hace un tiempo, cuando Tella y yo éramos amigos y el sol brillaba con más fuerza, estuve investigando de forma somera la posibilidad de que vmWare tuviera alguna opción oculta como petición del citado. No sé qué miró él, que supongo sería bastante más que yo y con mayor profundidad. Yo estuve aplicando algunas técnicas sencillas de ingeniería inversa sobre vmWare.

Cuando uno busca una opción oculta o no documentada, ya venga definida como un parámetro de entrada o como opción dentro de un fichero de configuración, una forma común es la de buscar cadenas de texto dentro del ejecutable. Uno abre con editor hexadecimal el ejecutable y sus satélites asociados y se dedica a buscar cadenas de texto. También puede usar un descompilador inteligente de código fuente y mirar el resultado en ensamblador. Y también puede obtener un snapshot de memoria en diferentes etapas de ejecución por si las cadenas estaban encriptadas o codificadas de alguna forma.

Otros métodos más avanzados son poner un trap en la apertura de ficheros, o en la llamada a las posibles rutinas del sistema operativo que tengan que ver con lo que buscamos, cosa que se puede averiguar fácilmente mirando las importaciones que hace el programa y luego hacer un backtracking hasta llegar al sitio que nos interesa. Y supongo que habrá más formas, como llamar al programador que lo hizo y preguntarle…

Bueno, pues yo estuve mirando las primeras y no encontré nada, así que podemos razonablemente suponer que vmWare no contempla la posibilidad de funcionar sin usar el bit VT, y más razonablemente todavía cuando Tella tampoco encontró la forma, con lo que es muy posible que nuestro flamante Windows 7 reviente cada vez que queramos usarlo con vmWare. Y digo posible porque quizás dicho bit no venga activado de serie, o se pueda desactivar desde el propio sistema operativo o desde el Virtual PC que traiga incorporado, o que simplemente permita el uso compartido entre diferentes software de virtualización…

No obstante, lo más cierto y evidente es que vmWare tenga que implementar algo y cambiar lo necesario para no quedarse atrás.

Actualización 26/04/09

Me comenta davidrec que a partir de la versión 6.5.1 de vmWare, si tenemos alguna otra máquina virtual de otro producto abierta, vmWare avisa de ello con un error, tal y como se muestra en la captura:

image

La Historia de la Informática de RFOG (y II)

Con posterioridad a la ruptura de mi Bondwell 16, volví a dedicarme por entero al PX, pero ya no era lo mismo. Aparte de ser mucho más lento, no por la velocidad del procesador, pero sí por la de la pantalla y el del almacenamiento permanente. También coincidió con una pérdida de interés por mi parte hacia los problemas informáticos en que había estado inmerso.

Quizás me cansé, quizás me decepcioné al haberlo perdido todo, lo cierto es que no recuerdo por qué pero sufrí una especie intermedio entre todo aquello y mi siguiente ordenador, que fue un PC, lo recuerdo perfectamente, un 286 a 12 MHz con 1 Mbyte de RAM y un disco duro de 80MB con una VGA de 16 colores y 256KB de RAM de vídeo. Sí que sé que pasó bastante tiempo entre una cosa y otra, quizás los tres años del Instituto, o los dos últimos, tendré que preguntarle a mi madre a ver si se acuerda.

Supongo que en aquella época me centré en otras cosas más importantes para un adolescente lleno de granos y con la mano en el… La verdad es que mis recuerdos de aquella época están bastante confusos, y tampoco recuerdo tener novieta ni similar, lo que sí recuerdo es mi pasión por las matemáticas y la física, de hecho pasé, en el Insti, de ser el chico del notable alto a ser aquél que sistemáticamente tenía un diez en matemáticas y ser el único que aprobaba en física –jodío profe y sus jodías preguntas- y a casi suspender las demás asignaturas. Quizás sufrí ya del síndrome de la vocación, o quizás fueran los profesores, pero había asignaturas que por más que estudiara apenas podía aprobarlas. El Tuco, de ciencias, era un tío cojonudo con el que daba gusto aprender y solía aprobar con relativa buena nota, sin embargo, el Tri…, de historia, era un tío asqueroso y baboso que no hacía más que mirarle las tetas y el culo a las tías –recuerdo el día en que MC vino con una camiseta sin mangas y el cabrón la tuvo toda la clase escribiendo en la pizarra mirándoselas y seguro que masturbándose detrás de su mesa-, y suspendernos a los tíos de forma flagrante y evidente. Lástima que aquél hijoputa no me pillara unos años después…

De matemáticas recuerdo un examen para todos los cursos en el Salón de Actos en el que, por alguna razón que no logro concretar, y mira que yo era reacio a hacer esas cosas, resolví varios exámenes con diferente nota y, días después, a la hora de saber qué nos habíamos sacado, nos volvieron a reunir en el Salón de Actos y entró el Tranchete con una pila de exámenes ordenados por grupos… resultando que había una cantidad de pruebas todas con la misma nota y los mismos errores, otra cantidad con otra nota diferente y los mismos errores, y así hasta un único examen perfecto con un 10… Efectivamente, los cabrones de mis compañeros se habían estado pasando entre ellos los exámenes que yo había resuelto y prácticamente los habían copiado por grupos, según a quién le había tocado qué. Así que el profesor aprobó a todos con la nota que se habían sacado copiando y a mí, pese a tener un examen perfecto, me suspendió… El día de la recuperación entré en clase, fui a su mesa, cogí uno de cada una de las variantes (en aquella época, dada la masificación en las clases, era habitual hacer dos o tres exámenes diferentes para evitar que nos copiáramos al estar las mesas tan juntas) y los resolví en apenas unos minutos delante de él, por resolver hasta hice absolutamente todos los ejercicios, los opcionales (podíamos elegir entre unos y otros) y hasta los de nota, y le dije que si había un solo error en alguno de ellos, por nimio que fuera, que me suspendiera, pero que si no, quería una matrícula de honor. Y me fui.

En fin, otros tiempos y otra mente. Supongo que todas aquellas cosas me entretuvieron lo suficiente para que la llamada de los ordenadores no fuera tan grande como para querer uno a toda costa. Empollón lo era un carro, aunque no tenía la apariencia de uno, y pobre del que se atreviera a levantarme la voz, con setenta quilos de pura fibra y un metro setenta a los 14, algo más de peso a los 17, había veces que salían volando por las puertas…

Nunca dejé de leer, ni a Asimov ni a Verne, que fueron mis primeras lecturas. Luego Carl Sagan y otros, divulgación casi de cualquier tipo, el ya citado Investigación y Ciencia sacado de la biblioteca, que muchas veces leía casi sin entender, y otros. También literatura, mucha, clásicos, modernos, contemporáneos, realmente no recuerdo qué leía, pero seguro que mucho. Ciencia ficción toda la que podía recoger, de matemáticas y de física empecé a comprarme mis primeros libros. Así que entre unas cosas y otras la informática no formaba parte de mi vida por aquellos años, aunque a veces, cuando leía algo interesante sobre ella o sobre la parte de matemáticas que podía informatizarse, siempre me venía el engurrio del ordenador.

Finalmente lo tuve, de una forma un tanto extraña. Cuando el AT que he descrito más arriba valía unas doscientas cincuenta mil pesetas, cerca de mi casa abrieron una tienda que empezó a venderlos justo a la mitad de precio. Y no es que bajara la calidad de los equipos, no, es que venían de Colombia, vaya usted a saber por qué cuando venían de allí eran más baratos.

Muchos años después, ya cerrada incluso la tienda, lo supimos, porque con los ordenadores venían otras cosas, pero eso no afectaba a quienes los vendían, ya que el jaleo estaba entre el distribuidor y los colombianos, que tenían doble línea de negocio, por decirlo de alguna manera. Las tiendas simplemente los compraban y punto.

Aquellos precios causaron mucho revuelo en mi ciudad, y otras tiendas tuvieron que bajarse los pantalones para poder competir, recuerdo que vendíamos más de veinte ordenadores cada semana, y a veces más. De dónde terminaron de sacar las otras tiendas a los mismos precios que nosotros no lo sé, quizás empezaran a importarlos también de Colombia, o quizás alguien dejó de ganar escandalosas cantidades de dinero, lo cierto es que aquel fue el primer gran bajón en los precios de los ordenadores.

Y gracias a ello lo que en un principio era algo imposible se convirtió en algo posible y finalmente tuve mi flamante AT, tras jurar y perjurar a mis padres que ese ordenador no conocería juego alguno nunca de los jamases… que fue el tiempo que tardó de ir de la tienda a mi casa, instalarlo e ir metiendo la espuerta de disquetes vírgenes que había comprado y que no eran tan vírgenes.

Si os dais cuenta, antes he dicho hemos, y es que la compra de ese ordenador supuso que yo entrara a trabajar en la tienda como técnico. Mi primera visita fue, supongo que con mis padres, a conocer ese ordenador tan barato. No recuerdo si allí tenían alguno o no, pero sí sé que salimos convencidos de querer uno. A la semana siguiente, cuando vino mi equipo, traía un problema: la disquetera no funcionaba, así que allí, en mi presencia, todo impaciente por llevármelo a casa, la repararon, es decir, la cambiaron por otra y aquí haya paz y allí gloria.

Tuve que volver porque no tenían el Windows 3.1, sólo el 3.0, y el primero era mejor que el anterior, así que volví la semana siguiente y les compré una caja de discos que traían el Windows 3.1 grabado… visita que me sirvió para entrar a trabajar allí pocos días después.

La cosa fue sencilla, los dos socios ya lo tenían hablado, y me preguntaron si quería trabajar allí y cuánto sabía de ordenadores. Yo les conté más o menos mis rollos con los CP/M, y cuando me preguntaron si sabía reparar PCs, les dije que sí. La pregunta, que iba con trampa según mi respuesta, y yo como pardillo caí en ella, fue seguida de la de cuánta experiencia tenía, y yo, más fresco que una lechuga, respondí que la “de verte a ti la semana pasada reparar el mío”. Dicho y hecho, al lunes siguiente entré a trabajar por las mañanas.

Más o menos por aquella época hice un cursillo de programación de los largos, más de tres meses estudiando cinco horas al día, y es que en aquellos años el INEM y sus cursos eran otra cosa, así que cambié mi horario de trabajar de las mañanas a las tardes.

Si quizás existe un inicio como programador, fue allí y en ese momento. Por las mañanas estudiaba programación, por las tardes reparaba y montaba ordenadores, y durante todo el otro tiempo libre aprendía a manejar eso del MS-DOS, del Windows y poco más. Bueno, realmente MS-DOS no, sino más bien DR-DOS, versión 5, que le daba como cien mil patadas al primero en cuanto a velocidad, funcionalidad y estabilidad. El problema era Windows 3.1, que terminaba reventando bajo DR-DOS. Años después supe la causa, y ciertamente si la hubiera conocido en el momento seguro que me habría arremangado para demostrar cómo Microsoft le ponía la zancadilla a un producto mucho mejor que el suyo propio.

Las mañanas fueron todo un reto. Tras un mes de programar por lotes, haciendo una gestión de autoescuela con ficheros bat, aprendimos dBase III. Ya sé que puede resultar algo fuerte eso de programar por lotes, pero significó una familiaridad con el sistema operativo que a duras penas podíamos conseguir de otra forma. Programar con dBase fue un juego de niños, no tanto cuando nos metieron Cobol, del que salí hasta el gorro y pronto olvidé.

Y finalmente, nos enseñaron C. Y yo con esos pelos, sin saber que era el principio de mi futuro. Aprender C fue algo mágico y completamente natural para mí. Yo veía a mis compañeros que a duras penas entendían aquellos conceptos, pero en mi caso todo caía de cajón en su hueco lógico. Claro que yo sabía ensamblador, aprendido de la forma más dura y difícil, y C no es más que un ensamblador agnóstico en cuanto al procesador. Así que mi C fue un mejor ensamblador que el ensamblador, y ahora sé que eso no es bueno, porque te ata demasiado con la arquitectura hardware.

Mientras que a otros les caían los chorros de sudor con los punteros, yo los veía como algo natural y evidente por sí mismo, y cuando vimos la biblioteca de C lo primero que hice fue ver cómo estaba hecha… Listas enlazadas, estructuras de datos, algoritmos, todo aquello yo ya lo sabía, no de forma consciente, pero sí que lo había visto implementado en CP/M, y fue cuando, retrospectivamente, entendí muchas de las cosas que en su momento me llenaban de extrañeza que estuvieran hechas de esa forma y no de otra.

Lo triste es que ya no me servían para retomar mis investigaciones anteriores, aunque rápidamente comprendí que es no importaba, sino que se me abrían las puertas de un mundo infinito y maravilloso…

Y encima tenía dinero porque estaba trabajando. Pese al control de mi madre, los Nortones caían a docenas (no, no me refiero al antivirus, aquello vino mucho después, me refiero a las Guías Norton, que explicaban muchas cosas de los PC), pronto compré una guía de ensamblador del 286, luego del 386… pero lo que me gustaba era el C, así que el ensamblador se quedó para emergencias.

Una vez terminado aquel curso, en la tienda contrataron a un programador que se trajo bajo el brazo a Clipper, al que fui oficialmente presentado y que me enamoró casi tanto como el C, máxime si lo usabas sin las macros, de forma que aquello no era otra cosa que una gran y potentísima biblioteca de C construida para facilitar las cosas. De hecho, Clipper no era más que un front-end escrito en C que terminaba generando una especie de p-code que luego era interpretado en tiempo de ejecución por un motor enteramente escrito en C. Por supuesto que le metí mano para ver cómo funcionaba.

También se trajo el Turbo C++. En la academia yo había estudiado con Turbo C 2.0, el IDE que le daba cien mil patadas a cualquier cosa existente. Pues ya no os digo el C++, y más el de Borland. Aprendí con un libro que trataba sobre CFRONT 2.1 bajo Unix, que fue el único que pude encontrar. Luego vinieron otros, entre el que cabe destacar la segunda edición de El lenguaje de programación C++ de Stroustrup que tenía como un millón de erratas y estaba pésimamente traducido al español, y los manuales de los compiladores.

Porque yo compraba los compiladores, o al menos lo hice durante un tiempo, hasta que empezaron a comprármelos las empresas para las que trabajaba. Compré el Borland C++ 3.0 que venía un una espuerta de manuales, luego el Borland C++ 4, y el 5, y el C++ Builder 1, 3 y 4. También cayeron el Visual C++ 5 y el 6. Algunas fueron versiones de estudiante, otros fueron actualizaciones, pero todos fueron comprados. También cayó el Clipper 5.

Anécdotas de la tienda recuerdo una buena cantidad, pero no voy a contarlas aquí. Sí que diré que en mi tiempo libre me dedicaba a tareas de alta informática, como quitar la necesidad de tener un disquete con marca láser o una mochila en el puerto paralelo para que un programa funcionara, y recuerdo que la primera aplicación a la que le hice eso fue al Lotus 123 versión 2 y pico (creo), y tan sólo tardé unos diez minutos (fue cosa de cambiar un JE por un JNE o similar, de ese modo el programa fallaba si tenía el disco llave insertado). En fin, que eran otros tiempos y uno pensaba diferente.

Por aquellos años estaba de moda la scene y las demos, grandiosos programas que apenas ocupaban espacio y que generaban música y efectos visuales de gran belleza, pero a mí no me atraían mucho, así que con un par de amigos nos decidimos a hacer un formateador de disquetes parecido al VgaCopy de un tal Thomas Monenmayer o algo así. Nuestra idea era programar directamente el hardware, acceder a los registros de la controladora de floppies y de vídeo para hacer algo grande, y una vez lo termináramos, buscar la posibilidad de formatear discos duros con más de su capacidad preestablecida. Sobra decir que ni siquiera terminamos la primera parte, era la época en la que uno se casaba o simplemente la novia tiraba más que el ordenador.

Y yo, entre trabajo y trabajo no relacionado directamente con el desarrollo aunque a veces sí con la informática, fui realzando aplicaciones, generalmente con Clipper y algunas veces con C++, pero siempre en MS-DOS. Hubo algunas cosas grandes, como la automatización de las Incoma.

Justo cuando la línea de comandos estaba dando sus últimos estertores, yo tenía montado en Clipper un motor completamente automatizado que iba cargando y procesando unos ficheros de configuración de texto plano y actuando en consecuencia. Allí estaba todo, los menús, las pantallas, las reglas de negocio por llamarlo de alguna forma, la descripción de los informes, todo. Si me pedían algo nuevo de lo que todavía no era capaz de hacer lo integraba en el motor. Aquello estaba basado en tablas que contenían bloques de código (los famosos bloques de código de Clipper) y campos blob precompilados que se integraban con el sistema de overlays de Clipper (había un libro por aquella época que explicaba cómo hacerlo) y más cosas de las que ahora no me acuerdo. Lo cierto es que era una gran aplicación… que desgraciadamente ya no tengo como no tengo ninguna otra cosa anterior a hace relativamente pocos años. Las cosas de confiar demasiado en una unidad ZIP y sus discos. Primero se rompió la unidad y cuando pude conseguir una para leer los disquetes, eran estos los que también estaban rotos. En fin, cosas de la vida.

Para Windows 3.x no hice ningún programa de mención, aquello del Win16 era algo bastante complicado, y OWL (las MFC de Borland, para entendernos), todavía más, y cuando llegó Windows 9x tampoco, aunque sí le di caña a Win32 y aprendí a usarlo, pero solamente como hobby y sin intención de hacer nada serio, sólo por el reto intelectual que conllevaba. Bueno, no es cierto, en aquellos años yo estaba emperrado en hacer un programa de matemáticas al estilo de Mathlab o Mathematica y unir así mis dos pasiones, y de hecho implementé muchas cosas, tanto con Win32 como con OWL. El sistema de ventanas lo tenía hecho al completo en ambos sistemas, así como un par de calculadoras, pero todo aquello se perdió con la maldita unidad ZIP y después volví a perder el interés, o más bien tuve un trabajo con un sueldazo pero que exigía todas mis energías y mis horas, así que, de nuevo, la informática y el desarrollo se enfrió un poco para mí.

Luego vino C++Builder, y cuando se me hincharon las pelotas con el curro aquel y lo mandé a la mierda, volví a meterme en serio con esto de programar, y entonces vino mi oportunidad en relación a ello, que cacé al vuelo y bien fuerte por si acaso, pero esa es otra historia que no voy a contar porque incluso hay parte de ella de la que no puedo hablar porque no me pertenece. Lo que sí puedo decir es que C++Builder me ayudó sobremanera a conseguirla.

La Historia de la Informática de RFOG

Tras haber leído la entrada de Veneno en los dedos de Carlos Segura, me ha entrado el gusanillo de hacer lo mismo que él y contar cómo fueron mis inicios en esto de la programación y la informática, que en mi caso han sido la misma cosa.

Entre Asimov y Asimov, entre Julio Verne y Julio Verne, mis añoranzas de joven, muy joven, eran tener uno de esos animales mitológicos que se llamaban ordenadores, que sólo los amigos más pudientes tenían, pero el miedo de mis padres a que me aficionara en demasía a los juegos, y el poco poderío económico de la época, se daban la mano para que me fuera negado el tan ansiado deseo hasta bien entrada la pubertad.

No recuerdo si fue a los catorce o a los quince, pero seguro que no fue mucho antes. Por aquella época teníamos familia viviendo en el extranjero, en concreto una hermana de mi madre, la tía Merce y el tío Gómez, que eran esperados como agua de mayo todos los veranos cuando retornaban de su húmeda y lluviosa Holanda para reencontrarse con sus raíces…

Todos los años pasaban esos días en nuestra casa, y para nosotros –me refiero a mí y a mis tres hermanos- la llegada de mis tíos era un festival de ansiosa agonía y desesperanza para ver qué nuevas maravillas nos traían del, por aquel entonces, mucho más moderno país. Recuerdo las letras de chocolate, los bollos de pasas y otra infinidad de dulces y, por supuesto, el queso, un pedazo de queso del más curado y fuerte para mí, eso sí, siempre Gouda, amarillo y lleno de agujeros.

Conforme se iba acercando la fecha de llegada, la pregunta de cuándo viene la tía Merce se convertía en ¿falta mucho para que venga?, y finalmente, el día D, no podíamos contener nuestra impaciencia, sobre todo si la hora de llegada era tardía, muchas veces de madrugada, y siempre cargados de maletas con amoroso contrabando de chuches y otros elementos algo más peligrosos, como aparatos de radio y otras zarandajas electrónicas que aquí costaban un riñón, y eso si se podían comprar, que muchas veces ni sabíamos de ellas.

Pues bien, con los años los hijos de la tía Merce crecieron e hicieron su vida en aquel país tan alejado –yo, de pequeño, miraba hacia el cielo y le decía a mi madre mira, mamá, veo Holanda entre las nubes, ya que el país se encontraba muy, pero que muy lejos allá en el Norte-.

Decía que hicieron su vida y, más o menos por la época en que he comentado antes, uno de ellos llegó a España con algo nunca visto, al menos por mi y por mi entorno cercano: ¡un ordenador portátil no más grande que un tomo de enciclopedia! Para que nos hagamos una idea, estamos en los tiempos del Spectrum o antes.

Aquel Epson PX-8 me dejó completamente maravillado y extasiado, fue una revelación superior a cualquier cosa, un enamoramiento instantáneo, pese a no tener juegos, que este es un ordenador para negocios. Tanto, que cuando mi primo volvió a Holanda lo hizo, voluntariamente, sin él. Ignoro si salió de su propio caletre o si mis padres tuvieron algo que ver, en realidad me da igual: gracias, Juan, papá, mamá, muchas gracias. Como aquel ordenador no tenía juegos, y mi primo estaba bien considerado en la familia –al menos en la mía-, mis padres no vieron pega alguna para que aprendiera con ese equipo, o así lo supongo yo.

Si yo era manitas y me gustaba trastear, ya no os digo a mi primo, que partía con la ventaja de ser mayor que yo y haber recorrido bastante más mundo, así como de vivir en un país en el que, en aquella época, los ordenadores eran algo más habitual de lo que eran en España. Lo digo porque el mes que estuvo aquí, fueron muchas, pero muchas, las horas que pasamos juntos delante de ese ordenador.

Aparte de la microcinta, que soportaba un sistema de acceso de ficheros aleatorio –primero leía la cabecera en busca de la posición del fichero en la cinta y luego se desplazaba hasta el lugar-, disponía de una forma de particionar la RAM como sistema de ficheros y memoria de trabajo. El sistema principal de almacenamiento de programas eran dos zócalos para ROM, en las que se podían insertar de forma independiente cualquier chip. Recuerdo que tenía uno con CP/M, otro con BASIC y poco más. Dependiendo de qué insertaras, y cómo, tenías una cosa u otra, y también más o menos memoria disponible, que era tapada por lo que los chips consumían.

Una vez que mi primo volvió a su país, aquel año fue un año maravilla a causa de aquel cacharro. Aprendí BASIC con el manual que traía, y de paso aprendí más inglés que el que tristemente nos enseñaban en la escuela, demasiado básico para poder entender aquellos mamotretos de manuales completamente llenos, de principio a fin, de jerga técnica. Y aprendí otra cosa muy importante en mi vida, y es que no hay meriendas gratis y, que si quieres algo, has de sudar para conseguirlo como sudé yo intentando leer –y entender, que esa era otra- aquellos libracos, que todavía conservo con amoroso recuerdo.

Tras haberme pulido el BASIC de cabo a rabo, mis primeros programas adolecían de un grave defecto: me quedaba sin memoria demasiado pronto, por lo que muchas veces acabada más que frustrado. Por aquella época descubrí los ensambladores y el código máquina gracias a Programación del Z80 de Rodnay Zacks, y sabía por el catálogo de componentes que había una ROM con un ensamblador y otra con algo llamado Pascal que era la rehostia para programar. Desafortunadamente mi primo no pudo conseguirme ninguno de aquellos chips, ni la ampliación de memoria de 64 a 128 KB… así que decidí cortar por lo sano.

De Pascal no pude encontrar ningún libro, por lo que abandoné el tema, pero de ensamblador tenía el libro que acabo de citar, así que, ni corto ni perezoso, me puse a hacer un ensamblador en BASIC. Os podéis imaginar mi contrariedad cuando me quedé sin memoria apenas habiendo implementado una parte del mismo, máxime cuando había aprendido a programar en ese mismo momento y el lenguaje no es que fuera un dechado en cuanto a estructuración y coherencia…

Luego, o antes, la memoria me falla en esto, a partir de un artículo sobre laberintos en 3D aparecido en Investigación y Ciencia (por aquella época era Martin Gardner quien los escribía) me dio por implementar uno de ellos en mi PX-8… Ya os podéis imaginar que me quedé sin memoria mucho antes siquiera de hacer algo útil.

Por aquella época, muy frustrado yo con esas limitaciones, mi madre viajó sola una temporada a Holanda, ella sabrá por qué pero yo imagino varios motivos que no vienen al caso, y a la vuelta, lo recuerdo como si fuera hoy, en plena calle en Alicante, al lado del Puerto –que era donde paró el autobús (en aquella época viajar en avión era una fantasía sólo al alcance de la gente de dinero)-, vi cómo salía del maletero del autocar ¡no uno, sino dos ordenadores!

Mi madre –y mi primo-, muy cucos ellos, decidieron rentabilizar la inversión y se trajeron un Bondwell 16 para mí y un 14 para vender y sacar los gastos… como así fue. Lo más llamativo de aquellos ordenadores era el sintetizador de voz incorporado, cosa que a mí no me hizo ni fu ni fa, lo que me encantó de aquél ordenador era su disco duro de ¡10 megas! y su pantalla de 80×25 de fósforo amarillo. Siendo un portátil, ocupaba el tamaño de una maleta de viaje de las grandes, y pesaba todavía más, pero era un maravilloso –para mí- ordenador con, si no me acuerdo, mal, 256 KB de RAM y su fantástico disco duro de 10 megas.

Si el PX-8, ahora un poco apartado y que empezaron a usar mis dos hermanas para aprender BASIC, las recuerdo horas enteras entretenidas en hacer bucles imprimiendo tonterías en la pantalla y haciendo sonar el altavoz, que fue lo único que aprendieron y que me llevaba por la calle de la amargura que las pavas desaprovecharan una oportunidad como esa de aprender el futuro, causó en mi una impresión indeleble, ya no os digo este nuevo ordenador. Si el año o dos años anteriores fueron annos mirabili para mi, los siguientes con el Bondwell 16 todavía lo fueron más.

Los días de fiesta y las vacaciones de verano transcurrían como rayos. Un día era el último del colegio, el siguiente había que volver a él. Y entre medias, horas y horas aprendiendo inglés, leyendo los nuevos manuales que traía el Bondwell, y en cierta medida entendiendo muchas partes de los del PX que antes no había comprendido. No penséis que el ordenador retrasó mis estudios, no, de hecho quizás me hicieron estar más centrado en lo que importaba en aquella época y dejar de lado otras cosas, como las chicas y la bebida. En aquellos años yo era el chico del notable alto por la nota media que tenía, y lo seguí siendo.

Una anécdota de aquellos días, que mis padres desconocen pero que he contado alguna vez a terceros, fue mi gran fin de semana. Por aquellos días mis padres se iban al campo, es decir, a la casita de campo que teníamos que nos servía para veranear y pasar los fines de semana –la de quilómetros y quilómetros que nos habremos hecho con las bicis en aquellos años-. No recuerdo cuando empezó a atragantárseme a mi aquella casa, pero lo cierto es que ya de muy joven dejó de interesarme pasar dos aburridos días en la casa de campo, con una tele que apenas se veía bien y a todos mis primos y vecinos pululando por allí (y he de reconocer que he pasado grandes, muy grandes momentos allí).

Lo cierto es que muchos fines de semana me quedaba en casa de mis padres mientras éstos, junto a mis hermanas y mi otro hermano, se iban a pasarlo en la de campo. Posteriormente empezaron a quedarse también mis hermanas, pero nunca mi otro hermano, que terminó haciendo su vida allá. Fueron fines de semana de intensas lecturas y todavía más intensas sesiones de ordenador. De hecho, tan intensas que uno de ellos me puse con el ordenador –no recuerdo si fue con el Bondwell o con el PX, y tampoco recuerdo qué estaba haciendo- justo cuando la familia salió por la puerta de la casa y, cuando me retiré de él, me di cuenta que estaba demasiado cansado, tenía demasiada hambre, me dolía la espalda mucho más que demasiado y tenía los ojos hinchados como dos bolas… y justo cuando estaba comiendo algo llegaron mis padres. Mi primera impresión era que había habido algún problema con el coche y habían tenido que volver, o que se había puesto de repente alguien malo pero no, era el domingo por la tarde que volvían y yo había estado unas cincuenta horas sin apartarme de la pantalla.

Sé que no fue voluntario ni a propósito, sino que mi grado de concentración fue tal que no de di cuenta de nada. Supongo que me levanté varias veces a hacer mis necesidades, pero de forma inconsciente, y desde luego, una vez comprendido lo que había pasado, hice mutis por el foro (si mis padres se enteran seguro que me castigan a alejarme del ordenador por una buena temporada) y me subí arriba del todo, que era la expresión que teníamos para cuando nos íbamos a la buhardilla de la casa a estar solos y concentrados en nuestros estudios y, en este caso, supongo que a echar una siesta antes de irme a dormir de verdad, aunque realmente no recuerdo qué hice desde las cinco o las seis de la tarde hasta que me fui a la cama.

Yo no sé realmente cuándo fui programador con mayúsculas, o coder, o como queráis llamarlo, quizás todavía no lo sea, de hecho creo que no lo soy. Sí que tengo claras algunas cosas sobre mi forma de ver el desarrollo, y son cosas que nacieron en aquella época. No he ido a la universidad, y si alguna vez me ha gustado aprender sobre algo, simplemente he buscado el mejor libro que he podido encontrar sobre el tema y me lo he estudiado, y si me ha sabido a poco o me ha seguido interesando el tema, he seguido investigando y aprendiendo.

No obstante, en aquellos años, en que aplicaba esto mismo de forma inconsciente, no había los medios que hay ahora, ni mi familia los tenía. Aunque he nombrado una casa con buhardilla (realmente eran tres pisos) y una de campo, la realidad es un poco diferente, ya que la primera estaba situada en un barrio bastante deprimido económicamente (de gitanos, se decía antes, aunque mis mayores problemas viviendo allí fue con otros payos malos) y que al final se convirtió en la típica zona de traficantes de droga, almacenes de objetos robados y similares. No, no es La Tafalera, pero casi, al menos aquellos años. Ahora el barrio está bastante más limpio pero todavía queda algo, aunque he decir que jamás, jamás, hemos tenido problemas de ningún tipo excepto los típicos de cualquier vecindario (y el que sea valiente que diga que nunca le han entrado a robar, a él o a algún vecino). Eso sí, a veces hemos asistido a espectaculares redadas, a peleas a navajazo limpio y una vez hasta a tiros. La casa de campo fue comprada a medias y luego vendida a la otra parte y, junto a parte de una herencia de mis abuelos y otras zarandajas que tampoco vienen al caso, ahora mis padres tienen un pequeño terreno y una casa no tan pequeña en lo que antes era poco menos que un yermo y ahora es una zona urbanizada y bastante cara, así que no penséis en lofts ni áticos ni fincas latifundistas.

Bueno, pues como decía, los medios en aquellos años no estaban como para tirar cohetes, así que me tenía que buscar la vida. Aparte de la carencia de información per sé, ya que no creo que hubiera nada publicado, estaba el hecho de que España todavía era un país bastante atrasado tecnológicamente y lo que yo tenía en mi casa quizás no existiera en ningún otro lado de nuestra patria poco menos que recién salida del franquismo. Cuando yo hablaba de estos temas con mis amigos –y a veces con sus padres, más de uno vino a mi casa a ver el disco duro de 10 megas para determinar si sería útil en su empresa-, me descubría más sólo que la una, ya que en aquellos momentos nadie sabía de cepemes, de ensambladores ni de ordenadores con sistema operativo, no al menos en mi entorno cercano.

Si no me fallan las meninges, estamos en los años en los que un XT con una disquetera y CGA monocroma valía más de un millón de pesetas, o eso era lo que pagó el padre de un amigo cuando compró aquella bestia tecnológica importada no sabemos de dónde.

¿Cuáles eran, pues, mis recursos? Pues el diccionario VOX de inglés (bastante malo, por cierto), los manuales que acompañaban a esos dos ordenadores, y algún libro de los poquísimos que había que conseguía comprar con sufrientes ahorros y lloros varios. Así que el que suscribe se pasaba horas y horas estudiando e investigando por su cuenta.

Una de las cosas que hice fue escribir una novela, que no acabé, con el Bondwell y el WordStar, por cierto perdida –no tenía impresora- y de la que únicamente me acuerdo que trataba sobre un policía secreto en una base lunar que investigaba unas desapariciones y que se cruzaba con una Mata Hari espacial y que ocupaba unos trescientos KB en disco. El que ocupara ese tamaño tiene un enorme significado en mi vida, porque me hizo observar cómo el procesador de textos paginaba a disco lo que no podía mantener en memoria… y me abrió el cielo a mis limitaciones de memoria y al funcionamiento del Bondwell, que hasta ese momento no terminaba de comprender yo cómo podía usar 256 KB de RAM cuando tan sólo podía direccionar 64.

Lo cierto es que me puse a escribir la novela porque había llegado a un punto en el que no podía avanzar en mis investigaciones sobre el funcionamiento del ordenador por más que quisiera, debido a mi incomprensión del inglés y de los manuales y, por supuesto, de la eterna carencia de documentación. Y justo la novela me llevó, de nuevo, al buen camino, y ese fue el motivo por el que no la terminé.

En aquella época mis ocupaciones aparte de la novela estaban en entender cómo funcionaba el sistema operativo. Aprendí todos los comandos del CP/M. También le di caña al WordStar, al CalcStar y al ReportStar, aunque este último jamás llegué a entenderlo del todo, y quizás todavía no entienda sus equivalentes modernos…

Una vez que fui ducho en el manejo del sistema operativo en sí, fui a mayores. Tenía unos discos que mi primo me envió con posteridad que contenían unos paquetes para construir el sistema operativo, parecido a cómo se construye un núcleo de Linux ahora: había un programa que te hacía unas preguntas y luego trasteaba con lo que hubiera en el disquete y te construía un sistema operativo custom que luego instalabas en el ordenador. De esa manera jugué a construirme lo que yo quisiera, dentro de unos límites, claro. Pasé angustiosos momentos más de una vez cuando aquello dejaba de funcionar por completo, pero siempre conseguía recuperar el sistema.

También traía un BASIC llamado MSBASIC que era, siento decirlo, bastante más mierdoso que el del PX-8, por no decir que era bastante mierdoso porque le faltaban un montón de cosas que sí traía el otro. Si no os habéis dado cuenta, acabo de describir mi primer contacto oficial con Microsoft, que en aquella época, o al menos en el manual, venía escrito como MicroSoft. Ese fue uno de los motivos por los que volví al ensamblador. Otro fue que, pese a tener 256 KB de RAM, ese BASIC sólo me daba 48 KB y por tanto seguía teniendo los mismos problemas y limitaciones que con el PX. De hecho más, porque encima el lenguaje era mucho menos potente. Aunque años después llegué a comprender esa limitación, jamás he comprendido por qué no se implementó con bancos de memoria descargables, tal y como funcionaba el CP/M en aquella época.

Lo que más me atrajo de ese ordenador era que traía un ensamblador de serie, de hecho era un macroensamblador para el 8080 adaptado al Z80 con macros de expansión, quizás lo más moderno y avanzado en cuanto ensambladores de la época, de hecho nunca he visto un ensamblador que tuviera más características que ese si no es el Turbo Assembler para PC, otra joya de la que disfruté ampliamente años posteriores.

Si el PX tenía un Z80 a 2.45 MHz, éste tenía una versión superior a 4 MHz y cuatro veces más memoria. Junto a la posibilidad recientemente aprendida de hacer swap a disco y de poder cambiar segmentos de memoria de forma que podía ver y usar los 256 KB, aquel ordenador superó mis más amplias expectativas, y por fin estaba aprendiendo todos los entresijos de ese hardware controlado desde software, sobre todo después de estudiarme un libro sobre electrónica digital que, si bien no me abrió el mundo sí que me hizo comprender y solventar muchas de mis dudas.

Otras las resolví a base de cabezonería (y a veces cabezazos contra la pared) y de machacar una y otra vez sobre el tema, leyendo y releyendo los pocos libros que tenía –y había- sobre el tema. Aprender a salir a pantalla, el BDOS, abrir y cerrar ficheros, el sistema de ficheros del disco duro, tanto desde las rutinas de servicio del sistema operativo como directamente no fue muy difícil, aunque había puntos salvajemente oscuros y que sólo llegué a entender años después cuando estudié formalmente la arquitectura del PC.

Lo que más me frustró durante ese tiempo lo voy a explicar con cierto detalle, y seguro que más de uno ahora se sonríe por mi inocencia y desconocimiento en aquella época, pero recuerda que tenía quince años y que posiblemente aquello que yo trataba de descubrir estaba entre las cosas de la altísima informática.

Mi incomprensión de ciertas partes del sistema operativo me llevó a desensamblarlo, casi a mano, y casi por completo. Sí, lo que habéis leído: desensamblar el CP/M, de hecho quizás todavía tenga las docenas de hojas en las que, laboriosamente, escribía el código y mis comentarios. Dado que desconocía el formato en que se guardaba en disco el sistema, y que era código automodificable en muchos casos (cosa que ahora sé, en aquella época no), mis sesiones de ingeniería inversa se hacían desde la propia memoria y en tiempo de ejecución. Exactamente no recuerdo cómo me las ingeniaba, pero tomaba partes de la memoria donde sabía que se cargaba el sistema operativo e iba desensamblando poco a poco.

Para ello me hice, en ensamblador, muchos programas que me ayudaban en mi tarea, y también llevaba entre manos la creación de un desensamblador que fuera capaz de seguir y tracear un programa completo ya estuviera en disco o en memoria y reconstruir el código fuente completo para que pudiera ser ensamblado, de nuevo, con el macroensamblador que tenía.

La tarea, ahora lo sé, estaba un poco fuera de mis posibilidades, sobre todo porque mucho de ese código no sólo era automodificable, sino que en medio estaba toda la parafernalia de intercambio de bancos de memoria y aquello que jamás pude entender del todo. No obstante, mis esfuerzos eran continuos, arduos y formalmente encaminados a resolver el misterio.

Llegué a resolver el problema de los cambios de bancos de memoria de la forma más ingeniosa que cabe, sin saber que estaba reinventando, sin ser consciente de ello, no sólo el concepto de parche binario, sino el de interceptación de código y depuración. La primera tarea era la de buscar todas las llamadas al intercambio de los bancos de memoria (luego diré por qué no interceptar sólo la rutina de servicio) y sustituirlas por un salto a una dirección libre (a veces era arduo de encontrar algo así ya que no había gestión de memoria dinámica, ni yo sabía que podía existir algo así ni llegué a imaginármelo hasta que aprendí C) y allí capturar los parámetros y hacer la llamada a mano para ver qué había en aquella ventana recientemente traída.

Como comprenderéis, la tarea era titánica, más que titánica, y absorbía toda mi inteligencia y la que no tenía, pero iba avanzando poco a poco y resolviendo todos los problemas que iban surgiendo.

Pero finalmente llegué al punto en donde no pude seguir avanzando y tuve que entretenerme en otras cosa menos interesantes, como buscar pokes en BASIC y avanzar en mi hoja de cálculo hecha en ensamblador que iba a aprovechar los bancos de memoria –cosa que no hacía el CalcStar-. Desde luego en aquella época uno no conocía dónde estaba el límite, y quizás no lo hubiera tenido, si no es por un acontecimiento que relataré como colofón a este texto.

Pues bien, durante todas esas investigaciones siempre terminaba en un mismo punto muerto: había una serie de direcciones de memoria en las que si uno leía o escribía en ellas, el ordenador saltaba a otra parte desconocida por mí, y cuando podía recuperar el control del mismo (muchas veces en esa misma dirección), el ordenador ya había hecho lo que quiera que se le había ordenado… Sí, vosotros os sonreís ahora como lo hago yo, pero en aquella época eso era salvajemente frustrante para mí.

Tanto el libro de electrónica digital como el de Rodnay Zacks, quizás los dos, quizás uno solo, quizás fue otro, contenían el concepto de interrupción y el de hardware mapeado en memoria, y yo conocía ambos, pero una cosa era saberlo intelectualmente y otra muy diferente experimentarlo. Mi frustración no era el que eso existiera, no. Aquello era un ejemplo de la magia de la electrónica y la programación, lo que realmente hacía a un ordenador algo poderoso y útil: mover hierro a través de instrucciones de programa, y era una de las cosas que me entusiasmaban y me hacían no desistir bajo ningún concepto.

Por desgracia, los manuales del CP/M no documentaban nada de eso, tan sólo venía algo en el del PX, pero era diferente en el Bondwell, así que partía con casi ninguna información útil, máxime cuando en aquella época la cosa era bastante diferente. Ahora uno carga registros y virtualiza direcciones, los vectores de interrupción están en la VBR, las interrupciones se programan y sus direcciones se asignan con instrucciones de software. Es evidente que uno no puede poner las que quiera, sino las que el ingeniero que ha diseñado la electrónica ha previsto, pero al menos uno puede verlas es algún registro. Antes no, antes eso se hacía a pelo, conectando las patillas directamente con el periférico y mapeando el hardware en direcciones físicas.

Por lo tanto yo estaba completamente ciego ya que, si bien podía haber seguido las pistas de la placa, cuando éstas entraban en los chips me perdía porque no tenía documentación sobre los mismos, y cuando la pude obtener ya no me sirvió de nada porque todo aquello estaba más obsoleto que el tirachinas. Sí que quiero dejar constancia de que lo intenté no pocas veces, desarmando el ordenador y haciendo suposiciones, unas veces lógicas y otras al azar, de hecho conseguí alguna que otra vez interceptar y descubrir por dónde iban los tiros (así aprendí el formato de las particiones y el equivalente a la FAT en los discos con formato CP/M), pero en lo que realmente me interesaba, que era el intercambio de bancos de memoria, jamás llegué a descubrirlo.

Como he citado un poco más arriba, todo aquello se acabó de repente, la novela, mi hoja de cálculo hecha en ensamblador, mi desensamblador, mis investigaciones sobre el CP/M, la búsqueda de pokes y el intento de hacer funcionar programas de alguna revista y para otras arquitecturas en mi Bondwell (en el PX aquello estaba descartado, una pantalla LCD de 80 caracteres por 8 líneas da para bien poco), las dos últimas cosas generalmente en el MSBASIC ese… Todo aquello acabó en menos de 24 horas…

No, ni me casé, ni tuve un hijo sorpresa, ni se me murieron mis padres, no, lo que se me murió fue el Bondwell 16, primero el disco duro dejó de funcionar, y días después el ordenador completo, con mi novela, mi código en ensamblador y su puta madre bendita y todos los santos que lo tenían de pie, al que lo inventó y a toda su descendencia hasta la enésima generación. No creo que existan palabras para describir mi estado de ánimo en aquellos días, mi tristeza y mi impotencia más absoluta. Me recorrí toda mi ciudad y las anexas buscando alguna tienda que supieran qué era un Bondwell 16, entraba en la fábricas más grandes a preguntar si tenían uno y dónde lo enviaban a reparar… estaba absolutamente desolado.

En fin, que aquello me supuso un enorme trauma no porque se hubiera roto, sino por la ingente cantidad de horas invertidas en nada. Fue una dura lección sobre las meriendas gratis y la puta vida que nos ha tocado vivir, la insoportable obsolescencia de la tecnología y que no sólo las personas son capaces de defraudar a uno…

Al final conseguí rehacerme y un sustituto, pero esa es otra historia que contaré más adelante. Tampoco quiero que penséis que iba cabizbajo y que tuve una depresión ni nada que se le parezca, mi personalidad no es así, para bien o para mal. Lo más curioso de todo lo que he contado es que transcurrió, todo ello, en apenas un par de veranos, quizá tres, en el puente entre la EGB y el Instituto…

Esta historia continua aquí.