Lápiz Óptico LOPTIC 50

Eduardo Ricobaldi, Pablo Gindel, Alvaro Cassinelli. 1988 Uruguay

Esto es una de esas historias en que no tienen buen final.

En una reunión de adolescentes en la casa de los Cassinelli, el hermano con que mas afinidad había era con Álvaro (evidentemente el futuro ingeniero). Horacio el dibujante, tenía como otro grupo de amigos con los que estaban desarrollando Dangerous Kiss. Eduardo el menor, andaba entre bichos y luego se sumó como beta tester, evidentemente.
Pablo Gindel amigo de Álvaro tenía la TK90, y le tiraba la electrónica como a mí. Álvaro tenía la Spectrum 48K y le tiraba mas el software. Yo andaba en el medio y me aparecí un día con un libraco inmenso fotocopiado de programación con Z80. Entre revistas Micro Hobby y ese libro aprendimos a programar Assembler. Yo tenía la 128K, la primera, la inglesa.
Un día conseguimos un lápiz óptico brasilero que cuando lo veo funcionar por primera vez quise entender como funcionaba. Era espantosamente lento. Hacía un parpadero espantoso y enseguida entendí el problema: el hardware era muy elemental y solo sabía si había o no luz en la punta del lápiz. Entonces por software encendía y apagaban pixeles de 8×8 hasta descubrir la posición del lápiz en pantalla. Se necesitaba como un segundo para determinar las coordenadas X,Y medio precisas.

Comenzamos a discutir si no era mejor hacerlo por hardware y allí comenzamos un desarrollo absurdo de crear un circuito contador para determinar la fila y otro para la columna y que le mandara la coordenadas X,Y de una. Al final la columna es tan lenta que sí, es posible obtenerla por software y finalmente obtuvimos una coordenada X,Y por cuadro, o sea, 50 por segundo!

El nombre que quedó era una contracción de Lápiz Óptico y como todo terminaba con un número fue 50 por lo anterior, asi quedó LOPTIC 50.

Luego de tenerlo funcionando y pensando en producirlo, nos vino el terror de que lo copiaran, porque andaba muy bien, terminamos incluyendo todo el circuito en resina poliéster, cosa que fue un desastre porque se colaba por los contactos y luego era muy difícil de reparar.

Además del “driver”, desarrollé un programa de dibujo que funcionaba bastante bien, pero fue demasiado. Hoy pienso el tiempo que me puede haber llevado hacer eso en Assembler y me parece increíble. Álvaro se enroscó con el SIMON que había que memorizar sonidos y con el lápiz eligiendo los sectores de colores era ideal. Gindel seguía mejorando la plaqueta.

Le vendimos varios a Maico pero al poco tiempo apareció el primer problema era incompatible con los modelos siguientes. Una señal de video que originalmente venía en el slot (48K y TK) en la 128K mía salía por un conector independiente. Luego la +2 y +3 eran otra señal y salía por otro conector distinto. Era muy complicado hacer el hardware para cada modelo.

Luego la historia de la Spectrum fue degenerando sola, y ya conocemos el final.

Creo que se vendieron 10 o 15 lápices y tuvimos clientes que les hice reparaciones y adaptaciones. Pero había otro problema, mantener el brazo levantado sobre la pantalla llega un momento que es muy cansador.

La foto actual es un prototipo que se le salió la caja verde exterior y quedó la resina poliéster transparente.

Por allí quedó el circuito en el pizarrón blanco que finalmente nadie quiso borrar.

Todos los programas que manejaba con el HiLow se perdieron cuando dejó de funcionar. Hay algunos listados en assembler porque en esa época había comprado una impresora Epson y le había desarrollado una interfaz paralela y podía imprimir en papel fanfold. Hasta donde sé no quedan copias de ninguno de los programas, salvo que algún cliente haya guardado. Incluso los cassettes de HiLow están perdidos.

Más sobre el Hardware – Nerd Alert!

Parece que todo se reduce a tener un sensor óptico apoyado sobre la pantalla CRT que si lo viéramos en cámara lenta debería tener un punto brillante que se mueve horizontalmente y baja un poquito cada línea, bla bla. Lo oyeron o leyeron por allí, bueno, no es tan así. La realidad es que el fósforo de la pantalla tiene una remanencia lumínica cercana al tiempo en que se barre toda la pantalla (1/25 de segundo, no 50 porque hay entrelazado), de lo contrario habría un parpadeo muy incómodo.
Por otro lado, el sensor no solo “ve” un punto, sino como 4 a 5 líneas y solo la segunda o tercera valen. Ni hablar que cuando el lápiz se mueve es una pesadilla determinar cual realmente es el “centro”. El sensor envía un pulso que en muchos casos es bastante indeciso. Pero con unos filtros y amplificación logramos obtener uno lo suficientemente bonito como para disparar el circuito digital “schmitt trigger”.
El primer sensor, un optoLED con forma de LED clásico comprado en Eneka funcionaba muy bien. Cuando fuimos a comprar más, no había. Nunca más volvimos a conseguir ese dispositivo que funcionaba perfecto. Todos los optoLEDs que había a la venta eran malísimos (o eran lentos o no tenían sensibilidad). Comenzamos a probar transistores de cápsula metálica, que le quitábamos la carcasa para dejar el semiconductor a la vista para que funcionara como opto y era totalmente al azar. Algunos funcionaban bien, pero otro no. Fue el otro gran desastre.

