stringtranslate.com

Pequeño BASIC

Tiny BASIC es una familia de dialectos del lenguaje de programación BASIC que pueden caber en 4 KB o menos de memoria . Tiny BASIC fue diseñado por Dennis Allison y la People's Computer Company (PCC) en respuesta a la carta abierta publicada por Bill Gates en la que se quejaba de que los usuarios pirateaban Altair BASIC , que se vendía por 150 dólares. Tiny BASIC estaba destinado a ser una versión completamente libre de BASIC que se ejecutaría en los mismos microordenadores iniciales .

Tiny BASIC se publicó como una especificación, no como una implementación, en la edición de septiembre de 1975 del boletín PCC. El artículo invitaba a los programadores a implementarlo en sus máquinas y enviar la implementación en lenguaje ensamblador resultante para su inclusión en una serie de tres boletines planificados. Li-Chen Wang , autor de Palo Alto Tiny BASIC, acuñó el término " copyleft " para describir este concepto. La respuesta de la comunidad fue tan abrumadora que el boletín se relanzó como Dr. Dobb's Journal , la primera publicación periódica regular centrada en el software de microcomputadoras. Dr. Dobb's duró en forma impresa durante 34 años y luego en línea hasta 2014, cuando su sitio web se convirtió en un archivo estático.

El pequeño tamaño y el código fuente gratuito hicieron que estas implementaciones fueran invaluables en los primeros días de las microcomputadoras a mediados de la década de 1970, cuando la RAM era cara y el tamaño típico de la memoria era de solo 4 a 8 KB. Si bien la versión mínima de Altair BASIC de Microsoft también se ejecutaba en máquinas de 4 KB, dejaba solo 790 bytes libres para los programas BASIC. Más espacio libre era una ventaja significativa de Tiny BASIC. Para cumplir con estos estrictos límites de tamaño, los dialectos de Tiny BASIC generalmente carecían de una variedad de características que se encuentran comúnmente en otros dialectos, por ejemplo, la mayoría de las versiones carecían de variables de cadena , carecían de matemáticas de punto flotante y solo permitían nombres de variable de una sola letra.

Hoy en día todavía se utilizan pequeñas implementaciones de BASIC para programar microcontroladores como el Arduino .

Historia

Altair BÁSICO

Una cinta de papel que contiene la versión ampliada de 8K de Microsoft BASIC

Los primeros microordenadores , como el MITS Altair 8800 , no tenían por lo general ninguna entrada/salida (E/S) integrada más allá de los interruptores del panel frontal y las lámparas LED . Para que fuera útil, generalmente se requería la adición de una tarjeta de expansión de E/S y el uso de algún tipo de terminal . En aquella época, los terminales basados ​​en vídeo eran muy caros, costaban mucho más que el ordenador, por lo que muchos usuarios recurrían a dispositivos mecánicos como el teletipo modelo 33. El modelo 33, como la mayoría de los teletipos de la época, incluía un sistema de perforación de cinta destinado a permitir a los operadores grabar previamente sus mensajes y luego reproducirlos a "alta velocidad", más rápido de lo que la mayoría de las personas podían escribir el mensaje en vivo. Para los primeros microordenadores, esto proporcionaba un formato de almacenamiento de datos informáticos conveniente , que permitía a los usuarios escribir programas en cinta de papel y distribuirlos a otros usuarios. [1]

El Homebrew Computer Club se reunió por primera vez en marzo de 1975, y sus miembros pronto utilizaron las reuniones para intercambiar software en cintas perforadas. En la reunión de junio, desapareció una cinta que contenía una versión pre-lanzada de Altair BASIC . La cinta fue entregada a Steve Dompier, quien se la pasó a Dan Sokol, quien tenía acceso a una perforadora de cinta de alta velocidad. En la siguiente reunión, aparecieron 50 copias de Altair BASIC en cinta de papel en una caja de cartón. [2] Cuando Ed Roberts , fundador de MITS, se enteró de esto, declaró: "Cualquiera que esté usando una copia robada de MITS BASIC debería identificarse como lo que es, un ladrón". [3] Bill Gates lo hizo más formal, escribiendo " Una carta abierta a los aficionados ", quejándose de que "Como la mayoría de los aficionados deben saber, la mayoría de ustedes roban su software". [4]

Pequeño BASIC

La queja no fue bien recibida. Entre las muchas respuestas, Bob Albrecht, otro miembro de Homebrew y fundador de People's Computer Company (PCC), sintió que la mejor respuesta sería producir su propio BASIC que fuera completamente libre de usar por cualquiera. Se acercó a Dennis Allison , un miembro de la facultad de Ciencias de la Computación de la Universidad de Stanford , para escribir una especificación para una versión de BASIC que cupiera en 2 a 3 kilobytes de memoria. [a] Para ayudar a la portabilidad , el diseño se basó en un lenguaje intermedio (IL), un intérprete para el intérprete, lo que significaba que solo una pequeña parte del código total tenía que ser portado.

