TinyBASIC: cómo la respuesta a una costosa y pesada versión de BASIC dio nacimiento al CopyLeft

Para aquellos más jóvenes el BASIC no existe pero les juro que era un lenguaje de programación escencial en los comienzos de la informática. (Comencé con BASIC allá por 1987 con el Color BASIC!)

Fue la base con la que muchos empezamos a programar y hoy en día podría ayudar a muchos a entender la informática mucho mejor que otras ofertas más modernas y complejas.

Como su nombre lo indica era básico pero casi todas las estructuras imprescindibles de programación estaban ahí. Pero estamos hablando de una época en la que la memoria RAM era escasa y carísima ¿Cuánta memoria quedaba para un programa? Muy poca...

BASIC proviene de "Beginners' All-purpose Symbolic Instruction Code" y es un lenguaje extremadamente sencillo pensado para empezar a programar y entender conceptos esenciales como variables, condiciones, ciclos, etc.

Fue diseñado por John G. Kemeny y Thomas E. Kurtz en... ¡1964! en el Darmouth College en los EEUU. Los lenguajes pueden ser creados sin necesidad de una computadora, es una idea de cómo debe funcionar ante cada instrucción y luego se puede programar una versión de este para cada procesador.

En aquellos tiempos no existía algo así como un sistema operativo moderno, mucho se programaba directamente para tal o cual arquitectura adaptándose a las características del hardware así que no era fácil copiar el código fuente de un lado para ejecutarlo en otro. Por ende era normal que existieran mil interpretaciones de una misma idea y millares de implementaciones: pero eso era genial.

BASIC como lenguaje, en cambio, permitía bastante uniformidad entre distintas plataformas, el programa en código de BASIC era similar entre distinto hardware y era interpretado por lo que uno podía pasar una idea de una plataforma a otra y más o menos (luego de algún que otro ajuste) adaptarla y funcionaría.

Así aparecieron "dialectos" de BASIC donde algunos implementaban todas las características de éste o agregaban alguna propia del hardware para el que había sido programado o restaban las que consumían muchos recursos o eran imposibles de implementar por falencias propias de la computadora.

En 1975 un joven e inquieto programador prometió una versión de BASIC para la MITS Altair 8800. El Altair BASIC de Micro-Soft salió de los teclados furiosos de Bill Gates y Paul Allen pero de los 4Kb de memoria RAM de la Altair consumía casi todo.

Dejaba apenas 790 bytes para el programador, el resto era ocupado por el BASIC que luego pasó a llamarse Microsoft BASIC pero ese no era el único problema: Bill Gates pretendía cobrar USD 150 por cada copia y los otros nerds de la época solían realizar copias sin pagar un céntimo.

Pero ¿Por qué no crear un propio BASIC? Al fin y al cabo uno podía "luchar" contra esa pretensión de Bill Gates con una propuesta mejoradora y que aprovechara mejor los recursos de la Altair.

Así en la revista People's Computer Company (PCC) de 1975 Dennis Allison presentó la especificación del TinyBASIC. Lo genial es que el autor en vez de presentar un código les dio las herramientas fundamentales para que cualquiera creara su intérprete para la plataforma que tuviera a mano e invitó a todo developer, para publicar en los siguientes números de la revista, que enviaran sus propias versiones en Assembler para cada procesador.

Li-Chen Wang presentó el Palo Alto Tiny BASIC de apenas 1.77k para el procesador Intel 8080 y fue quien acuñó un término muy particular para la idea de compartir código de Allison: CopyLeft.

Obviamente en referencia al CopyRight de Gates, como una burla pero que quedó, en su código, además de su nombre, llevaba una hermosa frase: "@COPYLEFT ALL WRONGS RESERVED".

En esa primera tirada de dialectos se sumaron intérpretes para el ya mencionado Intel 8080, el National Semiconductor SC/MP, el Motorola 6800 y el 68000 con tamaños que iban desde 1.75Kb (MINOL de Eric T. Mueller para el 8080) hasta 4Kb (NIBL de Mark Alexander y Steve Leininger para el SC/MP) y todos fueron poco a poco publicados en el newsletter.