El circuito contador de fila, comienza a contar con el pulso de retroceso horizontal que se incluye en el chip de video (señal Y o Luminancia + sincronismo). Normalmente en un monitor es una señal que se envía independiente y en la ZX Spectrum y TK90 son parte del slot, pero luego la removieron porque normalmente la gente usaba televisores con entrada de video compuesto o modulado por la antena de VHF. Pero la calidad de video no es tan buena cuando la señal es demodulada. Por eso los monitores (como los VGA) reciben las señales cada una en un cable. Si tenías un televisor con entrada “Compuesta” era mucho mejor que entrar por antena (canal 3 o 4? de VHF), pero si tenías las señales por separado era aún mejor que la compuesta (en 3 cables YPbPr como “Video por componentes” o 5 de un RGB real como es el VGA) . Pero era raro un TV con entradas tipo monitor, como mucho es Compuesta (todo el video en un conector amarillo). Creo que nunca se lograron estandarizar los monitores genéricos y por eso las computadoras con monitor eran con un conector propio de la marca. De allí que Amstrad comenzó a hacer variantes. A nosotros nos volvió locos, porque cada versión tenía un formato distinto.
En definitiva un circuito contador de 8 bits (74393) resetado con el pulso horizontal, contaba “columnas” con un reloj de algunos MHz, hasta que el pulso del lápiz lo detenía con un Flip Flop tipo D. El reloj era un desastre con una resistencia variable que se estropeaba con la resina poliéster.

El driver tenía un contador de software para las líneas, que se reseteaba con el pulso vertical y avanzaba con el horizontal (lamento no recordar como se obtenían por software, pero si no eran interrupciones, era algo similar). Cuando llegaba un aviso del lápiz, era el primero y se descartaba porque era inestable, y se esperaba al segundo que se consideraba válido. Por un puerto obtenía el valor de la columna en forma de 8 bits y la fila ya se tenía por software.

Físicamente el lápiz tuvo varias versiones, pero finalmente fue un lápiz mecánico 0.5mm blanco (pero opaco) que se ponía el sensor en la punta y salía un cable apantallado hasta un conector de 3.5mm. En la foto ven un prototipo en un marcador Edding 500 que usábamos para hacer las plaquetas. El conector de 3.5mm era el otro que se llenaba de resina poliéster y quedaba inservible.

La caja de plástico verde (aunque hubo algunas transparentes) era una caja de medicamentos genérica que compramos a una fábrica de plásticos. El color lo consideraban como indefinido, porque eran diferentes tonos de verde. Eran pruebas de la fábrica. Solo había que cortar la ranura del conector del slot y perforar el conector del lápiz. Recuerdo la historia del copiador RamJet con sus cambios de caja, en cambio nosotros tuvimos mucha suerte con la caja. (falta foto)

Sobre el Software

Este es el talón de Aquiles del proyecto. No había un API o forma de usarlo en forma independiente con otros programas. El driver era parte de cada programa que hacíamos para el lápiz.

Primero era el programa de diseño, una especie de Paint. Dibujabas a mano alzada, o ponías rectángulos o circunferencias. Lo mas loco fue hacer una circunferencia que se dibujaba, se borraba y se volvía a dibujar con la nueva coordenada. La velocidad de CPU no daba para calcular una raíz cuadrada a tal velocidad, por lo que opté por una fórmula rápida que no era “tan” circular (una aproximación de segundo grado?), que era media cuadradota. Funcionaba rapídísimo, pero cuando se quedaba quieta, no, no era realmente una circunferencia.

Segundo fue el Simón de Álvaro que jugábamos competencias entre los amigos que permanentemente visitaban la casa.

Y la que iba a ser la joya de los juegos era una historia conversacional redactada e ilustrada por Horacio Cassinelli llamada “El Secreto de Graken”. Se redactó con opciones que se seleccionaban con el lápiz. Si te equivocabas o elegías una opción inconveniente, morías y tenías que empezar de nuevo. En realidad era el primer capítulo de la historia, pero terminó siendo la única. Y nunca se hicieron las imágenes.
Años después (2000) pude escanear los textos, generé un sitio de HTML estático. Este juego quedó colgado en una web con unas promociones que no son aplicables, pero están aún allí. Los invito a jugar y lograr salir de la montaña (vivos, claro) https://lanave.com.uy/graken/

Deja un comentario