Pequeño BASIC

Lenguajes de programación BASIC diseñados para menos de 4 KB
Pequeño BASIC
Diseñado porDennis Allison
Apareció por primera vez1975
Lenguaje de implementaciónIL (lenguaje interpretativo)
LicenciaDominio público
Dialectos
Denver Tiny BASIC, Enhanced 6800 Tiny BASIC, MINOL, Lenguaje básico industrial nacional, Palo Alto Tiny BASIC, 6800 Tiny BASIC, TBI68K, Tiny BASIC extendido
Influenciado por
Dartmouth BÁSICO , 8008 BÁSICO
Influenciado
Astro BASIC , Atari BASIC , Nivel I 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:

  • Todos añadieron algún tipo de función de número aleatorio, por lo general RND(). Aunque no estaba incluida en la especificación, un artículo del boletín anterior a la Nota de diseño para Tiny BASIC solicitaba solo esta función.
  • Todos están habilitados LETpara ser opcionales y la mayoría de las expresiones let en las declaraciones de asignación contienen operadores relacionales .
  • Todos excepto 6800TB admitían delimitadores de declaraciones en líneas, :aunque normalmente se usaba TBX $y PATB ;.
  • En IFlas declaraciones, todas, excepto MINOL, eliminaron la necesidad de que las expresiones contuvieran operadores relacionales (por ejemplo, era válido). Las implementaciones lo eliminaron por completo o lo hicieron opcional o lo admitieron solo para cláusulas implícitas . Ninguna admitió cláusulas.IF X THEN LET Y=XTHENGOTOELSE
  • Muchos modificados PRINTpara soportar zonas de impresión, usando ,para ir a la siguiente zona y ;no para avanzar el cursor.
  • Se agregaron todos excepto 6800TB y DTB NEW.
  • Todos, excepto 6800TB y MINOL, agregaron una función para devolver el tamaño de la memoria: TBX tenía SZE, DTB y PATB tenían SIZE, L1B tenía MEMy NIBL ​​tenía TOP.
  • Se agregaron matrices en cuatro implementaciones, ya sea una matriz única y no dimensionada en PATB y L1B o DIMmatrices dimensionables en TBX y DTB.
  • Se agregaron cuatro implementaciones con la REMdeclaración ark.
  • Cuatro implementaciones agregaron el FORbucle: PATB, NIBL ​​y L1B lo ofrecieron FOR-TO-STEP/NEXT, mientras que TBX no lo admitió STEPy usó la palabra clave NXTpara finalizar un bucle.
  • Sólo NIBL ​​tuvo alguna referencia a la programación estructurada, DO/UNTILa pesar del lamento de Allison en el Número 2 sobre los problemas con BASIC.

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.

Dialectos destacados de Tiny BASIC (en el diario del Dr. Dobb)
Fecha de publicaciónAsuntoDialectoAutorProcesadorTamaño
Diciembre de 19751 [25]Nota de diseñoDennis Allison
Febrero de 19762 [21]Tiny BASIC Extendido (TBX)Dick Whipple y John Arnold80802.9K
Marzo de 19763 [22]Denver Tiny BASIC (DTB)Fred Greeb80802,75 mil
Marzo de 19763 [26]6800 Tiny BÁSICO (6800 TB)Tom Pittman68002K [27]
Abril de 19764 [23]MÍNOLEric T. Mueller80801,75 mil
Mayo de 19765 [28]Palo Alto Tiny BASIC (PATB)Li Chen Wang80801,77 mil
Noviembre de 197610 [29]Lenguaje básico industrial nacional (NIBL)Mark Alexander y Steve LeiningerSC/MP4K
Octubre de 198049 [30]6800 Tiny BASIC mejoradoRoberto Hudson6800
Febrero de 1985100 [31]TBI68KGordon Brandly68000
Enero de 2006351 [32]El regreso de Tiny BASICTom Pittman— ( C )

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

Palo Alto Tiny BÁSICO
ReveladorEl rey Li Chen
Apareció por primera vez1976
LicenciaDominio público
Dialectos
Control básico 3K
Influenciado por
Nota de diseño de Tiny BASIC, Tiny BASIC ampliado
Influenciado
Astro BASIC , Nivel I BASIC , Sharp PC-1211 BASIC

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 :

  • Stephen A. Ness escribió XYBASIC para la compañía Mark Williams en 1977, una implementación de números enteros de 4K. El lenguaje se utilizaba a menudo para aplicaciones de control de procesos. [49]
  • Arduino BASIC: adaptado del 68000 Tiny BASIC de Gordon Brandly, portado a C por Mike Field.
  • TinyBasic Plus: adaptado de Arduino BASIC por Scott Lawrence. [50]
  • Half-Byte Tiny Basic: adaptado de Arduino BASIC. [51]
  • Tiny Basic en el micro:bit – adaptado de Tiny BASIC de Palo Alto. [52]

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.

