lunes, agosto 19, 2013

Una aventura de switches, acumuladores y contadores

Tenía unos 12 años cuando me apunté a la academia de mi barrio a aprender informática. Se llamaba Academia RUS, y tenía un dibujo hecho con spray de un robot en el que ponía algo como "Clases de Informática: Apúntate al futuro". Y mi madre me apuntó al futuro.

Allí tuve a Teo, un profesor curioso que venía todos los días a clase con un libro de lectura y nos contaba historias, no solo de informática, sino también de ciencia ficción. Entre otras cosas, en los descansos, nos contaba cosas de "IT" de Stephen King - uno de los libros que trajo muchas veces mientras se lo terminaba -, "Caballo de Troya" de J.J. Benitez y de RoboCop, una película que acabaríamos yendo a ver a su estreno en el Cine Capitol de Gran Vía y que me llevaría a conocer el universo Paul Verhoeven en todo su esplendor. Todo eso cuando yo era un niño.

Creo que mi paso por esa academia con 12 años me marcó mucho más de lo que yo iba a imaginar en mi vida. Allí comencé programando en BASIC, en ordenadores de los 80, donde había cosas como el Dragon Computer con el que tiré mis primeros programas, o equipos Sinclair, Atari, y por supuesto los famosos AMSTRAD CPC 464. Daría oro por volver atrás en el tiempo y entrar en aquella sala llena de joyas de la historia de la informática hoy en día.

Figura 1: DRAGON 32

Teo, mi profesor, me sentó, y se dedicó a explicarme los conceptos básicos de la programación iterativa donde todo se resolvía con tres estructuras básicas de control de flujo: La secuencia, la repetición y la alternativa. Todo era sencillo y divertido y bastaba con poner números de orden a las instrucciones, hacer bucles y aplicar sentencias IF-THEN-ELSE. Por supuesto, teníamos la posibilidad de romper el flujo con las instrucciones GOTO - algo que como cuentan en Microhistorias quedaría muy mal visto por los desarrolladores - y por eso nos recomendaba hacer uso de Subrutinas y utilizar GOSUB y RETURN o de las llamadas a funciones.

Figura 2: Una pequeña subrutina en BASIC para dibujar una ventana en ASCII

Con poco más, añadiendo el uso de variables y arrays de varias dimensiones, el acceso a periféricos como la pantalla, el teclado, el joystick o la impresora, jugando con los ficheros que abríamos de lectura o escritura y poco más, los programas iban saliendo poco a poco. Todo era un juego.

La pantalla del AMSTRAD era genial, porque tenía tres modos con diferente número de columnas en cada modo, y si tenías un monitor en color, podías cambiar el color del borde, el papel, y la tinta de los caracteres. Además, podías jugar con los caracteres ASCII y redefinirlos con la función SYMBOL, lo que ayudaba a hacer cosas.

Recuerdo que de todo ello, lo que más me motivaba era hacer los programas más rápidos que los de mis compañeros, y para ello había que ser muy bueno con la optimización de las instrucciones. Los switches, los acumuladores y los contadores eran mágicos, te permitían tener información de lo que ya había sucedido en el flujo del programa y de lo que quedaba por terminar, por lo que podrías saber si estabas haciendo doble trabajo con alguna instrucción o si podías saltarte un paso innecesariamente. 

Una de las cosas geniales de aquella época era que podías escribirte tus propios juegos con sencillez, y de hecho los compartíamos en papel impreso para que otro se los fotocopiara y los tecleara en su equipo. Programas de tenis, de disparos, el famoso arkanoid, etcétera, eran juegos que podías escribirte tú mismo.

Figura 3: El manual del AMSTRAD CPC 464

En la propia guía de AMSTRAD CPC venía juegos al final para que los escribieras tú, consiguiendo que miles de niños escribieran programas sin entender mucho lo que estaban haciendo, lo que les llevó irremediablemente a caer el mundo de la informática.

