¿Hacer Clic o Poke?

Una tarde de 1994 abrí los ojos y me vi programando en pascal, de pronto sentí nostalgia por lo que fue aprender a usar el basic de mi TIMEX SINCLAIR y el comprender lo que la hacia distinta de una COMMODORE 64. Mi rudimentaria TIMEX apenas si podía trabajar como una calculadora científica o como un calculador de impuestos, salvo el cassette demo, no pude cargar ningún programa en ella, así que lo que me quedo fue aprenderme el basic de dicha maquina.

Muy ajeno a comprender lo que era el lenguaje de ensamblador, me aventuraba a leer datos e imprimir resultados:
10 PRINT "DIME TU NOMBRE"
20 INPUT A$
30 PRINT "BUENOS DIAS ",A$

Luego, como mencione en un post de hace varios años, empece a hacer cálculos aritméticos y a intentar realizar gráficos.

Luego la gracia era imprimir el texto en algun lugar especifico de la pantalla, si mal no recuerdo era algo como:

PRINT AT 5,5 "BUENOS DIAS ",A$

La interacción era simple, el cursor en la parte inferior parpadeando y mostrando lo digitado. Cuando el dato que debía pasar era un numero y en su lugar ponía letras aparentemente lo aceptaba, pero posteriormente me reportaba un error. Así de básico era trabajar con esta TIMEX, eso si, todo era efímero por que no tenia como guardar los programas desarrollados, todo lo realizado se perdía al desconectar la energía, al principio le culpe a las grabadoras de cinta que tenia, pero una tarde de 1992 necesite un cable coaxial RCA y eche mano de la que venia con esta microcomputadora resultando que el interior de dicho cable estaba roto de fabrica.

Toque el techo de este invento cuando ya no pude explotar mas al manual de usuario, cuando ya conocí como usar las sentencias condicionales y haber realizado mis ensayos de tomas de decision; las revistas especializadas no mencionaban para nada a mi TIMEX, y si por ahí aparecía, se referían a ella como un modelo obsoleto o de existencia fugaz, reemplazada por la ZX80 y posteriormente por la SPECTRUM (con video a color y generador de tonos).

Lo que si abundaba era informacion sobre la SPECTRUM y la COMMODORE 64.

Una de las primeras revistas especializadas del tema que cayeron en mis manos fue "Mi Computer"; las que se adquirían en kioskos de periódicos y en markets como "Monterrey", en esta revista podíamos ver lo que en el mundo civilizado usaban y las caracteristicas de cada microcomputador, lo que hacia que cada vez entendiera a la compra de mi TIMEX SINCLAIR como una estafa.

En esta revista venían listados, o lineas de programas de aplicaciones enteras, usualmente juegos.


Algo que podía advertir era que los listados no siempre trabajaban, esto se debía a que las versiones de las roms de los equipos que se conseguían acá eran de versiones distintas a las que usaban en la madre patria, luego descubrí que en el caso de COMMODORE, hubo una empresa argentina que ensamblaba su propia version. En ocasiones el fallo era tipográfico, es decir en donde debería decir GOTO 120 figuraba GOTO 102 ; algo que llamaba la atención era que en los números subsiguientes no aparecía ninguna fe de erratas o enmienda al respecto, quizás a esto se debió que la generación de programadores que surgió posteriormente fuera tan buena. En la revista aparecía al final un mensaje que hacia alusión a una lista BBS a la cual dirigir sus comentarios.

El listado de la imagen, extraido de http://www.epimundo.com/2009/11/mi-computer-revista-coleccionable-de-los-anos-80-scans.html ; representa un típico listado, con los infaltables GOTO que delataban al desorden infantil llamado BASIC.

El inicio del programa con las sentencias REM, usadas para escribir comentarios como podían ser el nombre del programa, el desarrollador, la versión, etc. Mentalmente la usaba para marcar lo que no debía decir y así "morderme la lengua" antes de meter la pata con algún comentario.

Lo mas cercano a un "procedure" o "function" eran los GOSUBs, o "ir a subrutina", que mejoraban la escritura y corrección de cualquier programa, ya que encerraban procedimientos o rutinas específicos; cierta vez la explique así: "Jose GOSUB cocina" dentro de un programa en el que se organizaba un quinceañero.

Las cosas que se repetían un determinado numero de veces se hacían con los bloques FOR.. NEXT, que también explique en la subrutina "cocina":

10  REM QUINCE
...
20   GOSUB 200
...
199 REM COCINA

200 PRINT "PREPARO JUGO"
205 FOR J = 1 TO 3 

210 PRINT "ESTOY ECHANDO ",J, "CUCHARADAS DE AZUCAR AL JUGO."
215 NEXT
...

Esta parte generaba una salida así:

PREPARO JUGO
ESTOY ECHANDO 1 CUCHARADAS DE AZUCAR AL JUGO.
ESTOY ECHANDO 2 CUCHARADAS DE AZUCAR AL JUGO.
ESTOY ECHANDO 3 CUCHARADAS DE AZUCAR AL JUGO.

En teoría, si querías mas dulce el jugo a la variable "J" le dabas desde 1 a 4 ó 5, menos azúcar debías ponerlo como 1 TO 2; aunque no se que gusto podría tener.

Las tomas de decisión se realizaban por los clásicos bloques IF .. THEN .. ELSE, que siempre encontraba ejemplos para explicarlo:

10 IF HAMBRE= TRUE THEN:PRINT "JOSE VA A LA COCINA"

Aunque en estos BASIC, los ELSE no siempre estaban implementados, lo que obligaba a hacer sentencias anidadas

Quizás la sentencia mas misteriosa eran las PEEK y las POKE, que eran las que permitían que el simple programa hiciera cosas asombrosas, en la SPECTRUM se podían hacer efectos en los colores de texto y en la COMMODORE se podía trabajar directamente con el sintetizador ROLAND que tenia en su etapa de sonido.  Años después entendí que lo que hacían era pasar a memoria operadores en ensamblador, así como asignar valores de la memoria a variables definidas en nuestro programa BASIC.

A grandes rasgos, una orden en ensamblador como LD (LoaD o cargar) para el Z80 (del SPECTRUM) estaba identificada con un número (en hexadecimal, binario o decimal) y era este numero el que entendía el microprocesador del SPECTRUM, entonces una sentencia POKE lo que permitía era programación en ensamblador (o assembler) en nuestro BASIC, claro que para esto teníamos que tener a nuestro lado una tablita con todas las sentencias en ensamblador con sus equivalentes en números.
Si la sentencia LD tenia el equivalente numérico de ED en Hexadecimal, esto era 237 en Decimal, entonces si queríamos usar esta sentencia en nuestro BASIC teníamos que hacer uso de un POKE, indicando en que posición de memoria íbamos a cargar nuestra sentencia LD, esto era algo así:

POKE [dirección de memoria], 237

A veces esto resultaba tedioso, por que hacer un POKE sentencia a sentencia no resultaba ser practico, entonces se hacian uso de ARRAYS o arreglos numericos, equivalentes a las matrices de 1xn, estos arrays usualmente eran definidos con sentencias DATA.

DATA 0,0,255,23,54,0,0,124,255,9,0


Ahora ya se por que era un desastre al acercarme a las chicas, entonces no era hacer clic, sino POKE.

Comentarios

Anónimo dijo…
Hola, excelente trabajo, me hiciste recordar buenos tiempos, con sabor a nostalgia, saludos
Enrique Coronel Garcia, Mexico DF
Anónimo dijo…
Hello. And Bye.

Entradas populares