El diseño inicial de Allison fue publicado en la edición de septiembre de 1975 del boletín del PCC, junto con una versión Intel 8080 del intérprete IL. El artículo instaba a los programadores a implementar el diseño en su ordenador y enviar la versión resultante en lenguaje ensamblador al PCC. Expresaron sus planes de publicar tres boletines especiales que contuvieran estas versiones enviadas por los usuarios, junto con correcciones de errores, programas escritos en el nuevo BASIC y sugerencias y mejoras. El concepto ganó más notoriedad cuando fue republicado en la edición de enero de 1976 del Grupo de Interés Especial sobre Lenguajes de Programación de la ACM . [5] Las propuestas llegaron en masa. Entre las primeras versiones notables estaba Tiny BASIC Extended de Dick Whipple y John Arnold, que se ejecutaba en 3K de RAM, añadía bucles FOR...NXT y permitía una única matriz numérica. Evitaron el uso del IL y lo escribieron directamente en código de máquina, utilizando octal . [6]

El primero de los tres boletines planeados, con el título "Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Running Light Without Overbyte", se publicó en enero de 1976. [6] Comienza con una nota de Albrecht, bajo el seudónimo "the dragon", sugiriendo que tres ediciones no serían suficientes y preguntando a los lectores si les gustaría que continuara. También reimprimió el artículo original sobre Tiny BASIC de PCC, incluyó la lista completa de Extended TB e incluyó una serie de pequeños programas BASIC que incluían consejos y trucos de Allison. [7] La ​​respuesta al primer número fue tan impresionante que la introducción al segundo número decía que ya habían decidido continuar publicando el nuevo boletín bajo el nombre simplificado Dr. Dobb's Journal . Durante los siguientes números, se publicaron versiones adicionales del lenguaje y comenzaron a aparecer artículos similares en otras revistas como Interface Age .

Desparramar

La fuente monoespaciada dice "Tiny basic para Intel 8080, versión 2.0 de Li-Chen Wang, modificado y traducido a mnemónicos de Intel por Roger Rausklob, 10 de octubre de 1976. @ Copyleft, todos los errores reservados".
El uso de "Copyleft; All Wrongs Reserved" en 1976 [8]

A mediados de 1976, los intérpretes Tiny BASIC estaban disponibles para los procesadores Intel 8080 , Motorola 6800 y MOS Technology 6502. Este fue un precursor del desarrollo colaborativo de la comunidad de software libre antes de que Internet permitiera una transferencia fácil de archivos, y fue un ejemplo de un proyecto de software libre antes del movimiento del software libre . [9] Los aficionados a las computadoras intercambiaban cintas de papel, casetes o incluso reescribían los archivos de las listas impresas. [10]

Jim Warren, editor de Dr. Dobb's , escribió en el boletín de ACM Programming Language de julio de 1976 sobre las motivaciones y los métodos de este exitoso proyecto. Empezó diciendo: "Hay una alternativa viable a los problemas planteados por Bill Gates en su furiosa carta a los aficionados a la informática sobre el 'robo' de software. Cuando el software es gratuito, o tan barato que es más fácil pagar por él que duplicarlo, entonces no será 'robado'". La carta de Bill Gates se escribió para convertir el software en productos . El método alternativo era que un profesional experimentado hiciera el diseño general y luego esbozara una estrategia de implementación. Los aficionados expertos implementarían el diseño para una variedad de sistemas informáticos. Warren predijo que esta estrategia continuaría y se expandiría. [10]

El número de mayo de 1976 de Dr. Dobbs tiene el Palo Alto Tiny BASIC de Li-Chen Wang para el 8080. La lista comienza con el título, el nombre del autor y la fecha, pero también tiene "@ COPYLEFT ALL WRONGS RESERVED". [11] Un miembro del Homebrew Computer Club , Roger Rauskolb, modificó y mejoró el programa de Wang y esto se publicó en el número de diciembre de 1976 de la revista Interface Age . [8] Roger agregó su nombre y conservó el Aviso de COPYLEFT.

Descripción

Conceptos básicos

El diminuto BASIC fue diseñado para utilizar la menor cantidad de memoria posible, y esto se refleja en la escasez de características y detalles de su sistema de interpretación . Los primeros microordenadores carecían de RAM y almacenamiento secundario para un compilador BASIC , lo que era más típico de los sistemas de tiempo compartido.

Como la mayoría de los BASIC de la época, Tiny Basic era interactivo, ya que el usuario tecleaba instrucciones en una línea de comandos. Como las microcomputadoras de la época se utilizaban a menudo con máquinas de teletipo o terminales "tontas", no era posible editar directamente el texto existente y, en su lugar, el editor utilizaba caracteres de eliminación, a menudo la barra invertida, para indicar dónde retrocedía el usuario para editar el texto existente.

Si el usuario escribía una instrucción en la línea de comandos, el sistema la examinaba para ver si comenzaba con un número. Si no era así, la línea se analizaba y se operaba inmediatamente, generando potencialmente una salida a través de PRINT. Esto se conocía como "modo directo".

Si la línea se ingresaba con un número inicial, el número se convertía del formato decimal, como "50", a un valor de 8 bits, en este caso, $32 hexadecimal . Este número se usaba como índice en un área de almacenamiento similar a una matriz donde el resto de la línea se almacenaba exactamente en el formato en el que se escribía. Cuando el usuario escribía LISTen la línea de comandos, el sistema recorría la matriz, convertía el número de línea nuevamente a formato decimal y luego imprimía el resto del texto en la línea.

Cuando un programa estaba presente en la memoria y el usuario teclea el RUNcomando, el sistema entra en "modo indirecto". En este modo, se establece un puntero para que apunte a la primera línea del programa, por ejemplo, 10 ( $0A hex ). El texto original de esa línea se recupera del almacén y se ejecuta como si el usuario lo acabara de teclear en modo directo. Luego, el puntero avanza a la siguiente línea y el proceso continúa.