Yo recuerdo descubrir cómo usar las envolventes de sonido, y los cuatro cronómetros de AMSTRAD para gestionar subrutinas que tenían su propio hilo de ejecución, como la pelota del Arkanoid o un disparo en un máquina de marcianitos. Gran parte de la pasión mía viene de aquellos días, donde después gracias a las revistas aprendería que con POKE o PEEK se podía acceder a la memoria y modificar los valores de los contadores de vidas y balas de un juego manipulando los valores hexadecimales de ciertas posiciones.

Figura 4: movimento una pelota para hacer un "Arkanoid o Rebotes"

Por supuesto, no sería hasta después cuando llegué a la Universidad, que descubriría cosas como la algorítmica, las estructuras de datos, y a resolver problemas de otra forma, pero también los equipos informáticos habían cambiado mucho.

Sin embargo, todo esto volvió a mí, cuando este jueves pasado, casi sin quererlo, cayó en mis manos un emulador de AMSTRAD CPC que me permitía volver a programar como cuando tenía 12 años, y caí atrapado en él.

Figura 5: Jugando en mode 0 con para hacer un editor de mapas

Volví a leerme el manual de AMSTRAD CPC y me vi haciendo un editor de mapas de Arkanoid, y moviendo de nuevo una pelota por pantalla, jugando con los colores y tirando de LOCATE y FRAME para poner un carácter ASCII en movimiento por la pantalla en mode 0.

Ten cuidado y no te bajes ningún emulador como estos. Yo comencé al principio solo por tirar unas líneas a ver qué tal iba, pero ahora estoy totalmente enganchado. Si no tienes mucho tiempo no caigas en este viaje al pasado. Ya os pasaré el código de lo que salga cuando acabe por si queréis copiarlo };).

Saludos Malignos!

