jueves, setiembre 15, 2011

¿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.

miércoles, setiembre 14, 2011

Del dicho al hecho...

La información técnica allá por los 80's usualmente la obteníamos de las revistas especializadas, algunas de ellas llegaban con cierta regularidad que mas parecía irregularidad, muchas de estas aparecían como colecciones, entonces llegaba el numero 1 y 2 con la primera entrega, el numero 3, el numero 4... y de pronto o no seguía el número 5 o aparecía el número 9 y luego el 17, haciendo de todo un completo desastre.

Esto me paso con un proyecto en 3 partes de la serie de "Electrónica y Bricolage", si mal no recuerdo era una especie de órgano electrónico con 3 instrumentos; saltándome los primeros 6 números, apareció la primera parte, luego la tercera, al preguntarle al señor del kiosko de periódicos, que había pasado me respondió que esa editorial ya había cesado la edición en España hace mas de 2 años y que la distribuidora (una empresa colombiana) había adquirido un lote de revistas que quedaron sin venderse en la madre patria, por eso la irregularidad de los números. Años después, ya con la carrera de Ingeniería electrónica muy avanzada revise este proyecto - notando que faltaba la parte esencial: El oscilador generador de tonos.


Luego de verificar lo dicho por el señor del kiosko (quien era una especie de metabuscador en aquellas épocas) decidí bajarme de la nube y realizar un proyecto mas simple, o al menos uno que este completo en dicha revista, habían fuentes de alimentación de onda completa, strobes para discoteca, circuitos con el 555 y un metrónomo; me decidí por este ultimo ya que tenia serias intenciones de aprender a tocar piano y dicho aparato me ayudaría a marcar los compases.

Era un circuito oscilador muy simple, con unas resistencias de precisión se marcaban las constantes RC para cada compás y se esperaba en el parlante un sonido similar al que hace una llamada entrante en los parlantes del computador.

Luego de decidirme por este proyecto, me hice de unos ahorros (evitando comprar mis chocolates juguete de motta al salir del cole) y me enrumbe al centro de adquisición de tecnologías: El Jirón Paruro, en el cercado de Lima.

Ver Jiron Paruro en un mapa más grande


Era el mes de febrero de 1986, no dejaba de sorprenderme al ver tanta tecnología expuesta en carretillas ambulantes, como si de emoliente se tratara, se vendían chips amplificadores, chips de puertas lógicas, leds, un radar (si, un radar obtenido de un barco de la marina dado de baja que estuvo en "exhibición" hasta 1994), etc. El primer paso fue aprender a comprar, es decir saber que decir:

- Deme un R1, un R2, un C1, un C2...
- ¿Qué? - dijo el vendedor mirándome como quien dice "primerizo".
- Necesito esto - Mencione acercando la hoja de la revista.
- Ah ok, bueno, debes saber que las "R" y las "C" tienen unidades, a ver, 470K, 5% ; 220,...


Luego, al revisar la lista, me mira y me dice:
- Este PLL no hay.
- ¿Quien podrá tenerlo?
- Nadie, es que acá solo encuentras repuestos, si deseas un chip en especial tienes que importarlo, allá, el gordito de gorrita te lo puede traer en 2 meses.
- 2 MESES!


Fue entonces cuando caí en cuenta que el mercado de dispositivos electrónicos en el Peru era netamente repuestero, se tenia que adecuar uno a lo que existiera, por que la otra alternativa era inviable, ya que lo "especial" demoraba en llegar 2 meses y con un precio exorbitante. Para mis adentros pensé "y ahora, cuando diseñe algo al hacer la carrera, que poco podre hacer!".

Casi derrotado y con una bolsita con unas cuantas Rs, Cs y un par de leds, regrese a mi casa, a tratar de ilusionarme un poco con lo que podría pasar en el futuro, logre encender los leds y los pude conectar a la salida del parlante de la radio national que tenia destartalada, algo parpadeaba, parecia seguir a la musica que se oia.