Gramática formal

La gramática se enumera a continuación en la forma Backus–Naur , casi exactamente como se especificó en la Nota de diseño. [12] En la lista, un asterisco (" *") denota cero o más del objeto a su izquierda, excepto el primer asterisco en la definición de " term", que es el operador de multiplicación; los paréntesis agrupan objetos; y un épsilon (" ε") significa la cadena vacía. Como es común en la notación de gramática del lenguaje de computadora, la barra vertical (" |") distingue las alternativas, al igual que su inclusión en líneas separadas. El símbolo " CR" denota un retorno de carro (generalmente generado por la tecla "Enter" de un teclado). Un BREAK desde la consola interrumpirá la ejecución del programa.

 línea  :: = número declaración CR | declaración CR declaración :: = PRINT lista-expr IF expresión relop expresión THEN declaración GOTO expresión INPUT lista-var LET var = expresión GOSUB expresión RETURN CLEAR LIST RUN END lista-expr :: = ( cadena | expresión ) ( , ( cadena | expresión ) ) * lista-var :: = var ( , var ) * expresión :: = ( +|-|ε ) término (( +|- ) término ) * término :: = factor (( * | / ) factor ) * factor :: = var | número | ( expresión ) var :: = A | B | C ... | Y | Z número :: = dígito dígito * dígito :: = 0 | 1 | 2 | 3 | ... | 8 | 9 relop :: = < ( >| =) | > ( <| =) | =                                                                                                               cadena  :: = " ( |!|#|$ ... -|.|/|dígito|: ... @|A|B|C ... |X|Y|Z)* " 

Tenga en cuenta que la cadena no se definió en la nota de diseño.

Esta sintaxis, tan simple como era, agregó una innovación: GOTOy GOSUBpodía tomar una expresión en lugar de solo un número de línea, proporcionando un GOTO asignado [13] en lugar de la declaración switch de GOTO/GOSUB ... OF ..., una estructura que entonces era compatible con HP Time-Shared BASIC y anterior a ON ... GOTO. La sintaxis que permitía IF-THEN statement(en lugar de solo un número de línea a la cual ramificarse) aún no era compatible con Dartmouth BASIC en ese momento, pero había sido introducida por Digital [14] y copiada por Microsoft.

Implementación en una máquina virtual

La nota de diseño especificaba una máquina virtual , en la que el intérprete Tiny BASIC se ejecutaba a su vez en un intérprete de máquina virtual. La idea del diseñador de utilizar una máquina virtual de aplicaciones se remonta a Val Schorre (con META II , 1964) y Glennie (Syntax Machine). La elección de un enfoque de máquina virtual economizó espacio de memoria y esfuerzo de implementación, aunque los programas BASIC que se ejecutaban en ella se ejecutaban con cierta lentitud. [15]

Entre los dialectos que utilizaban la máquina virtual se encontraban Tiny BASIC Extended, Tiny BASIC de Tom Pittman [16] y NIBL. Otros dialectos como Denver Tiny BASIC (DTB) y Palo Alto Tiny BASIC eran intérpretes directos. Algunos programadores, como Fred Greeb con DTB, trataban el programa IL (lenguaje interpretativo) como pseudocódigo para el algoritmo que se iba a implementar en lenguaje ensamblador; Denver Tiny BASIC no utilizaba una máquina virtual, pero sí seguía de cerca el programa IL.

Este es un extracto representativo del programa IL de 120 líneas:

S1: TST S3 , 'IR' ; ¿IR A O SUBIR? TST S2 , 'A' ; SÍ... A, O... SUB LLAMADA EXPR ; TERMINAR ETIQUETA ; ERROR SI CR NO ES SIGUIENTE XFERIR ; CONFIGURAR Y SALTAR S3: TST S8 , 'IMPRIMIR' ; IMPRIMIR.                

Un patrón común en el programa es probar una palabra clave o parte de una palabra clave y luego actuar en base a esa información. Cada prueba es una afirmación sobre lo que sigue en el búfer de línea. Si la afirmación falla, el control salta a una etiqueta posterior (generalmente buscando una nueva palabra clave o token). Aquí el sistema avanza su cursor de búfer sobre cualquier espacio y prueba GO y si no lo encuentra, salta a la línea S3 . Si lo encuentra, la ejecución continúa con el siguiente comando IL. En este caso, el sistema prueba TO y salta a la línea S2 si falla (una prueba SUB para ver si en cambio se trata de un comando GOSUB ). Si pasa, el control continúa; en este caso, llama a una subrutina IL que comienza en la etiqueta EXPR , que analiza una expresión. En Tiny BASIC, (un GO TO calculado) es tan legal como y es la alternativa al ON-GOTO de implementaciones BASIC más grandes. La subrutina EXPR coloca el resultado de la expresión en la pila aritmética (en este caso, el número de línea). DONE verifica que no haya otro texto después de la expresión y, si lo hay, da un error. XFER extrae el número de la pila y transfiere la ejecución (GOES TO) al número de línea correspondiente, si existe.GOTO X*10+100GOTO 100

La siguiente tabla proporciona una lista parcial de los 32 comandos de la máquina virtual en la que se escribió el primer intérprete Tiny BASIC. [17]