11 comentarios:

  1. Recuerdos del run" y las cintas del rastro de Madrid para el Amstrad CPC464 verde fósforo jajaj

    ResponderEliminar
  2. Seguramente se una maniobra del destino para hacerte recordar lo que te mueve y motiva. En mi caso, las máquinas eran de mis amigos, recuerdo el primer día que cambié el color del fondo de la pantalla y el tipo de letra en casa de mi amigo pedro, lo siguiente fue comenzar a leer código proveniente de revistas cuyo punto culminante fue un gran código en el reverso de un poster de la revista Quest!!!!!! para hacerte tu propia base de datos de la revista!!!!!! Impresionante!!!! Pero la vida me apartó de la informática hasta los 18 aproximadamente, momento en el que mis padres pudieron comprarme un penitun con su mágico botón turbo xDDDDDD de tercera mano, eso y aprender a programar con turbo c jejejejjeje hasta aquí he llegado, directa o indirectamente la informática en mi vida y aunque he tropezado y he vuelto a tropezar por nsima vez... aquí estoy y aquí seguiré y todo por esa mágica y enigmática visión de una pantalla en negro con ciertos caracteres en pantalla que te atraen infinitamente mas que cualquier entorno gráfico. No se a vosotros pero jamás de los jamases un entorno gráfico me enamorará tanto como una consola de comandos, es como comparar a Son Goku con el resto de superheroes... no hay color xDDDDDDD.

    Saludos.

    ResponderEliminar
  3. Que tiempos con mi cpc464 en color xD
    Recuerdo cómo si fuera ayer uno de mis primeros "hack", con apenas 11 años... mi padre al ver lo que le había hecho a la pantalla de carga de un juego me dijo "En el futuro seréis perseguidos" En ese momento no lo entendí y ni mucho menos lo creí. Lástima que al final, tuviera razón...

    Un saludo.
    Manolo.

    ResponderEliminar
  4. Waaww, ¡qué recuerdos más buenos!

    Parece que tuvimos unos inicios muy parecidos, solo que ya no me acordaba de casi nada en lo que toca a las instrucciones del Basic y esos "trucos" con peek / poke

    Gracias por devolvérnoslos a la memoria

    ResponderEliminar
  5. Eso me recuerda el famoso commodore, las cintas, el run... Aiinss.... ¡qué tiempos aquellos!

    ResponderEliminar
  6. Mis padres me compraron un Amstrad PCW8256. Fósforo verde también, pero discos de 3 pulgadas. Trasteé programando con los artículos de una enciclopedia sobre tecnología.

    Pasaba el día con eso y con el Terracom, 3D Chess y Cubik. el Locoscript, para hacer los trabajos del cole :)

    Luego estuvo mucho tiempo sin funcionar, porque cree una cuenta atrás que borrase toda la info del floppy al meter mal una password... funcionó! Hasta que conseguí otro disco de arranque...

    ResponderEliminar
  7. Cuánto bien ha hecho el open source de las revistas y qué poco se lo agradeces };-).

    Yo vivía de prestado con el spectrum de mi tío, pero no me daban mucho margen de maniobra, la verdad... menos mal que el primer PC llegó pronto.

    ResponderEliminar
  8. En gran parte de Sudamerica eran epocas de copias, teniamos un modelo de "Sinclair Spectrum 48 k" con los botones de goma pero fabricada en Brasil , se llamaba TK 90 , la sucedió la TK 95, la gran mayoria añorabamos una Spectrum 128 (al menos) tenia el casettero incorporado(eso era lo que nos llegaba en las revistas españolas , je je ) , eso de regular el tornillo del cabezal de un viejo grabador era una tarea de presición, me encantó el post , ....como siempre! , arriba Maligno ! , saludos de Uruguay

    ResponderEliminar
  9. Esto me reafirma lo que siempre digo, los que vivisteis esa época a muy temprana edad, pudisteis ir al ritmo de la tecnología, yo por ejemplo que nací en el 92 y los de mi cuarta, tenemos que ir llendo un poco más lento. Yo a los 5 años vi en casa el primer ordeandor que creo recordar y según lo que me had dicho mi padre era de 200... o 300 Mhz con un Windows95. Recuerdo a mi padre leerse "Windows para Torpes" jeje y comprando revistas de pc, las cuales yo en ese momento no entendía ya que cada vez que tocaba el ordenador, como era un lujo, mi padre se asustaba de que hiciera un estropicio. Ahora intento ponerme muy al día leyendo, prácticando. De momento, después de muchos tropezones, ando terminando un grado medio de Sistemas Microinformáticos y Redes bastante completo y con unos maestros bastante competentes.
    Con mucho animo y motivación depués encima de leer a gente como tu Chema.
    Un saludo.

    ResponderEliminar
  10. Madeja! Lo importante son las ganas que le pones!!!! Cierto es que el virus que infectaba en aquella época era diferente al que te puede picar hoy en día o a la que tu haces mención, pero tarde o temprano te encuentras con el y... estás perdido xDDDD

    ResponderEliminar
  11. ¡que recuerdos! Juego SATAN de dinamic, ilustraciones de Luis Royo.
    Y no había manera de pasar a la segunda parte sin haber terminado la primera (el segundo disco te pedía una contraseña para jugar esa parte y así demostrar que habías pasado la anterior)y por otro lado descubrí Discology un software para copiar juegos, que copiaba hasta la protección, y que incluía la opción explore y edit, vamos algo así como un editor hexadecimal y decidí probar.
    cargue el disco uno, creo que no habia opciones como buscador de cadenas de texto, mi única herramienta ante tantos datos ser un crio tener ilusión y todo el tiempo del mundo para contemplar fascinado todo el programa compilado a ver si sonaba la flauta... y ya lo creo que sonó
    Al final pude leer textualmente la clave es 01020304, aun la recuerdo, y de la emoción de haberla conseguido por un medio, no oficial.

    Que tiempos!
    Seguro que dio pie a que mas tarde, en la universidad, parte del escaso tiempo libre lo dedicara trasteara y disfrutar con programas como Softice, w32dasm, ida pro, hollydbg, etc.. y llegara casi al final del wargame izhal

    Thanks maligno por este remember

    ResponderEliminar