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/

2 comentarios en «Lápiz Óptico LOPTIC 50»

  1. Me registré sólo para poder dejar un comentario acá.

    Les dejo mi versión de la misma historia, que publiqué en fb en 2017. No sé si Eduardo habrá llegado a leerla alguna vez, son 2 versiones complementarias de un hecho que sin duda merece ser recordado.

    En 1987 yo tenía 15 años, y me dedicaba a la electrónica.
    Desde hacía unos tres años conocía a Alvaro Cassinelli, de mi misma edad, y a través suyo a un grupo de lo que hoy llamaríamos “geeks” de la Sinclair ZX-Spectrum. Alvaro y su gente descollaban programando en assembler, que era, en aquella época y para esa plataforma, el lenguaje con que se hacían los juegos y todos los programas “profesionales”. La ROM (no se hablaba de S.O., sino de “ROM”) de la Sinclair incluía un intérprete BASIC, con el que yo me divertía; pero los “pro” escribían directamente en assembler.

    Yo tenía un “laboratorio” de electrónica; había leído sobre electrónica digital, y, a instancias de aquella gente, me había comprado un libro que enseñaba a hacer un interface hardware para la Spectrum (un libro de tapas plateadas, que vendían en una librería de libros técnicos, en la calle Colonia; no sé por qué no lo tengo más). Un día junté unos pesos, fui a una tienda de computación que quedaba en una galería del centro (“Music computer corner” creo que se llamaba) y me compré una ZX-81 usada. Con ella hice muchos experimentos, entre ellos el proyecto del libro, que consistía en una placa con 2 integrados –uno con puertas lógicas para decodificar la dirección del puerto I/O y el otro un óctuple latch, para almacenar 8 bits–. Esa placa mágica dotaba a la Spectrum (o a la ZX-81 en este caso) de 8 salidas digitales, como las GPIO que tiene hoy en día una Arduino.

    Ya para 1988 yo estaba bastante familiarizado con circuitos digitales básicos, y sabía hacer pequeños periféricos para la Spectrum. Por aquella época, un tipo de periférico que nos maravillaba a todos era el famoso “lápiz óptico”, un dispositivo que permitía interactuar directamente sobre la pantalla con una especie de puntero. Parecido a lo que hoy sería una tableta gráfica, pero se hacía sobre la pantalla de la computadora. Esto era lo único que existía, dentro del universo Spectrum, asimilable a un “interfaz gráfico”. No había mouse, íconos, nada de eso (la computadora se conectaba al televisor; no tenía disco duro, tenía 48 KB de RAM [de los cuales 16K eran para la pantalla]; 8bits@3.5MHz; se usaba un cassettero para almacenar los programas; no había internet; etc., etc.).

    Solíamos hablar con Alvaro de la tecnología de un lápiz óptico. Alvaro se había comprado uno, y estaba decepcionado porque en realidad el dispositivo era muy lento, no era “real time” como diríamos hoy. Existían 2 o 3 modelos de lápiz óptico para Spectrum, y todos ellos funcionaban como el de este video: https://www.youtube.com/watch?v=MXST8LaiMHs, que es un DK’tronics, ni más ni menos. El tracking del lápiz se hace “por software”: al apretar una tecla (dejando el lápiz apoyado en la pantalla) la pantalla se pone negra, y aparecen unos rectángulos blancos que “buscan” la punta del lápiz (en la punta obviamente hay un fotosensor, como habrán podido adivinar). Sabíamos o imaginábamos que existía un modelo de lápiz óptico que hacía la detección “por hardware”, mucho más rápido, sin ningún rectángulo blanco, y que por lo tanto permitía dibujar a mano alzada, entre otras cosas. Pero ese lápiz “real time”, si existía, no estaba a nuestro alcance. En aquella época, sin internet, nos enterábamos de la existencia de algo en las revistas, pero para tener una idea real de cómo funcionaba un producto, la única opción era que un amigo se lo comprara, e ir a su casa a verlo. En este caso no había nada para comprar.

    Yo había hecho un curso de “Radio y Televisión”, en lo que en aquella época se llamaba “Instituto Tecnológico ORT”. Todavía había televisores en blanco y negro (yo usaba uno para mi computadora) y obviamente los televisores eran CRT, a viejo y querido tubo de rayos catódicos. Yo tenía muy fresco el tema del “barrido” (scan) de la pantalla en esos televisores, y entonces se me ocurrió una idea casi obvia: implementar un contador digital, alimentado por un clock (o sea un timer/counter, como los que tiene la Arduino ahora), resetearlo con alguna señal de sincro de video, y que el fotodiodo del lápiz óptico disparara el clock del óctuple latch, almacenando el estado del contador en el preciso momento en que el barrido de la pantalla pasara por la posición del lápiz. El dato se podría leer luego desde el programa, y voilà, teníamos la posición del lápiz instantáneamente, sin necesitar la ayuda de ningún rectángulo blanco. La única duda que yo tenía era si en el “slot” de expansión de la Spectrum había alguna señal que nos pudiera servir de sincro de video. Resultó que sí, que había más de una…

    Le comenté esta idea a Alvaro, y él decidió que teníamos que hablar con @Eduardo Ricobaldi. Ricobaldi era hijo de una familia amiga de los Cassinelli, era un poco mayor que nosotros, tendría unos 20 años, y era nuestro ídolo: un gurú tecnológico que, a diferencia de nosotros, tenía estudios formales, había estudiado “de verdad” electrónica. Le contamos la idea a Ricobaldi, y éste, en principio, no mostró un gran entusiasmo. Su respuesta fue algo como “mmm, podría ser”. A los pocos días, sin embargo, apareció con un prototipo real del circuito, hecho en una protoboard, y que funcionaba! Eduardo diseñó las partes de procesamiento analógico de la señal del fotosensor (el “peak detector”) algo que nosotros no habríamos podido hacer en aquel momento.

    Eso fue el comienzo de lo que hoy llamaríamos un “emprendimiento”. Ricobaldi decidió que este producto había que fabricarlo y venderlo. Lo bautizamos “Loptic50”. ¿Por qué 50? Porque todos los productos tecnológicos tienen que tener un número, y 50 era el número de lecturas por segundo que nuestro lápiz podía realizar. Nuestra empresa se llamó “RGC hard-software” (Ricobaldi-Gindel-Cassinelli). Eduardo hizo casi todo el trabajo: se encargó de la gestión comercial, de comprar los componentes, de la presentación del producto, las cajas, los lápices, todo el laburo “imposible” (para nosotros). Alvaro desarrolló casi todo el paquete de software que acompañaría al producto (una parte la hizo Eduardo también). Eran varias aplicaciones, entre ellas un programa de gráficos (una especie de Corel) totalmente programado en assembler desde 0 (¿librerías? what?) y que estaba al nivel de los mejores programas de diseño gráfico para Spectrum de la época, como el ArtStudio. Mi modesta tarea consistió en armar los lápices, soldar los componentes, etc., y tuve también una mínima participación en el diseño del circuito y el PCB, tareas que fueron principalmente de Eduardo, como casi todo el resto. [nota 2019: para los que se colgaron con la parte técnica, Eduardo también hizo una pieza muy importante del software: la rutina en assembler, de bajo nivel (todo el assembler es recontra bajo nivel, pero esto es más bajo todavía) que efectuaba la lectura de la placa y en efecto calculaba la posición del lápiz; es decir, lo que hoy llamaríamos el “driver”].

    Y bueno, colorín colorado, en unos pocos meses, ya a mediados de 1988 el producto estaba en las vidrieras de Maico, la principal casa de Spectrum de aquel momento (quedaba en la galería “Andfor”, en frente a la plaza del Entrevero). Habremos fabricado 15 o 20 unidades, yo no recuerdo bien, y Ricobaldi logró meterlas ahí. No sé cómo lo hizo, ni quise averiguarlo, pero la cosa no termina ahí: ¡hubo ganancias! En efecto, yo cobré algo así como 75 dólares, de la nada, sin haber puesto un peso (que, por otro lado, no tenía) y eso era un montón de plata. Poco tiempo después se terminó la moda del ZX-Spectrum, casi de golpe, y nosotros nos dispersamos como lo hace cualquiera a esa edad, por lo que no hubo segunda partida de Loptic, y tampoco hubo más RGC Hard-Software. Pero queda el recuerdo de aquella proeza, que a nosotros mismos nos sorprendió en su momento.

    Hoy estoy trabajando en electrónica nuevamente. Más precisamente, en un lugar donde se escuchan muy seguido palabras como “emprendedor, incubadora, aceleradora, capital semilla, idea, proyecto, prototipo, producto, validación, mercado, innovación, startup, fondos, ANII, XX.000 USD, tecnología, investigación, desarrollo, testing” etc., y donde se palpa a diario la enorme distancia que existe entre una idea –un prototipo, incluso– y un producto final, listo para vender. Son procesos largos, que pueden tomar varios años, costosos, y que en la mayoría de los casos no cristalizan. Y esto puede pasar ya con un producto que conste únicamente de software, pero es casi seguro que ocurra cuando el proyecto involucra hardware.

    Visto desde esta perspectiva, no puedo dejar de maravillarme con Loptic50. Estamos hablando, primero que nada, de un producto real, una cosa que si alguien la compraba, la llevaba a su casa y la conectaba, era seguro que le iba a funcionar e iba a poder usarla. Eso, en un artículo tecnológico que combina electrónica y software, no lo hace cualquiera. Por otro lado, éramos unos chiquilines, no había internet, no había herramientas para programar, librerías, debuggers, simuladores, nada; se programaba en assembler, o sea directamente con las instrucciones del CPU. La idea era buena, no era una super-innovación, pero tampoco una trivialidad. Era, en realidad, un gran “improvement” de un producto existente, con una implementación novedosa a nivel ingenieril. Un producto competitivo, además, con un paquete de software de buen nivel. La presentación física era lo más flojo, pero safaba; considerar que no había printers 3D, ni nada, ¡no había nada! Lo hicimos con nada, ni capital semilla, ni incubación, ni estudio de mercado, etc.; en unos pocos meses, idea, prototipo, producto y lo logramos vender.

  2. Agrego una cosa más:

    El relato de Eduardo es mucho más exacto y más lleno de detalles técnicos que el mio, pero hay una única imprecisión, que es el origen de ese prototipo que se ve en la foto. Ese prototipo todavía existe, lo tiene Alvaro, y no era de los de la cajita verde. Ese fue anterior, fue realmente la primera unidad que se fabricó, era más grande y no tenía caja, sino que era simplemente un bloque de resina poliéster hecho con un molde de madera. Las “letras de estaño” las hice yo, con un estaño grueso previamente “cuadratizado”, y lo pegué en la pared del molde. Es tan viejo, que se llamaba “Loptic 5048”, después le sacamos el “48” porque era demasiado nerd.

Deja un comentario