TST lbl , cadena
Si la cadena coincide con la línea BASIC, avance el cursor sobre la cadena y ejecute la siguiente instrucción IL; si la prueba falla, ejecute la instrucción IL en la etiqueta lbl
Llamar lbl
Ejecutar la subrutina IL comenzando en lbl ; guardar la dirección IL después de CALL en la pila de control
HECHO
Informar un error de sintaxis si después de eliminar los espacios en blanco iniciales el cursor no está posicionado para alcanzar un retorno de carro
Transferir
Pruebe que el valor en la parte superior de la pila AE esté dentro del rango. Si no es así, informe un error. Si es así, intente colocar el cursor en esa línea. Si existe, comience la interpretación allí; si no, informe un error.
SALTAR lbl
Continuar la ejecución del IL en la etiqueta especificada
RTN
Regresar a la ubicación de IL especificada en la parte superior de la pila de control
PRS
Imprime caracteres del texto BASIC hasta las comillas de cierre, pero sin incluirlas
PRN
Número de impresión obtenido al hacer estallar la parte superior de la pila de expresiones
CEP
Inserte espacios para mover el cabezal de impresión a la siguiente zona
En línea
Envíe un CRLF [18] a la impresora

Tom Pittman , hablando del lenguaje de interpretación, dice: "El intérprete TINY BASIC fue diseñado por Dennis Allison como un analizador sintáctico descendente recursivo . Parte de la elegante simplicidad de este diseño se perdió con la adición de azúcar sintáctica al lenguaje, pero la forma básica permanece. El lenguaje de interpretación es especialmente adecuado para el análisis sintáctico descendente recursivo de TINY BASIC debido a la naturaleza recursiva general de sus procedimientos y la simplicidad de los tokens de TINY BASIC. El lenguaje de interpretación está optimizado de manera efectiva para la interpretación de TINY. La experiencia ha demostrado que la dificultad de agregar nuevas características al lenguaje está totalmente fuera de proporción con la naturaleza de las características. Por lo general, es necesario agregar subrutinas de lenguaje de máquina adicionales para admitir las nuevas características. A menudo, la dificultad supera las ventajas". [19]

Desviaciones del diseño

Al definir Tiny BASIC para el Homebrew Computer Club, Pittman escribió: "Tiny BASIC es un subconjunto adecuado de Dartmouth BASIC, que consta únicamente de los siguientes tipos de instrucciones: LET, PRINT, INPUT, IF, GOTO, GOSUB, RETURN, END, CLEAR, LIST, RUN. La aritmética se realiza únicamente con números enteros de 16 bits con los operadores + - * / y paréntesis anidados. Sólo hay 26 nombres de variable de una sola letra A, B, ...Z, y no hay funciones. No hay cadenas ni matrices... Tiny BASIC especifica números de línea menores que 256". [20] Luego pasó a describir su implementación: "Este lenguaje se ha ampliado para incluir las funciones RND, USR, y PEEK y POKE, lo que da al usuario acceso a todos los componentes de su sistema en el 6800 desde el programa BASIC".

Muchos implementadores incorporaron sus propias experiencias con HP Time-Shared BASIC o DEC BASIC-PLUS a sus diseños y relajaron la especificación formal del lenguaje Tiny BASIC. De las siete implementaciones destacadas publicadas en 1977:

Como alternativa a la tokenización, para ahorrar RAM, TBX, [21] DTB, [22] y MINOL [23] truncaron las palabras clave: PRfor PRINT, INfor INPUT, RETfor RETURN. Las palabras clave completas y tradicionales no fueron aceptadas. En contraste, PATB permitió las palabras clave tradicionales aceptadas, pero también permitió que cualquier palabra clave se abreviara a su cadena única mínima, con un punto final. Por ejemplo, PRINTse podía escribir P., aunque PR.y otras variaciones también funcionaban. Este sistema se mantuvo en el BASIC de nivel I para el TRS-80 , que usaba PATB, y también se encontró más tarde en Atari BASIC y el BASIC de varias computadoras de bolsillo Sharp . [24]

Dialectos

Los dialectos más destacados de Tiny BASIC fueron el Design Note original, Tiny BASIC Extended, Palo Alto Tiny BASIC y 6800 Tiny BASIC. Sin embargo, existían muchas otras versiones de Tiny BASIC.

Lista de dialectos destacados

Tiny BASIC se publicó por primera vez en un boletín de noticias de People's Computer Company , un boletín que luego se convirtió en Dr. Dobb's Journal , una revista de informática de larga trayectoria. Se publicaron alrededor de diez versiones en la revista.

TBX también se conocía como Texas Tiny BASIC. [33]

Tanto SCELBAL [34] como 6800 Tiny BASIC fueron anunciados en la revista pero no se publicó su código fuente.

Palo Alto Tiny BÁSICO

Una de las versiones más populares de Tiny BASIC fue Palo Alto Tiny BASIC, o PATB para abreviar, de Li-Chen Wang . PATB apareció por primera vez en la edición de mayo de 1976 de Dr. Dobbs , escrita en un lenguaje ensamblador personalizado con mnemotecnia no estándar. Esto condujo a más puertos que funcionaban con ensambladores convencionales en el 8080. [24] La primera versión del intérprete ocupaba 1,77 kilobytes de memoria y suponía el uso de una máquina de teletipo (TTY) para la entrada/salida del usuario . Una errata del artículo original apareció en la edición de junio/julio de Dr. Dobb's (Vol. 1, No 6). Este artículo también incluía información sobre cómo agregar dispositivos de E/S adicionales, utilizando el código para la pantalla de video VDM de Processor Technology como ejemplo.