El Newsletter pasó de ser el People's Computer Company a el Dr. Dobb's Journal que se publicó hasta 2009 inclusive.

Todos estos programadores eran parte del famoso "Homebrew Computer Club" donde Steve Wozniak también tuvo que tomar ideas para implementar su ROM de BASIC para la Apple I y el Tiny BASIC de Li-Chen Wang se instaló en la primera TRS-80 prototipo antes de entrar a producción para demostrar que servía.

El Tiny BASIC y tantos otros de estos dialectos eran extremadamente simples para poder encajar en tan poca memoria, las variables tenían apenas un caracter de largo en el nombre así que iban de la A a la Z, no existían strings de texto en un input, toda la especificación de la gramática es así de simple:

    line ::= number statement CR | statement CR
 
    statement ::= PRINT expr-list
                  IF expression relop expression THEN statement
                  GOTO expression
                  INPUT var-list
                  LET var = expression
                  GOSUB expression
                  RETURN
                  CLEAR
                  LIST
                  RUN
                  END
 
    expr-list ::= (string|expression) (, (string|expression) )*
 
    var-list ::= var (, var)*
 
    expression ::= (+|-|&epsilonGuiño term ((+|-) term)*
 
    term ::= factor ((*|/) factor)*
 
    factor ::= var | number | (expression)
 
    var ::= A | B | C ... | Y | Z
 
    number ::= digit digit*
 
    digit ::= 0 | 1 | 2 | 3 | ... | 8 | 9
 
    relop ::= < (>|=|&epsilonGuiño | > (<|=|&epsilonGuiño | =

    string ::= " ( |!|#|$ ... -|.|/|digit|: ... @|A|B|C ... |X|Y|Z)* "
	




La especificación aclaraba que lo ideal era implementarlo como una máquina virtual así el intérprete de BASIC sería más fácil de implementar y con menos memoria pero sabiendo que lo haría muy lento, algo que no era un problema en 1975 donde estaban dispuestos a esperar :P

Después cada uno buscó la mejor manera de implementarlo para su hardware, no era una obligación pero era una interesante novedad.

Tiny BASIC era un subset del Dartmouth BASIC con muchas limitaciones que le permitían ser tan pequeño y aprovechar toda la memoria RAM pero, además, lo más llamativo fue esta novedosa idea de compartir el código y el concepto total, que cada uno publicase ese código sin reservarse ningún derecho, simplemente entregándolo al mundo.

Una temprana reacción al criterio Gates que era lo opuesto, buscaba cerrar todo y comportarse como una corporación desde el inicio. Lo genial es que muchos años después volviese con todo, evolucionara de la mano de gente como Richard Stallman y derivara en el Software Libre.

El copyleft como reacción natural ante el secretismo y el recelo corporativo del software propietario... y la memoria RAM, claro.


Si algún día les da por volver a tirar unas líneas de BASIC pueden usar el QB64 que está genial para eso y anda en cualquier sistema operativo.

Si te gustó esta nota podés...
Invitame un café en cafecito.app


Otros posts que podrían llegar a gustarte...

Comentarios

  • Seba     09/06/2021 - 10:43:35

    Buen post retronerd Fabio! No sabía de dónde provenía el término copyleft.
    Yo soy uno de los que se inició con basic, en mi caso msx basic en una Talent dpc-200 del ´87.
    Saludos!

  • DrMato     09/06/2021 - 13:09:13

    Una de las pantallas más hermosas de la historia es la del C64...

    Soy de los que creció programando con su Basic hasta que me aburrí de no tener a quién encajarle los "programones" que hacía :D

    Esas épocas la verdad que hubiese dado gusto vivirlas... tantas ideas, tantas otras ideas para mejorar las anteriores... ¡esperar una revista para saber qué software nuevo habían desarrollado otras personas!

    Nada, me pegó una nostalgia :D

  • Alfredo     09/06/2021 - 13:45:32

    Nostalgia igual... jejej. yo tambien con una Talent dpc-200 por el 86/87 .. Todavia la tengo casi casi como nueva... hemos pasado muchas etapas informáticas en pocos años..

  • Sebastian     09/06/2021 - 15:37:34

    muy bueno, siempre crei que copyleft are un invento de RMS

  • Mario     09/06/2021 - 21:51:56

    Stallman andaba con las maquinas lisp para el sistema de misiles de Reagan. Si hubiera sido otra persona, quién sabe a donde habría llegado con los proyectos de defensa.

    Eligió altruismo frente a la privatización que tuvieron sus proyectos en la universidad.

  • Javier     09/06/2021 - 23:42:29

    Tambien aprendi basic en una Talent MSX... era el MS-BASIC.
    Cuantos recuerdos!

  • Leo FG     10/06/2021 - 07:48:32

    Yo programe con Qbasic de....Microsoft!!! En el secundario. Teníamos una copia rara de windows, bah, ahora lo veo a retrospectiva y era un launcher de aplicaciones en ventanas, vos agarrabas una ventanita, apuntabas al exe que querías que ejecute y listo, todo bajo DOS. Que epocas.

  • Patricio     10/06/2021 - 09:15:32

    Ver la pantalle de la C64 advirtiéndote que tenías "38911 bytes libres" es la cuota de nostalgia necesaria para encarar el día. Muy buen post Fabio.
    Saludos

  • Jorge     10/06/2021 - 16:58:31

    No entendi un joraca, soy un neofito de la programación pero agradezco a toda esa gente maravillosa que hacen posible disfrutar de mi pc/celuGuiño

    • Fabio Baccaglioni     10/06/2021 - 17:24:31

      jaja bueno, BASIC es un lenguaje tan simple que se inventó para que pudiesen usarlo los que no entendían una goma de nada, así que hasta por ahí te sirve :P

  • Gustavo V     11/06/2021 - 12:19:45

    Que hermosos recuerdos.
    Empece con una Talent MSX con MS-Basic, que aprendi a programar con el manual de usuario... que tiempos.

    Y tambien supe ser subscriptor de la Dr Dobbs, tenia casi 3 años, en alguna inundacion se perdieron todas

  • Luis Ros     11/06/2021 - 14:24:48

    Texas TI 99/4A
    La compu, que tenía un básic que use.
    En veZ de pelear, organizar para que se liberen las patentes luego de cierto tiempo.
    La idea, la misma, que cada uno intérprete e implemente cosas nuevas
    Gracias

  • José Zanni     11/06/2021 - 20:16:24

    ¡¡Que historia mas interesante!!! no conocía este TinyBASIC ni el origen del CopyLeft.

    Yo también aprendí con BASIC, primero en un curso con TI99, luego comprandome una CZ 1500 y finalmente con la C64.

  • José Zanni     11/06/2021 - 20:22:23

    Te paso un listadito de gazapos :P

    - SENCILLO: y es un lenguaje extremadamente senciillo
    - ESENCIALES: escenciales
    - UNO: Al fin y al cabo un podía "luchar"
    - ERAN/SIMPLES: estos dialectos era extremadamente simple

  • Patricio     12/06/2021 - 00:07:53

    Sinclair ZX81!!! Haciendo programitas para automatizar cálculos de una compañía de seguros. :D

  • CoYo     12/06/2021 - 10:54:53

    C64 y facturaba copiando jueguitos! (en realidad tenia una C128, pero aca ni existían)
    Pasar del BASIC al assembler (el código máquina, como se denominaba) con el mapa de memoria de la C64 y todas sus subrutinas impreso (del tamaño de una guia telefónica) fué "el salto" (aunque nunca terminé de aprender, pero choreaba y modificaba intros de los jueguitos)
    Que buenas épocas. Disfrutábamos de cada uno de los 8 bits!

  • Mariano Romero     12/06/2021 - 13:33:33

    He visto Visual Basic... ¿Es lo mismo?

  • GAK     15/06/2021 - 13:35:45

    Mediados de los ´80, últimos 2 años de secundaria. Descubrí que había sala de computación y que se podía usar sacando turno. Pasé por la biblioteca y leí todo el libro en tiempo récord. Saqué turno, y en su momento me senté frente a la majestuosa TRS-80, esperando. Al primero que pasó le pregunté de dónde se encendía.

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https

Negrita Cursiva Imagen Enlace


Comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador. Los comentarios son filtrados por ReCaptcha V3.