-"no puedo soportar estar así todos los días/ Es siempre la misma rutina ya no aguanto mas"


Experimento que fue interrumpido por los acostumbrados apagones ocasionados por "sendero luminoso".

miércoles, julio 16, 2008

Robot, Siempre luchas por amor...


..."Cuando encuentras el mal siempre cambias tu cuerpo a metal"
(Festival de los Robots - 1979)

Algo de fantasia siempre es necesaria, la realidad suele aburrir; de niño solia soñar con hacer viajes fantasticos al espacio y pasaba horas de horas dibujando planos de robots y de naves espaciales. Siempre lo tuve todo, fui un niño feliz, con tener un lapicero y un papel era suficiente...

Ese niño feliz pensaba asi:

"las computadoras son el cerebro de los robots, entonces si quiero hacer un robot con esta lavadora debo ponerle un cerebro"
No se por que, pero le veia un parecido a mi lavadora con el robot de "Lost in Space" (Peligro Will Robinson!); en teoria, cualquier cosa que tenga un cerebro deberia mostrar "algo" de vida...

Disfrutaba de la vida, queria que todo se moviera.

Aprendi el uso de las ligas de goma, la flexibilidad de los clips y que no decir cuando uno se chanca el dedo con el martillo; un momento memorable de mi infancia debio ser cuando aprendi a desentornillar... con el cuchillo de la mantequilla, entonces podia ver el interior de cuanto juguete caia en mis manos, lo primero que desarme fue un carrito a cuerda, recuerdo haberme quedado horas de horas enroscando el fuelle con el dedo y viendo como se transmitia el movimiento a los engranajes; todo esto cuando cruzaba los 4 o 5 años. Todo muy curioso... hasta que ( uno de los primeros "hasta que" que aparecio en mi vida) empece a entender las historias vistas en la TV; veia a Ultra Siete, me gustaba como acababa con los alienigenas mutantes cada capitulo, cuando de pronto cai en una duda existencial ¿No le doleran los golpes? ¿Por que se enfrenta a esos monstruos?, creo que todo esto luego de que se me soltara una liga en la mano.

Luego observe las otras series, encontre la razon de ser del heroe: "defender al debil" todas las series de tv tenian heroes que se regian por esta regla... incluso el chapulin colorado!!!
Los buenos siempre ganaban y los malos desaparecian, el sol volvia a brillar y las praderas lucian tan verdes como antes de la llegada de los malos.
"¿Mi lavadora puede ser buena?", fue una pregunta que cruzo por mi mente... y de inmediato la pregunta contraria "¿Como seria una lavadora mala?"; entendi a mi forma que el bien y el mal se notaba en la forma como obraba el objeto en cuestion. Pero como seria? una lavadora buena me permitiria escapar de una explosion atomica (se me ocurrio primero a mi, Indiana) y una lavadora mala me atraparia el brazo y me lo cortaria...

Si que fue una duda existencial...

Asi como surgio este intringulis tambien se resolvio, a inicios de los 80's se estreno en la television peruana el "festival de los robots" con la presentacion de "El Vengador"; Era otro justiciero, protegia a los debiles, se convertia en robot y volaba por los aires; lo que pude apreciar claramente era LA ESENCIA HUMANA que se reclamaba para si, por muy cyborg que fuera Febo, habia una parte espiritual que lo movia, espiritu... eso era... los buenos tienen un espiritu bueno, extrañan a su padre, respetan a los ancianos, se enamoran, cumplen sus promesas (mas aun si se le hizo a un niño)y no bastaba con tener dentro una supercomputadora faltaba sentir un corazon. Los malos siempre eran humanoides, pero nunca totalmente humanos.
En conclusion, para que la lavadora fuera buena, debia tener un cerebro que actue con bondad... habia que darle un espiritu bueno, nada mas.


Corolario: Dios Existe y debe programar en Assembler.

jueves, junio 29, 2006

Primeros Sueños (o delirios de grandeza)