Wang fue uno de los primeros en utilizar la palabra copyleft . En el aviso de distribución de Tiny BASIC de Palo Alto, había escrito "@COPYLEFT TODOS LOS ERRORES RESERVADOS". [35] Tiny BASIC no se distribuyó bajo ninguna forma formal de términos de distribución copyleft, sino que se presentó en un contexto en el que el código fuente se compartía y modificaba. De hecho, Wang había contribuido anteriormente con ediciones a Tiny BASIC Extended antes de escribir su propio intérprete. [21] Animó a otros a adaptar su código fuente y publicar sus adaptaciones, como con la versión de PATB de Roger Rauskolb publicada en Interface Age . [8] También publicó una tercera versión en el Reference Book of Personal and Home Computing de PCC . [36]

Uno de los cambios más notables en PATB es la incorporación del bucle FOR...NEXT . En el TB original, los bucles solo se podían implementar utilizando IFy GOTO. Al igual que en Microsoft BASIC , los límites superior e inferior del bucle se establecían al ingresar al bucle y no cambiaban durante el bucle, por lo que si uno de los límites se basaba en una expresión variable, cambiar la variable no cambiaba el límite. El STEPmodificador era opcional, como en MS. [24]

Otro cambio significativo fue la posibilidad de colocar varias sentencias en una sola línea. Por razones que no se explican, PATB utilizó el punto y coma ;para separar las sentencias, en lugar de los dos puntos ya habituales :.

Otros cambios incluyen la adición de una única matriz numérica, con el nombre de variable @, STOPademás de END, y el uso de #para los no iguales en las comparaciones, en lugar de <>. [24] [b]

PATB utilizaba palabras en lugar de números para los mensajes de error. Para reducir la cantidad de memoria necesaria, solo había tres mensajes y consistían en palabras individuales. El sistema respondía con WHAT?en el caso de errores de sintaxis, HOW?errores de tiempo de ejecución como GOTO a una línea que no existía o desbordamientos numéricos, y SORRYen el caso de problemas de falta de memoria. [24]

Wang también escribió un programa STARTREK en su Tiny BASIC que apareció en la edición de julio de 1976 del People's Computer Company Newsletter . [37] [38]

Más tarde adaptó el lenguaje a 3K Control Basic para Cromemco , agregando nombres de variables en el formato letra-dígito (por ejemplo, A0to Z9), funciones lógicas ( AND(), OR(), XOR()), un CALLcomando para ejecutar rutinas de lenguaje de máquina, más PRINTopciones de formato y otras ( GET()y PUT()en lugar de PEEKy POKE; funciones del puerto de E/S). [39]

Palo Alto Tiny BASIC fue adaptado para muchas otras implementaciones, incluyendo BASIC Nivel I (1977), BASIC para la computadora de bolsillo Sharp PC-1211 (1980) y Astro BASIC (1982, por Jamie Fenton ). [40]

MÍNOL