Comparación de implementaciones de BASIC: BASIC diminutos y otros BASIC
Fecha
de publicación
DialectoProgramador(es)ProcesadorTipoAPORTEDEJARIMPRIMIRIR ASI...ENTONCESGOSUBDEVOLVERFINCORRERLISTACLARONUEVOmovimiento rápido del ojoPARA/SIGUIENTELEER / DATOS / RESTAURARSe agregaron comandos BASICPersonalizacionesExpresionesreubicarFuncionesRNDFunción de memoriaNúmeros de líneaDelimitador de declaraciónErroresPrecisiónAritméticaVariablesMatricesInstrumentos de cuerda
Octubre de 1964
DTSS Dartmouth BASIC
(versión 2) [60]
(Estudiantes de Dartmouth)GE-225Compilar y listoN / A [!]LET var = expresiónIMPRIMIR lista-expr { , / ; / }IR AL númeroSI expresión reubicar expresión ENTONCES número de líneaNúmero GOSUBDEVOLVERFINCORRERLISTA--inicioNUEVO [solicita el nombre del programa]movimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTELEER, DATOSDETENERprecedencia, ^< <= = >= > <>INT, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FNRND(0) 0..11 a 99999Ninguno22 definido9 dígitos±999,999,999; Notación E base 2 -256 a +255 (E±76).A–Z, A0–Z9DIM (nombre de una letra, dos dimensiones); si se omite, se supone que va de 0 a 10; hasta 1500 elementos en todas las matricesNinguno (agregado en la versión 4)
Febrero de 1970
DEC BASIC-8 [61]
(Personal del DEC)PDP-8Compilar y listoENTRADA lista de variablesLET var = expresiónIMPRIMIR lista-expr { , / ; / }IR AL númeroExpresión IF expresión relop [ENTONCES/IR A] número de líneaNúmero GOSUBDEVOLVERFINCORRERLISTA (primero (, último))NUEVO [solicita el nombre del programa]movimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTELEER, DATOS, RESTAURARDETENER, VIEJO, GUARDAR, DESAGUARDARELIMINAR (primero (, último)), ADIÓSprecedencia, ^< <= = >= > <>INT, SGN, SEÑADO, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FNRND(0) 0..11 a 2045Ninguno23 definido?±134.217.727; 14E-38<N<1.7E38A–Z, AA–Z9DIM (nombre de una letra, dos dimensiones)Ninguno
Junio ​​de 1974
UIUC BÁSICO [62]
Alfred Weaver, Michael Tindall y Ronald Danielson8008IntérpreteENTRADA <variable> {, <variable>}*LET var = fórmulaIMPRIMIR <cadena> / <fórmula> {, <cadena> / <fórmula>}*IR AL númeroExpresión SI ENTONCES número de líneaNúmero GOSUBDEVOLVERFINCORRERno documentadono documentadono documentadomovimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTEDEF FN, DETENERprecedencia, ^< <= = >= > # Y O NOFNA..Z, SIN, COS, LOG, SQR, EXP, ATN0 a 999Ningunono documentadoMantisa de 4 bytes y exponente de 1 byte [paquete aritmético de punto flotante Datapoint 2200]no documentadoA–Z, A0–Z9DIM (nombre de una letra, tres dimensiones)Ninguno
1975
Altair 4K BÁSICO [63]
Bill Gates, Paul Allen y Monte Davidoff8080IntérpreteENTRADA ("cadena",) lista-var(LET) var = expresiónIMPRIMIR lista-expr { , / ; }Número GOTOExpresión SI ENTONCES número de línea/declaraciónNúmero GOSUBDEVOLVERFINCORRERLISTA (inicio)NUEVOmovimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTELEER, DATOS, RESTAURARDETENERprecedencia< <= = >= > <>ABS, INT, SGN, SQR, TAB, USRRND(X) <0, nuevo usando X como semilla; =0, repetir; >0, siguiente1 a 65535:12 definidoOperando flotante de 40 bits??DIM (una dimensión)Ninguno
Diciembre de 1975
Nota de diseño [64]
Dennis AllisonIntérpreteENTRADA lista de variablesLET var = expresiónIMPRIMIR lista de expresionesExpresión GOTOExpresión IF expresión relop ENTONCES declaraciónExpresión GOSUBDEVOLVERFINCORRERLISTA[eq. a NUEVO]precedencia< <= = >= > <> ><NingunoNinguno1 a 255Ninguno8 definido16 bits±32767ARIZONANingunoNinguno
Febrero de 1976
BASIC diminuto ampliado [65]
Dick Whipple y John Arnold8080IntérpreteEN(LET) var = expresión;}IR AExpresión IF [no hay instrucción THEN]IR A SUBRETIRADOFINCORRERLST (nombre (, apellido))NUEVOFOR-NXT (sin PASO)DTA (matriz LET)precedencia< <= = >= > <> ><Espacios TB() en la impresiónRN (aleatorio 0-10000)SZE1 a 65535$14 definido16 bits±32767ARIZONADIM, 1 o 2 dimensiones, 255 x 255 máx.Ninguno
Marzo de 1976
Denver Tiny BASIC [66]
Fred Greeb8080IntérpreteEN(LET) var = expresión;}IR AExpresión IF [no hay instrucción THEN]GOSUBRETIRADOFINCORRERLISTA (primero último)[eq. a NUEVO]CINTA [GUARDAR], CARGARCLRS [CLS]precedencia< <= = >= > <> ><RND(0), RND(1)TAMAÑO2 a 255:20 definido16 bits±32767A–Z, A1 a A6 a Z6DIM, 1 dimensiónNinguno
Marzo de 1976
6800 BÁSICO diminuto [66]
Tom Pittman6800IntérpreteENTRADA (expresión) lista-varLET var = expresiónIMPRIMIR lista-expr { , / ; }Expresión GOTOExpresión IF expresión relop ENTONCES declaraciónExpresión GOSUBDEVOLVERFINCORRERLISTA (primero último)[eq. a NUEVO]movimiento rápido del ojoprecedencia< <= = >= > <> ><USR()Función aleatoria ()1 a 65535Ninguno53 definido16 bits±32767ARIZONANingunoNinguno
Abril de 1976
MINOL [67]
Eric T. Mueller8080IntérpreteEN(LET) var = expressionPR expr-list {;}[ salta al inicio de la declaración directa]GOTO 0IF expression relop expression&nbsp;; statementFINCORRERLISTABORRAR [solo variables]NUEVONo se permiten espacios excepto en cadenasSin precedencia de operadores< = #$ [CHR$]! [RND]1 a 254:6 definido8 bits0 a 255ARIZONA(H,L) ubicación de memoriaun solo carácter
Mayo de 1976
Palo Alto Tiny BASIC [68]
Li Chen Wang8080IntérpreteENTRADA [(expresión) var]*(LET) var = expresiónIMPRIMIR lista de expresionesExpresión GOTOExpresión IF [no hay instrucción THEN]Expresión GOSUBDEVOLVERDETENERCORRERLISTA (inicio)NUEVOmovimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTEDETENERprecedencia< <= = >= > #abdominales()Función aleatoria ()TAMAÑO1 a 32767;3 definido16 bits±32767ARIZONA@(1 matriz de 1 dimensión)Ninguno
Noviembre de 1976
NIBL [69]
Mark Alexander y Steve LeiningerSC/MPIntérpreteENTRADA ($)var(LET) var = expresiónLista de expresiones PR/PRINTExpresión GOTODeclaración IF (THEN)Expresión GOSUBDEVOLVERFINCORRERLISTA (inicio)BORRAR [variables y pila]NUEVOmovimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTEHACER/HASTADireccionamiento de memoria (@ [PEEK/POKE], STAT, PAGE)precedencia< <= = >= > <>MOD(), Y, O, NO,RND(A,Z)ARRIBA0 a 32767:13 definición de cuatro caracteres16 bits±32767ARIZONAdireccionamiento de memoriaINPUT$, PRINT$, $exp=exp
Agosto de 1977
Nivel I BÁSICO [70]
Steve LeiningerZ80IntérpreteENTRADA (#dígito) [(expresión) var]*(LET) var = expresiónIMPRIMIR (#dígito) lista de expresionesNúmero GOTOExpresión IF declaración THENNúmero GOSUBDEVOLVERFINCORRER (iniciar)LISTA (inicio)NUEVOmovimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTELEER, DATOS, RESTAURARDETENER, CONTINUAR, ENCENDER-GOTO/GOSUBCLOAD, CSAVE, CLS, ESTABLECER, RESTABLECERprecedencia< <= = >= > <> ><ABS(), INT(), MEM, PUNTO(X,Y)Función aleatoria ()MIEMBRO1 a 32767:3 definido16 bits±32767ARIZONAA(1 matriz de 1 dimensión)A$, B$
Junio ​​de 1976
MICRO BÁSICO 1.3 [71]
Robert Uiterwyk6800IntérpreteENTRADA lista de variables(LET) var = expresiónIMPRIMIR lista-expr { , / ; }Expresión GOTOExpresión IF expresión relop ENTONCES declaraciónExpresión GOSUBDEVOLVERFINCORRERLISTA (primero (, último))NUEVOPARA/HASTA/SIGUIENTE (sin PASO)PESTAÑA()precedencia< <= = >= > <> ><RND, TAMAÑORND [devuelve 1-32762]TAMAÑO (declaración que imprime bytes utilizados y bytes libres)1 a 65535Ninguno17 definido16 bits [¡más tarde BCD!]±32767ARIZONADIM (dos dimensiones, tamaño máximo de 255)Ninguno
Junio ​​de 1976

Lenguaje Básico Elemental Científico
(SCELBAL) [72] [34]
Mark Arnold y Nat Wadsworth8008IntérpreteENTRADA lista de variables(LET) var = expresiónIMPRIMIR lista-expr {, / ; / }Número GOTODeclaración THENNúmero GOSUBDEVOLVERFINCORRERLISTARascar]movimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTEGUARDAR, CARGARUDF [USR]precedencia, ^< <= = >= > <>INT, SGN, ABS, SQR, CHR [utilizable solo en PRINT], TABRND(0) 0..11 a 999999Ninguno18 definidoOperando de 32 bits de punto flotante o fijo±134.217.727; 14E-38<N<1.7E38?DIM (nombre de una letra, una dimensión; hasta 4 matrices de hasta 64 entradas en total)Ninguno
Octubre de 1976
Apple I BASIC [73]
Steve Wozniak6502IntérpreteENTRADA ("cadena",) lista-var(LET) var = expresiónIMPRIMIR lista-expr { , / ; }Expresión GOTOExpresión IF expresión relop ENTONCES número de línea/declaraciónExpresión GOSUBDEVOLVERFINCORRER (iniciar)LISTA (primero (, último))SCRmovimiento rápido del ojoPARA / HASTA / PASO / SIGUIENTEAUTO, DEL, POKETAB (comando), LLAMARprecedencia< <= = >= > <> # Y O NO MODSGN, ABS, PEEK(), LEN()RND(X) 0..X (o X..0!)HIMEM, LOMEM1 a 32767Ninguna [versión temprana, entonces :]16 definido16 bits±32767A–Z seguido de cualquier número de caracteres alfanuméricosDIM (una dimensión)dimensionado
Diciembre de 1976
LLL BÁSICO [74]
(Personal de la Universidad de Idaho)8080IntérpreteENTRADA lista de variables(LET) var = expresiónIMPRIMIR lista-expr { , / ;}IR AL númeroInstrucción IF expresión relop expresión (THEN)Número de GO SUBDEVOLVERFINCORRERLISTASCRmovimiento rápido del ojoPARA/HASTA/SIGUIENTE (sin PASO)DETENERLlamar, obtener(), poner()precedencia< <= = >= > <> ><¿Sin RND?0 a 32767:14 definidoOperando de punto flotante de 32 bits?A–Z, A0–Z9DIM (solo números enteros, nombre de una letra, una dimensión, tamaño máximo de 255)Ninguno
Enero de 1980
Sinclair 4K BÁSICO [75]
Juan becaZ-80Intérpretevariable de entradaLET var = expresiónIMPRIMIR lista-expr { , / ;}IR AL númeroExpresión IF declaración THENNúmero de GO SUBDEVOLVERCORRER (número)LISTACLARONUEVOmovimiento rápido del ojoPARA/HASTA/SIGUIENTE (sin PASO)DETENERMETERprecedencia< = >ABS, CHR$, CÓDIGO, PEEK, RND, STR$, TL$, USRRND, ALEATORIZAR1 a 999910 definidoEntero de 16 bitsEntero de 16 bitsA–Z seguido de cualquier número de caracteres alfanuméricosDIM AZ (solo números enteros, nombre de una letra, una dimensión, tamaño máximo de 255)De la A a la Z

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

  • Manual de usuario y kit de experimentación de Tiny Basic, por Tom Pittman
  • BASIC de Robert Uiterwyk Archivado el 7 de enero de 2011 en Wayback Machine y Micro Basic de Robert Uiterwyk: un BASIC en miniatura MC6800 que luego se vendió con la computadora SWTPC 6800
  • MINOL – Erik Mueller's MINOL – Un pequeño BASIC con cadenas para Intel 8080
  • Tiny BASIC: una versión para la biblioteca de manejo de pantalla de personajes de curses
  • tinyBasic – Una implementación escrita en iziBasic
  • Tiny BASIC: una versión web en vivo, adaptada para ejecutar BASIC desde iziBasic
  • Palo Alto BASIC en menos de 500 líneas: ejemplo de intérprete BASIC escrito en Ruby.
  • TinyBasic: una versión del intérprete de C TinyBasic de Tom Pittman para Java , C# y Adobe Flex . Incluye versiones web activas.
  • TinyBASIC Windows: una versión para Windows de TinyBASIC
  • Categoría:Tareas Tiny BASIC implementadas en Tiny BASIC en rosettacode.org
  • Categoría:Tareas de Palo Alto Tiny BASIC implementadas en Palo Alto Tiny BASIC en rosettacode.org
Obtenido de "https://es.wikipedia.org/w/index.php?title=Tiny_BASIC&oldid=1251270292"