Los primeros video juegos quizas no eran tan espectaculares como los actuales, no manejaban texturas ni 3d, sus dispositivos de video no tenian los problemas de calor ni necesitaban mas de 2K para funcionar; tampoco incluian tramas muy enrevesadas ni generaban stress; si perdias, simplemente perdias en un videojuego y todo esto desvinculado a tu vida, no necesitaban redes ni internet pero compartias mucho con tus amigos al respecto, tus amigos eran reales y vivian a unas calles de tu casa.

Estos videojuegos rudimentarios no embotaban tu creatividad y te daban, sin proponerselo, los espacios para que puedas imaginar y pensar.

sábado, mayo 27, 2006

La primera vez siempre duele...

Como nada podia ser perfecto tarde o temprano me enfrentaria a los bucles infinitos, a esos estados en los que por una omision de poner ">" en lugar de "<" tienes a perpetuidad un cursor parpadeando en el mas absoluto vacio. En mi jueguito del "combate naval" habia logrado plotear aleatoriamente los "barquitos", pero como relate antes, estos en su conjunto de ponian muy cerca de una misma coordenada, y era en la iteracion 4 o 5 en la que aparecia el fallo 6/20; el cual me botaba de la ejecucion del programa, el cual modificaba sin mucha tecnica ya que solo movia coordenadas, le pasaba otro parametro al RND, etc... hasta que de pronto me ligo. y tuve una distribucion perfecta... entonces lo probe una vez, 2 veces, 5, 10... hasta que estuve convencido que todo estaba ok. No obstante, tenia la pesima costumbre de no anotar los cambios que realizaba, como siempre me botaba con algun mensaje de error y me regresaba al editor Basic jamas me cruzo por la mente que pudiera caer en un bucle infinito. y sucedio lo que tenia que pasar, justo cuando dije "luego de esta, anoto lo que hice".
Tuve la distribucion de los "barquitos" sobre toda la pantalla y esperaba que me apareciera la entrada de cooRdenadas... y las cooNdenadas no aparecian. Pasaron 10 segundos, luego 15, un minuto, 2, 3, me fui al baño, regrese y... NADA de aparecer las coordenadas... lo que si habian aparecido eran mas "barquitos"... al principio no me di cuenta, pero de pronto aparecio otro "barquito" mas, y luego otro y otro... al cabo de 45 minutos, casi toda la pantalla de mi televisor IMPERIAL estaba de color negro con unos puntitos blancos.

Habia caido en un bucle infinito.

¿Que podia hacer? , ya habian transcurrido 2 horas (eran la 1:30 am del sabado) y nada con aparecerme el mensaje 6/20, ya tenia una pantalla de color negro y una madre que me decia "Estas viendo peliculas de medianoche(1)???".

Una pregunta daba vueltas en mi cabeza: "¿Como corto esto?"...

Apague el televisor, la luz de mi cuarto y deje que el farol de la calle alumbre el cuarto... escuchaba en la casa del frente a Billy Idol (eyes without faces), mientras imaginaba como seria mi vida si estuviera en esa fiesta note como las paredes de mi cuarto cambiaban de tonalidad hacia el negro, luego la calle, la pared frente a mi... era posible que haya ploteado fuera del televisor???, luego cuando me apoye en la ventana para ver mejor lo que pasaba note que mis manos estaban siendo ploteadas... ahi me desperto mi mama, que me vio quedarme dormido con el televisor encendido y decidio desenchufar la computadora "para que no gaste luz por las puras".

Entonces conoci el significado de la palabra resignacion.

(1)Peliculas de medianoche: es la forma suave que tiene mi madre para decir Peliculas Porno o con calatas.

lunes, marzo 27, 2006

BASIC

Actualmente a mis alumnos les suelo decir que un Lenguaje de Programacion no es mas que un Interprete del Pensamiento Humano, es decir, se pone "la idea" en terminos que el computador pueda entender. Entonces con ellos llegamos a la conclusion siguiente: Un pensamiento caotico producira programas (aplicaciones) inestables, luego habria que tener las ideas claras antes de pensar en trazar una linea de un diagrama de flujo.