Escrito por un estudiante de secundaria, MINOL fue la única implementación que no admitía la Nota de diseño completa, ya que carecía de precedencia de operadores , solo tenía tres repeticiones (<, =, #), omitiendo GOSUBy RETURN. Solo admitía precisión de 8 bits sin signo (en contraste con la precisión de 16 bits con signo de todas las demás implementaciones) y números de línea de 0 a 254.

No se permitían espacios excepto en cadenas; !devuelve un número aleatorio, $antes de que una expresión cargue una cadena en esa dirección; OSvuelve al sistema operativo. La memoria era direccionable como si fuera una matriz bidimensional de bytes altos y bajos (por ejemplo, "(0,0)" a "(255,255)"); CALLejecuta una subrutina de lenguaje de máquina. [23]

Dialectos varios

Muchos dialectos aparecieron en varias otras publicaciones.

El número de mayo de 1977 presentó una ROM flexible que contenía MICRO-BASIC.

Inspirado por la petición de PCC de Tiny BASICs, Robert Uiterwyk escribió MICRO BASIC 1.3 para el sistema SWTPC 6800 , que SWTPC publicó en la edición de junio de 1976 del boletín de SWTPC. Uiterwyk había escrito a mano el lenguaje en una tableta legal. Más tarde amplió el lenguaje a 4K, añadiendo soporte para punto flotante; esta implementación fue única entre los intérpretes de BASIC al utilizar Decimal Codificado Binario con 9 dígitos de precisión, con un rango de hasta 10 99 , y al ser publicada de forma gratuita como un inserto de revista "Floppy ROM" . Una versión de 8K añadió variables de cadena y funciones trigonométricas . SWTPC vendió las versiones de 4K y 8K. En enero de 1978, Uiterwyk vendió los derechos del código fuente a Motorola . [41] [42]

Thomas F. Waitman escribió un Tiny BASIC en 1976 para los terminales Hewlett-Packard HP-2640 y HP-2645 (que utilizaban los procesadores Intel 8008 y 8080), que fue publicado en el Hewlett-Packard Journal .

En la edición de diciembre de 1976 de Interface Age se publicó el BASIC de LLL ( Lawrence Livermore Laboratory ), cuyo primer borrador fue desarrollado por Steve Leininger a partir de la especificación de Allison antes de que Leininger dejara National Semiconductor para irse a Tandy Corporation . El intérprete final fue desarrollado por John Dickenson, Jerry Barber y John Teeter en la Universidad de Idaho bajo contrato con LLL. Ocupaba 5K e incluía un paquete de punto flotante, desarrollado por David Mead, Hal Brand y Frank Olken. El programa fue puesto en el dominio público por LLL, que desarrolló el sistema bajo los auspicios de la Administración de Investigación y Desarrollo Energético de los Estados Unidos. [43]

Conceptos básicos del 4K

Altair BASIC , 4K BASIC, podría ejecutarse dentro de una máquina con 4 KB de RAM, dejando solo unos 790 bytes libres para el código del programa. [44] [45] La iniciativa Tiny BASIC comenzó en respuesta al cargo de $150 por Altair 4K BASIC.

En 1975, Steve Wozniak se unió al recién formado Homebrew Computer Club , que tenía como miembros a Li-Chen Wang (Palo Alto Tiny BASIC) y Tom Pittman (6800 Tiny BASIC). Wozniak concluyó que su máquina tendría que tener un BASIC propio, que, con suerte, sería el primero para el procesador MOS Technology 6502. Como el lenguaje necesitaba 4 KB de RAM, hizo que esa fuera la memoria mínima para el diseño. [46] Integer BASIC se publicó originalmente en Compact Cassette en 1976.

En 1977, Radio Shack (como se la conocía entonces) lanzó su primer ordenador, el TRS-80 , un sistema Z80 con BASIC de nivel I en una ROM de 4 KB. Steve Leininger, empleado de Tandy, había escrito el primer borrador del intérprete NIBL ​​(National Industrial Basic Language) para el SC/MP mientras trabajaba en National Semiconductor . [29] Como no pudo llevarse consigo ese código fuente, adaptó el Palo Alto Tiny BASIC de Li-Chen Wang para el prototipo original del TRS-80 Modelo I. Revisó exhaustivamente el intérprete, añadiendo soporte de punto flotante, gráficos simples en blanco y negro y READ/DATA/RESTOREdeclaraciones. [47]

Originalmente desarrollado en 1979, Sinclair 4K BASIC , escrito por John Grant, utilizó como definición de lenguaje el estándar Minimal BASIC del American National Standards Institute (ANSI) de 1978, pero era en sí mismo una implementación incompleta de 4 KB con solo aritmética de números enteros. [48]

Dialectos de microcontroladores

Se han adaptado pequeñas implementaciones de BASIC para el control de procesadores y microcontroladores como Arduino :

Implementaciones posteriores

En 2002, Emmanuel Chailloux, Pascal Manoury y Bruno Pagano publicaron un Tiny BASIC (sin GOSUB/ RETURN) en Desarrollo de aplicaciones con Objective Caml como un ejemplo de aplicación Objective Caml . [53]

En 2013, Alex Yang publicó una implementación en Python . [54]

En 2019, Sergei Kuznetsov publicó una versión en Ruby . [55]

También en 2019, Oscar Toledo Gutiérrez publicó bootBASIC, que cabe en los 512 bytes del sector de arranque de una máquina 8086/8088, lo que lo convierte en la implementación de BASIC más pequeña hasta el momento. Para lograr esto, el lenguaje elimina los operadores relacionales (las declaraciones IF funcionan con valores distintos de cero), limita las líneas de código a 19 caracteres o menos y no actualiza la pantalla cuando se presiona la tecla de retroceso. [56] Además, carece de GOSUB y RETURN, pero sí incluye una función RND (sin argumentos, que devuelve un valor entre 0 y 255). [57] El lenguaje utiliza una matriz para almacenar líneas de programa, lo que requiere 20.000 bytes para hacerlo. [58]

En 2023, Gordon Henderson publicó una implementación de Tiny Basic en ensamblador 6502. Está influenciada por NIBL ​​y puede ejecutarse en tan solo 3,5 KB de ROM, lo que requiere al menos 1 KB de RAM para el almacenamiento de datos y programas. Admite DO/UNTIL, FOR/NEXT, cadenas simples y peek/poke de memoria (byte o palabra de 16 bits), GOSUB/RETURN, CALL, RND con funciones para entrada y salida hexadecimal. [59]

Dialectos comparados

La siguiente tabla compara las características del lenguaje de las implementaciones de Tiny BASIC con las de otros BASIC destacados que los precedieron.

Véase también

Notas

  1. ^ En ese momento, el tamaño de memoria más común para el 8080 era 4 KB, que costaba cientos de dólares.
  2. ^ El hash también se utilizó para desigualdades en HP Time-Shared BASIC .

Referencias

Citas

  1. ^ Lancaster, Don (1976). "TV Typewriter Cookbook" (PDF) . págs. 210-211. Archivado (PDF) desde el original el 9 de octubre de 2022.
  2. ^ Manes y Andrews 1994, pág. 81.
  3. ^ Roberts, H. Edward (octubre de 1975). "Carta del presidente". Computer Notes . 1 (5). Albuquerque NM.: MITS: 3–4. Archivado desde el original el 23 de marzo de 2012.
  4. ^ Manes y Andrews 1994, pág. 91.
  5. ^ Allison, Dennis (julio de 1976). "Notas de diseño para TINY BASIC". Avisos SIGPLAN . 11 (7). ACM: 25–33. doi : 10.1145/987491.987494 . S2CID  18819472.
  6. ^ ab "Hoja de código TB". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light sin Overbyte . 1 (1). Diciembre de 1975.
  7. ^ Dobbs 1976, pág. 5.
  8. ^ abc Rauskolb, Roger (diciembre de 1976). "El pequeño BASIC de Palo Alto del Dr. Wang". Interface Age . 2 (1): 92–108.El código fuente comienza con las siguientes nueve líneas:
    ;*********************************;; PEQUEÑO BASICO PARA INTEL 8080; VERSIÓN 2.0; POR LI-CHEN WANG; MODIFICADO Y TRADUCIDO; A LA MNEMONICIDAD INTELIGENTE; POR ROGER RAUSKOLB; 10 DE OCTUBRE DE 1976; @COPYLEFT; TODOS LOS ERRORES RESERVADOS;;*********************************
  9. ^ "Hardware abierto: cómo y por qué funciona". IBM . El movimiento de software abierto fue fundado por Dennis Allison con su lanzamiento de Tiny BASIC en 1975.
  10. ^ ab Warren, Jim C. (julio de 1976). "Correspondencia". Avisos SIGPLAN . 11 (7). ACM: 1–2. ISSN  0362-1340.
  11. ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BASIC". Revista del Dr. Dobb sobre calistenia y ortodoncia informática, Running Light sin Overbyte . 1 (5): 12–25.El código fuente comienza con las siguientes seis líneas.
    PEQUEÑO BASIC PARA INTEL 8080VERSIÓN 1.0POR LI-CHEN WANG10 DE JUNIO DE 1976@COPYLEFTTODOS LOS ERRORES RESERVADOS
    La fecha de junio en el número de mayo es correcta. La revista estaba retrasada, por lo que se combinaron los números de junio y julio para ponerse al día.
  12. ^ Allison, Dennis (1976). "Construye tu propio BASIC". Diario del Dr. Dobb . Vol. 1, núm. 1. pág. 9.
  13. ^ Allison, Dennis (1976). "Guía de referencia rápida para Tiny BASIC". Dr. Dobb's Journal . Vol. 1, núm. 1. pág. 6.
  14. ^ Manual del lenguaje BASIC-PLUS (PDF). Maynard, Massachusetts: Digital Equipment Corporation. 1972. págs. 3–13.
  15. ^ Allen, Dennis. "TINY BASIC". Compañía de Computación del Pueblo . 4 (3).
  16. ^ Veit, Holger. "El pequeño BASIC 6800 de Tom Pittman" . Consultado el 2 de mayo de 2017 .
  17. ^ Diario del Dr. Dobb , volumen 1, número 1, 1976, pág. 12.
  18. ^ El CRLFsímbolo allí simboliza un retorno de carro seguido de un salto de línea .
  19. ^ Pittman, Tom. «Tiny BASIC Experimenter's Kit» (Kit de experimentación de BASIC diminuto) . Consultado el 9 de agosto de 2020 .
  20. ^ "TINY BASIC 6800" (PDF) . Archivado (PDF) del original el 2022-10-09 . Consultado el 13 de agosto de 2020 .
  21. ^ abc "Tiny BASIC Extended". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light sin Overbyte . 1 (2). Febrero de 1976.
  22. ^ ab "Denver Tiny BASIC". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light sin Overbyte . 1 (3). Marzo de 1976.
  23. ^ abc "MINOL". Revista de calistenia y ortodoncia por ordenador del Dr. Dobb, Running Light sin Overbyte . 1 (4). Abril de 1976.
  24. ^ abcde Rauskolb, Roger (diciembre de 1976). "Dr. Wang's Palo Alto Tiny BASIC" (PDF) . Interface Age . págs. 92–108. Archivado (PDF) desde el original el 9 de octubre de 2022.
  25. ^ "Nota de diseño". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (1). Diciembre de 1975.
  26. ^ "6800 Tiny BASIC". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light sin Overbyte . 1 (3). Marzo de 1976.
  27. ^ "Manual de usuario de TINY BASIC+".
  28. ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BASIC". Revista del Dr. Dobb sobre calistenia y ortodoncia informática, Running Light sin Overbyte . 1 (5): 12–25.
  29. ^ ab "NIBL". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (10). Noviembre de 1976.
  30. ^ "BASIC 6800 Tiny mejorado y modificado". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light sin Overbyte . Octubre de 1980.
  31. ^ "TBI68K". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . Febrero de 1985.
  32. ^ "El regreso de Tiny BASIC". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . Enero de 2006.
  33. ^ "Texas Tiny BASIC (TBX) se une al sistema operativo TV-Cassette (TVCOS)". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (5): 28–31. Mayo de 1976.
  34. ^ ab Arnold, Mark; Wadsworth, Nat (febrero de 1976). "SCELBAL: un lenguaje de alto nivel para sistemas 8008/8080". Dr. Dobb's Journal . págs. 30–53.
  35. ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BASIC". Revista del Dr. Dobb sobre calistenia y ortodoncia informática, Running Light sin Overbyte . 1 (5): 12–25.(NB: El código fuente comienza con las siguientes seis líneas: "TINY BASIC PARA INTEL 8080; VERSIÓN 1.0; POR LI-CHEN WANG; 10 DE JUNIO DE 1976; @COPYLEFT; TODOS LOS ERRORES RESERVADOS". La fecha de junio en la edición de mayo es correcta. La revista estaba retrasada, las ediciones de junio y julio se combinaron para ponerse al día.)
  36. ^ McCabe, Dwight [editor] (1 de julio de 1977). PCC's Reference Book of Personal and Home Computing (1.ª ed.). Menlo Park, CA: People's Computer Company. pág. 248. ISBN 0-918790-02-6. {{cite book}}: |first1=tiene nombre genérico ( ayuda )
  37. ^ "People's Computer Company" (PDF) . Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 25 de diciembre de 2019 .
  38. ^ Turnbull, Pete. "Startrek.asc" . Consultado el 25 de diciembre de 2019 .
  39. ^ "Manual de instrucciones básicas de control 3K" (PDF) . Cromemco. Archivado desde el original (PDF) el 2013-12-22 . Consultado el 2013-02-18 .
  40. ^ Ainsworth, Dick (1982). Astro BASIC . Astrocade, Inc., pág. 3.
  41. ^ "BÁSICO de Robert Uiterwyk".
  42. ^ "Micro básico de Robert Uiterwyk".
  43. ^ "Parte 1 del intérprete BASIC LLL 8080" (PDF) . Archivado (PDF) del original el 2022-10-09.
  44. ^ "4 sistemas de lenguaje Altair". Altair BASIC .
  45. ^ Altair BASIC (PDF) . MITS. 25 de agosto de 1975. Archivado (PDF) desde el original el 9 de octubre de 2022.
  46. ^ Wozniak, Steven (1 de mayo de 2014). "Cómo Steve Wozniak escribió BASIC para el Apple original desde cero". Gizmodo .
  47. ^ Welsh, David; Welsh, Theresa (2007). Preparando el terreno: cómo los entusiastas del TRS-80 ayudaron a desencadenar la revolución de la PC . pág. 7.
  48. ^ "ZX80 – ACTUALIZACIÓN DE ROM BÁSICA 8K".
  49. ^ Ness, Stephen. "XYBASIC". Ness Software . Consultado el 4 de agosto de 2020 .
  50. ^ "TinyBasicPlus". GitHub .
  51. ^ "¡Ya está aquí! Half-Byte Tiny Basic 2 para Arduino y compatibles". 27 de noviembre de 2014.
  52. ^ "Ejecución de Tiny Basic en el Micro: Bit". 28 de marzo de 2020.
  53. ^ Chailloux, Emmanuel; Manoury, Pascal; Pagano, Bruno (2002). Desarrollo de aplicaciones con Objective Caml . Francia: O'Reilly. ISBN 2841771210.
  54. ^ "aleozlx/tinybasic". GitHub . Consultado el 20 de septiembre de 2020 .
  55. ^ "PaloAltoTinyBasic" . Consultado el 20 de septiembre de 2020 .
  56. ^ Williams, Al (31 de julio de 2019). «bootBASIC se adapta a tu lenguaje favorito en el sector de arranque». Hack A Day . Consultado el 26 de marzo de 2022 .
  57. ^ Gutierrez, Oscar Toledo. «bootBASIC es un lenguaje BASIC en 512 bytes de código máquina x86». Github . Consultado el 26 de marzo de 2022 .
  58. ^ Gutierrez, Oscar Toledo (27 de julio de 2019). Programación de juegos en el sector de arranque . Lulu. p. 155. ISBN 978-0-359-76262-0.
  59. ^ Henderson, Gordon (2023). "Un pequeño básico para el 6502". Proyectos Drogon .
  60. ^ "BÁSICO" (PDF) . Archivado (PDF) del original el 9 de octubre de 2022.
  61. ^ "GUÍA DEL USUARIO DEL SISTEMA DE TIEMPO COMPARTIDO TSS/8". Febrero de 1970.
  62. ^ "UN INTÉRPRETE DE LENGUAJE BÁSICO PARA EL MICROPROCESADOR INTEL 8008". 1974.
  63. ^ "MANUAL DE REFERENCIA BÁSICA DE ALTAIR DE MITS" (PDF) . Archivado (PDF) del original el 2022-10-09.
  64. ^ "Revista de calistenia y ortodoncia por ordenador del Dr. Dobb: correr ligero sin sobrebytes" (PDF) . Archivado (PDF) desde el original el 2022-10-09.
  65. ^ "Revista de calistenia y ortodoncia por ordenador del Dr. Dobb: correr ligero sin sobrebytes" (PDF) . Archivado (PDF) desde el original el 2022-10-09.
  66. ^ ab "Revista de calistenia y ortodoncia por ordenador del Dr. Dobb: correr ligero sin sobrebytes" (PDF) . Archivado (PDF) desde el original el 2022-10-09.
  67. ^ "Diario del Dr. Dobb sobre calistenia informática y ortodoncia: correr ligero sin overbyte".
  68. ^ "La era de la interfaz".
  69. ^ "Revista de calistenia y ortodoncia por ordenador del Dr. Dobb: correr ligero sin sobrebytes" (PDF) . Archivado (PDF) desde el original el 2022-10-09.
  70. ^ "Ayuda para TRS-80 Nivel I BASIC".
  71. ^ "MICRO BÁSICO de Robert Uiterwyk".
  72. ^ "SCELBAL: un lenguaje de alto nivel para sistemas 8008/8080" (PDF) . Archivado (PDF) del original el 2022-10-09.
  73. ^ "MANUAL PRELIMINAR DEL USUARIO DE APPLE BASIC". Octubre de 1976.
  74. ^ "Interface Age" (PDF) . Archivado (PDF) del original el 2022-10-09.
  75. ^ https://cdn.la-tecnologia.io/files/1707077303528288/ZX80_OperatingManual.pdf. {{cite web}}: Falta o está vacío |title=( ayuda )

Bibliografía

Enlaces externos