Cuando me encontre con mi Timex, de primera intencion no crei necesitar mas que INPUTS, PRINTS y los caracteres aritmeticos ( + - / * ) ; si queria mostrar un texto debia usar PRINT "texto" ; variable; "texto"... ; si queria leer un valor, INPUT VARIABLE para un numero e INPUT VARIABLE$ para una cadena de texto; luego si queria operar numeros esto lo cargaba mediante un LET VARIABLE = OPERANDO1 (operador) OPERANDO2... ; al principio no necesitaba siquiera de bucles GOTO ni FOR NEXT, ya que solo queria probar la aritmetica del Z80, osea del procesador Zilog de 1 Mhz!!!.

De pronto me empece a aburrir, el invento no emitia ni un beep y como en aquellos tiempos tener una casettera era algo como tener un discman mp3 pues no pude conseguirme ni siquiera programas para correr y escuchar el ruidito de la transferencia, es asi que me acorde de un jueguito que se me ocurrio a nada mas ver las consolas Atari y las clases de la recta numerica: era el combate naval, en este juego mi contrincante y yo poniamos en unos ejes coordenados (usualmente las hojas del medio del cuaderno de matematicas) unos dibujitos de unos barquitos, en la mitad de la hoja los mios y en la otra la de mi amigo, con el lapicero poniamos una bolita en el lado de la hoja que me correspondia y luego doblaba la hoja cubriendo el lado contrario y marcaba mi disparo con la uña, si coincidia con la nave de mi amigo pues le hundia ese barco.

El sistema grafico del Timex tenia una matriz de 44x64-ahora se que se llama matriz- y tendria entonces por lo tanto 44 filas por 64 columnas, para hacer que el Timex me coloque los barquitos (un caracter de cuadraditos como el mostrado en la figura) tendria que tener la capacidad de elegir dichas filas y columnas. Mediante las sentencias INPUT deberia ingresar las coordenadas de mi disparo y cotejarlas con las coordenadas puestas por el Timex 1500, si eran iguales hundia el barco. La logica era relativamente correcta solo que habia un detalle en el que no habia pensado: ¿Cómo se programa un enemigo?

Aca vino el primer problema de definiciones, necesitaba numeros al azar... busque en el diccionario en ingles, azar y ahi encontre "chance" ... fui al index del "User Manual" y no encontre nada parecido, entonces fui al diccionario de sinonimos y antonimos (ideas afines y paronimos) y busque sinonimos para la palabra azar, ahi encontre : ventura, sino, destino, hado, albur, acaso, eventualidad, casualidad, circunstancia, accidente, desgracia, fatalidad, contingencia, coincidencia, aventura, riesgo, fortuna, suerte, chiripa, chamba. De este grupo de palabras escogi eventualidad y casualidad (y cree los numeros casualisticos, jajaja) obteniendo el mismo resultado... luego recorde a mi madre decir otro sinonimo, pero usado en estadistica... cuando me convenci que no me acordaba decidi preguntarle, cuando fui a su cuarto... ya estaba durmiendo... asi que pille uno de sus libros de la coleccion Schaum y ahi fui viendo estadigrafos, dispersion, etc, cada uno con su respectiva consulta en mi diccionario Rances hasta que llegue a la seccion de "Pruebas de hipotesis" y... me vencio el sueño.

Para entonces me habia aprendido 32 palabras nuevas...

Al dia siguiente mi madre me preguntó que hacia durmiendo con el libro de estadística sobre la cara y le explique, entonces me dijo: la palabra que buscas esta en la parte de prueba de hipotesis (PLOP!) , y debe ser ALEATORIA o distribucion aleatoria o NUMEROS ALEATORIOS, entonces retome mi busqueda y encontre la palabra RANDOM, que en mis puestas de cabeza del manual habia visto por alguna parte. Registre de inicio al fin el manual y encontre las funciones RANDOM o RND, me alegre un monton dije:

LET X = RANDOM A
LET Y = RANDOM B

Luego... Ploteo en X,Y sonaba coherente... pero para el timex no.

Asi es que probe lo siguiente:
10 FOR X = 0 TO 63
20 PLOT X , X
30 NEXT X


el resultado? una linea diagonal..

luego intente incluir la funcion rnd, me quedo asi:
10 FOR X = 0 TO 63
20 PLOT X, RND(X)
30 NEXT X

en teoria habia conseguido buena parte de lo que queria... es decir, corria el programa una y otra vez y no marcaba los puntos en el mismo sitio, pero tenia un defecto: la dispersion de puntos era muy segada a un area en particular, es decir seguian el valor de X bastante de cerca, asi me paso en la primera, la segunda hasta que se detuvo el programa por error, con el anuncio 6/20 que significaba algo asi como Overflow.




jueves, marzo 23, 2006

Mis prejuicios Informaticos Ochenteros

Aqui mi Primer Programa

10 Print "deme un numero" 
20 input n
30 let a =  sqr(n)
40 print "la raiz cuadrada de"; n;" es : ";a


¿Qué me motivo a hacer esta huachafada? , pues aún no lo se, creo que fue lo primero que se me ocurrio ya que siempre me fascino la precisión que se supone tenian las computadoras, queria ver números con mas decimales que los que habia podido obtener en mis tareas y entonces empezo mi mania por depurar y hacer mas sencillos mis programillas. esto quedo asi:


10 print "deme un numero"
20 input n
30 print "la raiz cuadrada de"; n;" es : "; sqr(a)

Hasta antes de mi primer contacto con las computadoras, me devoraba cuanto comercial sobre ellas aparecian en la tele, recuerdo el spot de "Enrique Lulli" y trataba de extraer la mayor cantidad de informacion de ella, al menos de vista...

Luego, de manera timida, aparecieron algunas notas en los periodicos y revistas, estas pecaban de no ser tan digeribles ya que crecio en mi la idea de que para programar una computadora habia que escribir el diagrama de flujo con un lapiz sobre la superficie del disquette (5 1/4").

Sin libros digeribles, un hardware limitadazo, menos una wikipedia para buscar, no tenia como entender el asunto de manera concreta hasta que un amigo tuvo su Commodore 64 con unidad de disquetera, la cual tenia casi el tamaño de un escaner para puerto paralelo de los años 90'. Yo como buen voluntario me ofreci a ayudar a mi amigo a entender que era lo que tenia, me presto su USER MANUAL y me lo lei... ahi comprendi lo que eran los famosos Files o archivos de los que oia hablar en las peliculas de ficcion, como era que se ponian los programas en la computadora y que diantres era efectivamente el diagrama de flujo. La C-64 era una beldad basada en un procesador y chipset motorola, un generador de tonos y Sintetizador ROLAND y unas memorias Texas Instruments.

Luego aparecieron las revistas "ZX", "INPUT", "Mi Computer" (y el termino "OE!, Que te computas?") , de esta ultima llegaron a caer en mis manos algunos numerillos gracias a mis ahorros de propinas con muchisimo esfuerzo, sobretodo por que esto me alcanzo cuando Alan Garcia era Presidente y los precios cambiaban en pocas horas, podia ver el interior de cada Minicomputador como los "Dragon", las series Commodore, las Apple, etc... Me intrigaba ver que decian de la mia, que podian destacar y que criticar y eso fue algo que jamas vi ya que el modelo Timex ya era OBSOLETO, lo que si consegui fue esa nueva palabra para mi diccionario.

Comparaba mi computadora con las otras y pues le sacaban el ancho, sobre todo en capacidad ya que la mia venia con 8 Kb instalados (pero ampliables a 16Kb) y el estandar de aquel entonces ya eran los 16 Kb, luego crei que si tenia mas memoria mi computadorilla podria procesar sonido (aun no admitia que el hardware que tenia lo hacia imposible).

ya para el año 1987 se hablaban de las XT, equipos que no vi sino hasta un par de años, casi por acabar el colegio. Era rarisimo encontrar computadoras en las casas, mas aun en los centros comerciales, paradojicamente las tiendas como SEARS e HIRAOKA vendian tecnologia de punta pero seguian usando la contabilidad manual y las cajas registradoras mecanicas, ni hablar de los organismos estatales, solo recuerdo haber visto una computadora en la decada del 80 en un organismo estatal, en el INEI y eso que era un mainframe con cintas de carreta y lo vi muy de lejos en medio de una palomillada al escaparme de las manos de mi madre en una visita a dicha institucion. Recuerdo que en un boletin del SUTEP (Sindicato Unico de Trabajadores en la Educacion del Peru) se comentaba que eso de las computadoras era una moda pasajera y que al contrario solo traian el vicio del PACMAN que embruteceria a nuestros jovenes.

Otra de las cosas que pensaba era que los profesores de ciencias podrian conocer mas de las minicomputadoras, recuerdo que una vez le pregunte a un profesor de laboratorio y me menciono que eso era para gente de alta especializacion, dado a que todo ello era muy complejo. Lejos de desanimarme creo que me alento...

sábado, marzo 18, 2006

User Manual

Imagina un instante lo que cruzaba por mi mente: Un MicroComputador! por fin podre jugar PacMan en mi casa! me entusiasmaba la idea de generar efectos de sonido como en la "Guerra de las Galaxias" y tambien la de componer musica como Harold Faltemeyer o Vangelis. Siempre me atrajo el sonido electronico, siempre senti que reflejaria mejor mi sentir. ¿Cómo encontraba información sobre aquel Timex-Sinclair en aquellos años 80's?. Sin internet ni foros BBS solo quedaba para este modesto Blogger tratar de entender el Manual de Usuario, a diferencia de los manuales actuales, en estos manuales existian detalles mas "intimos" del invento, como la region de memoria donde se cargaban las variables del sistema, habia detalles incluso del hardware.
En aquel entonces se pensaba que el español era un idioma condenado a desaparecer, que no llegaria al 2000, por lo tanto, ni pensar en versiones hispanas de estos USER MANUALs propietarios.

La estructura de este manual hasta ahora se conserva, las primeras paginas con los creditos de los redactores, todo un equipo de Ph.D., Drs, Ings y demas... menos mal que jamas lei esas paginas por que con mi 2do de secundaria en transito, tal vez me hubiera desanimado. Luego de los reconocimientos sigue la "90-Day Limited Warranty" osea, los terminos de Garantia, las cuales solo cubrian 90 dias como maximo, y solo cubrian fallos de fabrica, osea, que el teclado no engaste bien en la cubierta, que la fuente no funcione. A continuacion el Indice de Contenidos con el tipico "Getting Started" que incluia una suerte de monserga de que se tradujo en "si programas basuras, tendras basura como respuesta", pero siempre haciendo mencion que los mejores resultados estan en usar las aplicaciones desarrolladas por su staff de programadores.

Como era de esperarse, el capitulo de como conectar los perifericos al computador no lo lei, me parecia gracioso como era que los gringos le pusieran tanto enfasis en algo que resultaba logico, aun el dia de hoy cuando tengo un equipo nuevo, tengo esa tentacion de armarlo sin ver el manual, aunque claro esta, si y solo si es algo comprado con mi dinero, por que no me imagino haciendo eso con un servidor HP ML370 G4, creo que profesionalmente seria un suicidio, economicamente tambien por que un experimento con malos resultados me puede costar facilmente unos US$ 15000... mas IGV (19%)




Y entonces... se llegaba al asunto de fondo... ¿Cómo usar el invento?

Segun la caja, el computador debio traer consigo un Cassette con un pequeño procesador de texto, una calculadora de impuestos (el fantasma de la navidad pasada del PDT SUNAT) y un jueguito llamado StarZap, que era un mini-version del "defender". Le di mil vueltas a la caja y el dichoso cassette no estaba por ningun lado, siempre me pasaba lo mismo, compraba algo y en la lista aparecian cosas que jamas estuvieron dentro del empaque.

Solo quedaba usar el lenguaje Basic que venia incorporado...

En aquellos años, las academias de computacion enseñaban precisamente el uso del lenguaje basic, el cual estaba implementado de diferente manera en cada minicomputador, por ejemplo, el Basic del Commodore 64 soportaba arrays para las sentencias POKE, cosa que este Timex 1500 no tenia, cada poke debia hacerse por separado. Estas diferencias se debian esencialmente al hardware de cada maquina, no como ahora que son por caprichos comerciales. el lenguaje estaba compuesto por 60 palabras reservadas y un juego de caracteres especiales. No habia diferencias entre el modo de texto y el modo grafico, ambos eran lo mismo, si queria dibujar algo tendria que plotear con caracteres, de esta simple inspeccion me di cuenta que no veria el URIDIUM correr en mi televisor.


luego de revisar el "USER MANUAL" encontre mi primer obstaculo en mi meteorica carrera hacia la fama y fortuna como programador... en mi casa solo teniamos un televisor y estando de moda el grupo "Menudo" mi hermana dificilmente soltaria el televisor hasta despues de las 7:00 PM, que era cuando terminaba su novela...


Tambien existia otro escollo, mi madre guardaba el Timex-1500 en su armario, bajo llave, entonces eso significaba que podia sacarlo cuando ella llegaba de trabajar de IPAE, y eso era a las 11:00 pm, por lo que todos mis ensayos debia realizarlos los viernes despues de que terminen los programas politicos... que me los soplaba por la necesidad de probar.

Demas esta decir que mis habitos informaticos trasnochadores vienen desde esos años.

Luego de probar todos los programas del Manual, decidi modificarlos. al principio hice algo que todos deben haber hecho: poner mi nombre en donde decia "FRED", luego poner los mensajes en español, un poco dificil porque no existia la "ñ" pero suplantada por la union de "n" e "y".

y ... el audio??? donde esta el audio???

podria decir que fue mi primera decepcion amorosa, mi timex no tenia por ningun lado generador de tonos, osea no hacia ni "beep!" el unico sonido que emitia lo escuchaba en el parlante del televisor cuando cargaba un programa de una cinta y era un ruido por demas molesto ya que eran el sonido de las modulaciones de datos en audio, tipico sonido de transferencia de datos de pelicula de ficcion.

Asi es que superado esta puñalada en mis anhelos, me embarque en algo mas complejo:



Escribir mi primer programa.

martes, febrero 28, 2006

Hola Mundo

Me acabo de loggear en este servicio de blogs, que mas decir, el registro sencillisimo, la interfaz muy suave y ligera.
Este primer blog es el tipico "hello world" por el que todo programador a tenido que pasar,
al ser el primer blog que escribo, creo que debo compararlo con el "hola mundo" que hace unos 21 años escribi...

si, 21 años...
El primer computador que tuve fue una Timex Sinclair, un modelo anterior al ZX y al Spectrum, 4 Kb de RAM, teclado de membrana, conexion de microfono y audifono para cargar programas desde cinta magnetofonica (el abuelito del tape backup) y salida de RF para usar el TV como monitor. Este equipillo venia con un lenguaje Basic incluido en la ROM.

Me parece que fuera ayer...

Cuando, desempàque el minicomputador y lo enchufe, no fueron ni 10 minutos hasta que sintonice el canal adecuado, y pude ver el prompt del sistema... realmente la linea del interprete Basic... entonces... a probar...

10 PRINT "HOLA MUNDO"

habia que pulsar enter y luego presionar la letra "R" (Run)
de manera inmediata... aparecia en la esquina superior izquierda de la pantalla

HOLA MUNDO