Tiny BASIC es una familia de dialectos del lenguaje de programación BASIC que puede caber en 4 KB o menos de memoria . Tiny BASIC fue diseñado en respuesta a la carta abierta publicada por Bill Gates quejándose de usuarios pirateando Altair BASIC , que se vendió por $ 150. Tiny BASIC estaba destinado a ser una versión completamente gratuita de BASIC que se ejecutaría en las mismas microcomputadoras iniciales .
Diseñada por | Dennis Allison |
---|---|
Apareció por primera vez | 1975 |
Lenguaje de implementación | IL (lenguaje interpretativo) |
Licencia | Dominio publico |
Dialectos | |
Denver Tiny BASIC, mejorado 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 BÁSICO , Atari BÁSICO , Nivel I BÁSICO |
Tiny BASIC fue lanzado como una especificación, no una implementación, publicado en la edición de septiembre de 1975 del boletín de People's Computer Company (PCC). El artículo invitaba a los programadores a implementarlo en sus máquinas y enviar la implementación resultante del lenguaje ensamblador para su inclusión en una serie de tres boletines informativos planificados. El Dr. 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 que se centra en el software de microcomputadoras. Dr. Dobb's duró 34 años en forma impresa y luego en línea hasta 2014.
El tamaño pequeño y el código fuente libre 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 de memoria típico era de solo 4 a 8 KB. Si bien la versión mínima de Altair BASIC de Microsoft también se ejecutaría en máquinas de 4 KB, solo dejaba 790 bytes libres para los programas BASIC. Más espacio libre fue una ventaja significativa de Tiny BASIC. Para cumplir con estos límites de tamaño estrictos, los dialectos 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 variables de una sola letra.
Hoy en día todavía se utilizan pequeñas implementaciones de BASIC para programar microcontroladores como Arduino .
Historia
Altair BASIC
Las primeras microcomputadoras , como el MITS Altair 8800 , generalmente no tenían entrada / salida (E / S) incorporada más allá de los interruptores del panel frontal y las lámparas LED . El trabajo útil generalmente requería la adición de una tarjeta de expansión de E / S y el uso de algún tipo de terminal . En ese momento, los terminales basados en video eran muy costosos, mucho más que la computadora en sí, por lo que muchos usuarios recurrieron a dispositivos mecánicos como el Teletype Model 33 . El Modelo 33, como la mayoría de los teleimpresores de la época, incluía un sistema de cinta perforada destinado a permitir a los operadores pregrabar sus mensajes y luego reproducirlos a "alta velocidad", más rápido que escribir el mensaje en vivo. Para las primeras microcomputadoras, esto proporcionó un formato de almacenamiento de computadora conveniente , permitiendo 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 cinta perforada. En la reunión de junio, desapareció una cinta que contenía una versión preliminar de Altair BASIC . La cinta se le dio a Steve Dompier, quien se la pasó a Dan Sokol, quien tuvo 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 debe identificarse por lo que es, un ladrón". [3] Bill Gates hizo esto 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 roba su software". [4]
Diminuto BÁSICO
La denuncia 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 gratuito para que lo usara cualquier persona. 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 cabría 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 significó que solo una pequeña parte del código total tenía que ser portada.
El diseño inicial de Allison se publicó en la edición de septiembre de 1975 del boletín de PCC, junto con una versión Intel 8080 del intérprete IL. El artículo pedía a los programadores que implementaran el diseño en su computadora y enviaran la versión resultante en lenguaje ensamblador al PCC. Declararon sus planes de publicar tres boletines especiales que contienen 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 atención cuando se volvió a publicar en la edición de enero de 1976 del Grupo de interés especial de ACM sobre lenguajes de programación. [5] Las presentaciones llegaron a raudales. Entre las primeras versiones notables se encontraba Tiny BASIC Extended de Dick Whipple y John Arnold, que se ejecutaba en 3K de RAM, agregaba bucles FOR ... NXT y permitía una sola matriz numérica. Evitaron el uso de IL y lo escribieron directamente en código máquina, usando octal . [6]
El primero de los tres boletines informativos previstos, con el título "Revista de calistenia y ortodoncia computarizada del Dr. Dobb, 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 preguntó 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 incluyen consejos y trucos de Allison. [7] La respuesta al primer número fue tan impresionante que en la introducción del segundo número se indicó que ya habían decidido seguir publicando el nuevo boletín con el nombre simplificado de Dr. Dobb's Journal . Durante los siguientes números, se publicaron versiones adicionales del idioma y comenzaron a aparecer artículos similares en otras revistas como Interface Age .
Propagar
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 del software libre antes de que Internet permitiera una fácil transferencia de archivos, y fue un ejemplo de un proyecto de software libre antes del movimiento del software libre . [9] Los aficionados a la informática intercambiarían cintas de papel, casetes o incluso volverían a escribir los archivos de los listados impresos. [10]
Jim Warren, editor de Dr. Dobb's , escribió en el boletín informativo ACM Programming Language de julio de 1976 sobre las motivaciones y métodos de este exitoso proyecto. Comenzó con esto: "Existe una alternativa viable a los problemas planteados por Bill Gates en su iracunda carta a los aficionados a la informática sobre 'copiar' 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 fue escrita para convertir 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 con conocimientos 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 del Dr. Dobbs tenía Palo Alto Tiny BASIC de Li-Chen Wang para el 8080. La lista comenzaba con el título habitual, el nombre del autor y la fecha, pero también tenía "@COPYLEFT TODOS LOS EQUIVOCADOS RESERVADOS". [11] Otro miembro del Homebrew Computer Club , Roger Rauskolb, modificó y mejoró el programa de Li-Chen Wang y esto fue publicado en la edición de diciembre de 1976 de la revista Interface Age . [8] Roger agregó su nombre y conservó el Aviso COPYLEFT.
Descripción
Conceptos básicos
Ver intérpretes BÁSICOS
Tiny BASIC fue diseñado para usar la menor cantidad de memoria posible, y esto se refleja en la escasez de funciones, así como en los detalles de su sistema de interpretación . Los primeros microordenadores carecían de RAM y almacenamiento secundario para un compilador BASIC , 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 con el usuario escribiendo declaraciones en una línea de comando. Como las microcomputadoras de la época se usaban a menudo con máquinas de teletipo o terminales "tontas", la edición directa del texto existente no era posible y el editor usaba caracteres para llevar, a menudo la barra invertida, para indicar dónde el usuario hacía la copia de seguridad para editar el texto existente.
Si el usuario escribió una declaración en la línea de comando, el sistema la examinó para ver si comenzaba con un número. De lo contrario, la línea se analizó y se puso en funcionamiento inmediatamente, lo que podría generar una salida a través de PRINT
. Esto se conocía como "modo directo".
Si la línea se ingresó con un número inicial, el número se convirtió del formato decimal, como "50", y se convirtió a un valor de 8 bits, en este caso, $ 32 hexadecimal . Este número se usó como índice en un área de almacenamiento similar a una matriz donde el resto de la línea se almacenó exactamente en el formato en el que se escribió. Cuando el usuario escribía LIST
en la línea de comandos, el sistema recorría la matriz, volvía a convertir el número de línea al formato decimal y luego imprimía el resto del texto de la línea.
Cuando un programa estaba presente en la memoria y el usuario escribe el RUN
comando, el sistema entra en "modo indirecto". En este modo, se establece un puntero para apuntar a la primera línea del programa, por ejemplo, 10 ($ 0A hex). El texto original de esa línea se recupera de la tienda y se ejecuta como si el usuario lo acabara de escribir 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 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 por el primer asterisco en la definición de " término ", que es el operador de multiplicación; objetos de grupo de paréntesis; y un épsilon (" ε ") significa el conjunto vacío. Como es común en la notación gramatical del lenguaje de computadora, la barra vertical (" | ") distingue alternativas, al igual que su lista en líneas separadas. El símbolo " CR " denota un retorno de carro (generalmente generado por la tecla "Enter" del teclado). Un BREAK de la consola interrumpirá la ejecución del programa.
línea :: = instrucción numérica CR | declaración CR declaración :: = IMPRIMIR expr-lista SI expresión oprel expresión ENTONCES declaración GOTO expresión ENTRADA var-list LET var = expresión GOSUB expresión RETORNO BORRAR LISTA RUN END expr-list :: = ( cadena | expresión ) ( , ( cadena | expresión ) ) * lista-var :: = var ( , var ) * expresión :: = ( + | - | ε ) término (( + | - ) término ) * término :: = factor (( * | / ) factor ) * factor :: = var | numero | ( 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: GOTO
y GOSUB
podría tomar una expresión en lugar de solo un número de línea, proporcionando un GOTO [13] asignado en lugar de la declaración de cambio del GOTO/GOSUB ... OF ...
, una estructura que luego se admitía en HP Time-Shared BASIC y anterior ON ... GOTO
. La sintaxis que permite IF-THEN statement
(a diferencia de solo un número de línea para bifurcar) aún no estaba soportada en Dartmouth BASIC como esta vez, pero había sido introducida por Digital [14] y copiada por Microsoft.
Implementación en una máquina virtual
La nota de diseño especificó una máquina virtual , en la que el intérprete Tiny BASIC se ejecuta 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 ejecutan en él se ejecutaron algo lentamente. [15]
Los dialectos que usaban la máquina virtual incluían Tiny BASIC Extended, Tiny BASIC [16] de Tom Pittman 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, trataron el programa IL (Interpretive Language) como un pseudocódigo para que el algoritmo lo implementara en lenguaje ensamblador; Denver Tiny BASIC no usó una máquina virtual, pero siguió de cerca el programa IL.
Este es un extracto representativo del programa IL de 120 líneas:
S1: TST S3 , 'GO' ; GOTO O GOSUB? TST S2 , 'A' ; SÍ ... A, O ... SUB LLAMADA EXPR ; OBTENER ETIQUETA HECHO ; ERROR SI CR NO SIGUE XFER ; 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 sobre esa información. Cada prueba es una afirmación de lo que sigue en el búfer de línea. Si la aserció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 para 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 a continuación para TO , saltando a la línea S2 si falla (una prueba para SUB , para ver si se trata de un Comando GOSUB ). Si pasa, el control continúa; en este caso, llamar a una subrutina IL que comienza en la etiqueta EXPR , que analiza una expresión. En Tiny BASIC, GOTO X*10+100
(un GO TO calculado) es tan legal como GOTO 100
y es la alternativa al ON-GOTO de implementaciones BASIC más grandes. La subrutina EXPR empuja el resultado de la expresión a la pila aritmética (en este caso, el número de línea). DONE verifica que ningún otro texto sigue a la expresión y da un error si lo hace. XFER saca el número de la pila y transfiere la ejecución (VA A) el número de línea correspondiente, si existe.
La siguiente tabla ofrece una lista parcial de los 32 comandos de la máquina virtual en la que se escribió el primer intérprete de Tiny BASIC. [17]
- TST lbl , cuerda
- Si la cadena coincide con la línea BÁSICA, avance el cursor sobre cadena y ejecute la siguiente instrucción IL; si la prueba falla, ejecute la instrucción IL en la etiqueta lbl
- LLAMAR lbl
- Ejecute la subrutina IL comenzando en lbl ; guardar la dirección IL siguiendo la 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
- XFER
- Pruebe el valor en la parte superior de la pila AE para que 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 es así, informe un error.
- SALTAR lbl
- Continuar la ejecución del IL en la etiqueta especificada
- RTN
- Regrese a la ubicación de IL especificada en la parte superior de la pila de control
- PRS
- Imprima caracteres desde el texto BÁSICO hasta, pero sin incluir, las comillas de cierre
- PRN
- Número de impresión obtenido al hacer estallar la parte superior de la pila de expresiones
- SPC
- Inserte espacios para mover el cabezal de impresión a la siguiente zona
- NLINE
- Envíe un CRLF [18] a la impresora
Tom Pittman, hablando del IL, 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ó al agregar azúcar sintáctica al lenguaje, pero la forma básica permanece. El IL 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 IL está optimizado de manera efectiva para la interpretación de TINY. La experiencia ha demostrado que la dificultad de agregar las nuevas funciones del lenguaje no guardan proporción con la naturaleza de las funciones. Por lo general, es necesario agregar subrutinas de lenguaje de máquina adicionales para admitir las nuevas funciones. A menudo, la dificultad supera las ventajas ". [19]
Desviaciones del diseño
Al definir Tiny BASIC para 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 , EJECUTAR. La aritmética está en enteros de 16 bits solo con los operadores + - * / y paréntesis anidados. Solo hay 26 nombres de variables de una sola letra A, B, ... Z, y no hay funciones. No hay cadenas ni arreglos ... Tiny BASIC especifica números de línea menores a 256 ". [20] Luego pasó a describir su implementación: "Este lenguaje ha sido aumentado para incluir las funciones RND, USR y PEEK y POKE, dando al usuario acceso a todos los componentes de su sistema en el 6800 desde el programa BASIC".
Muchos implementadores aportaron 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 agregaron algún tipo de función de número aleatorio, generalmente RND () . Aunque no se incluye en la especificación, un artículo del boletín antes de la Nota de diseño para Tiny BASIC solicitaba solo esta función.
- Todo habilitado LET para ser opcional y la mayoría de las expresiones de let en declaraciones de asignación contienen operadores relacionales .
- Todos los delimitadores de sentencias admitidos en líneas excepto 6800 TB, normalmente : aunque TBX usó $ y PATB usados ; .
- En IF , todos excepto MINOL eliminaron la necesidad de que las expresiones contengan operadores relacionales (por ejemplo, era válido). Implementaciones eliminadas
IF X THEN LET Y=X
ENTONCES en conjunto o lo hizo opcional o lo apoyó solo para implícitos GOTO . - Muchos modificados IMPRIMIR para admitir zonas de impresión, usando
,
para ir a la siguiente zona y;
no avanzar el cursor. - Se agregaron todos menos 6800TB y DTB NUEVO .
- Todos menos 6800TB y MINOL agregaron una función para devolver el tamaño de la memoria: TBX tenía SZE , DTB y PATB tenían TAMAÑO , L1B tenía MEM y NIBL tenían TOP .
- Cuatro implementaciones agregaron matrices, ya sea una sola matriz no dimensionada en PATB y L1B o Arreglos DIM ensionable en TBX y DTB.
- Cuatro implementaciones agregaron Declaración de arca REM .
- Cuatro implementaciones agregaron FOR bucle: PATB, NIBL y L1B ofrecidos FOR-TO-STEP / NEXT , mientras que TBX no admitía ni
STEP
utilizaba la palabra claveNXT
para finalizar un bucle. - Solo NIBL tuvo algún guiño hacia la programación estructurada, con HACER / HASTA , a pesar del lamento de Allison en el número 2 sobre problemas con BASIC.
Como alternativa a la tokenización, para guardar RAM, TBX, [21] DTB, [22] y MINOL [23] palabras clave truncadas: Relaciones públicas para IMPRIMIR , IN para ENTRADA , RET para VUELTA . No se aceptaron las palabras clave tradicionales completas. Por el contrario, PATB permitía palabras clave tradicionales aceptadas, pero también permitía que cualquier palabra clave se abreviara a su cadena única mínima, con un período final. Por ejemplo, PRINT se puede escribir P. , aunque PR. y otras variaciones también funcionaron. Este sistema se mantuvo en el Nivel I BÁSICO para el TRS-80 , que usaba PATB, y también se encontró más tarde en Atari BÁSICO y BÁSICO de varias computadoras de bolsillo Sharp . [24]
Dialectos
Los dialectos más destacados de Tiny BASIC fueron 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 prominentes
Tiny BASIC se publicó por primera vez en un boletín de noticias de People's Computer Company , un boletín que se convirtió en Dr. Dobb's Journal , una revista de informática de larga duración. En la revista se publicaron unas diez versiones.
Fecha de publicación | Asunto | Dialecto | Autor | Procesador | Tamaño |
---|---|---|---|---|---|
Diciembre de 1975 | 1 [25] | Nota de diseño | Dennis Allison | N / A | N / A |
Febrero de 1976 | 2 [21] | Tiny BASIC Extendido (TBX) | Dick Whipple y John Arnold | 8080 | 2,9 mil |
Marzo de 1976 | 3 [22] | Denver Tiny BASIC (DTB) | Fred Greeb | 8080 | 2,75 mil |
Marzo de 1976 | 3 [26] | 6800 Tiny BASIC (6800TB) | Tom Pittman | 6800 | 2K [27] |
Abril de 1976 | 4 [23] | MINOL | Eric T. Mueller | 8080 | 1,75 mil |
Mayo de 1976 | 5 [28] | Palo Alto Tiny BASIC (PATB) | Li-Chen Wang | 8080 | 1,77 mil |
Noviembre de 1976 | 10 [29] | Lenguaje básico industrial nacional (NIBL) | Mark Alexander y Steve Leininger | SC / MP | 4K |
Octubre de 1980 | 49 [30] | Mejorado 6800 Tiny BASIC | Robert Hudson | 6800 | N / A |
Febrero de 1985 | 100 [31] | TBI68K | Gordon Brandly | 68000 | N / A |
Enero de 2006 | 351 [32] | Regreso de Tiny BASIC | Tom Pittman | N / A ( C ) | N / A |
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 publicaron su código fuente.
Palo Alto Tiny BASIC
Desarrollador | Li Chen Wang |
---|---|
Apareció por primera vez | 1976 |
Licencia | Dominio publico |
Dialectos | |
3K Control básico | |
Influenciado por | |
Tiny BASIC Design Note, Tiny BASIC Extended | |
Influenciado | |
Astro BÁSICO , Nivel I BÁSICO , Sharp PC-1211 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 , escrito en un lenguaje ensamblador personalizado con mnemónicos 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 asumí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 incluyó información sobre cómo agregar dispositivos de E / S adicionales, utilizando como ejemplo el código para la pantalla de video VDM de Processor Technology .
Wang fue uno de los primeros en utilizar la palabra copyleft . En el aviso de distribución de Palo Alto Tiny BASIC, había escrito "@COPYLEFT TODOS LOS EQUIVOCADOS 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 con ediciones en 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] Él mismo publicó una tercera versión en el Reference Book of Personal and Home Computing del PCC . [36]
Uno de los cambios más notables en PATB es la adición del bucle FOR ... NEXT . En el TB original, los bucles solo se podían implementar usando IF
y GOTO
. Al igual que en Microsoft BASIC , los límites superior e inferior del bucle se establecieron en la entrada del bucle y no cambiaron durante el bucle, por lo que si uno de los límites se basaba en una expresión de variable, cambiar la variable no cambiaba el límite. El STEP
modificador era opcional, como en MS. [24]
Otro cambio significativo fue la capacidad de colocar varias declaraciones en una sola línea. Por razones no explicadas, PATB usó el punto ;
y coma para separar declaraciones, en lugar de los dos puntos ya comunes :
.
Otros cambios incluyen la adición de una única matriz numérica, con el nombre de la variable @
, STOP
además de END
, y el uso de #
para no iguales en las comparaciones, en contraposición a <>
. [24] [b]
PATB usó palabras para los mensajes de error en lugar de números. Para reducir la cantidad de memoria requerida, solo había tres mensajes y consistían en palabras simples. El sistema respondería con WHAT?
por errores de sintaxis, HOW?
por errores de tiempo de ejecución como GOTO a una línea que no existía o desbordamientos numéricos, y SORRY
por 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 se adaptó el idioma a 3K de control básico para Cromemco , añadiendo nombres de las variables de la forma de carta dígitos (por ejemplo, A0
a Z9
), funciones lógicas ( AND()
, OR()
, XOR()
), un CALL
comando para ejecutar rutinas de lenguaje de máquina, más PRINT
opciones -formatting, y otros ( GET()
y en PUT()
lugar de PEEK
y POKE
; funciones de puerto de E / S). [39]
Palo Alto Tiny BASIC fue adaptado para muchas otras implementaciones, incluyendo Level I BASIC (1977), BASIC para la computadora de bolsillo Sharp PC-1211 (1980) y Astro BASIC (1982, por Jamie Fenton ). [40]
MINOL
Escrito por un estudiante de tercer año de secundaria, MINOL fue la única implementación que no admitió la nota de diseño completa, sin precedencia de operadores , con solo tres reubicaciones (<, =, #), omitiendo GOSUB
y RETURN
. Solo admitía precisión de 8 bits sin signo (en contraste con la precisión de 16 bits con signo para cualquier otra implementación) y números de línea de 0 a 254.
No se permitieron espacios excepto en cadenas; !
devuelve un número aleatorio, $
antes de que una expresión cargue una cadena en esa dirección; OS
vuelve 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)"); CALL
ejecuta una subrutina en lenguaje de máquina. [23]
Dialectos varios
Muchos dialectos aparecieron en varias otras publicaciones.
Inspirado por el llamado de PCC para Tiny BASICs, Robert Uiterwyk escribió MICRO BASIC 1.3 para SWTPC (un sistema 6800 ), que SWTPC publicó en la edición de junio de 1976 del boletín SWTPC. Uiterwyk había escrito a mano el idioma en una tablilla legal. Más tarde amplió el lenguaje a 4K, agregando soporte para punto flotante; esta implementación fue única entre los intérpretes de BASIC al usar decimal codificado en binario a 9 dígitos de precisión, con un rango de hasta 10 99 , y al ser publicado de forma gratuita como un inserto de revista "Floppy ROM". Una versión de 8K agregó variables de cadena y funciones de trigonometría . SWTPC vendió las versiones 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 usaban los procesadores Intel 8008 y 8080), que se publicó en el Hewlett-Packard Journal .
En la edición de diciembre de 1976 de Interface Age se publicó LLL ( Laboratorio Lawrence Livermore ) BASIC, cuyo primer borrador fue desarrollado por Steve Leininger a partir de la especificación de Allison antes de que Leininger dejara National Semiconductor por Tandy Corporation . El intérprete final fue desarrollado por John Dickenson, Jerry Barber y John Teeter en la Universidad de Idaho con un contrato con LLL. Tomando 5K, incluía un paquete de punto flotante, desarrollado por David Mead, Hal Brand y Frank Olken. El programa fue puesto al dominio público por LLL, que desarrolló el sistema bajo los auspicios de la Administración de Investigación y Desarrollo de Energía de EE. UU. [43]
4K BÁSICOS
Altair BASIC , 4K BASIC, podría ejecutarse dentro de una máquina RAM de 4kB, 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 miembros como Li-Chen Wang (Palo Alto Tiny BASIC) y Tom Pittman (6800 Tiny BASIC). Wozniak concluyó que su máquina tendría que tener un BÁSICO propio, que, con suerte, sería el primero para el procesador MOS Technology 6502 . Como el lenguaje necesitaba 4 kB de RAM, lo convirtió en 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 conocía entonces) lanzó su primera computadora, la TRS-80 , un sistema Z80 con Nivel I BÁSICO en una ROM de 4kB. Steve Leininger, empleado de Tandy, había escrito el primer borrador del intérprete de NIBL (Lenguaje básico industrial nacional) para el SC / MP mientras trabajaba en National Semiconductor . [29] Incapaz de llevarse ese código fuente con él, adaptó Palo Alto Tiny BASIC de Li-Chen Wang para el prototipo original del TRS-80 Modelo I. Revisó extensamente el intérprete, agregando soporte de punto flotante, negro simple gráficos y READ/DATA/RESTORE
declaraciones en blanco y negro . [47]
Desarrollado originalmente en 1979, Sinclair 4K BASIC , escrito por John Grant, utilizó como definición de lenguaje el estándar mínimo BASIC del Instituto Nacional de Estándares Estadounidenses (ANSI) de 1978 , pero en sí mismo era una implementación incompleta de 4Kb con aritmética de enteros únicamente. [48]
Dialectos de microcontroladores
Se han adaptado pequeñas implementaciones de BASIC para el control del procesador y para microcontroladores como Arduino :
- Stephen A. Ness escribió XYBASIC para Mark Williams Company en 1977, una implementación de enteros de 4K. El lenguaje se usaba 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.
- Tiny Basic 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 Palo Alto Tiny BASIC. [52]
Implementaciones posteriores
En 2002, Emmanuel Chailloux, Pascal Manoury y Bruno Pagano publicaron un Tiny BASIC (falta GOSUB
/ RETURN
) en Developing Applications with Objective Caml como ejemplo de aplicación de Objective Caml . [53]
En 2013, Alex Yang publicó una implementación en Python . [54]
En 2019, Sergey Kuznetsov publicó una versión en Ruby . [55]
Dialectos comparados
La siguiente tabla compara la característica de lenguaje de las implementaciones de Tiny BASIC con otros BASIC prominentes que los precedieron.
Programador (es) | Procesador | Tipo | APORTE | DEJAR | IMPRESIÓN | IR | SI ... ENTONCES | GOSUB | REGRESO | FINAL | CORRER | LISTA | CLARO | NUEVO | movimiento rápido del ojo | PARA / SIGUIENTE | LEER / DATOS / RESTAURAR | Comandos BÁSICOS agregados | Personalizaciones | Expresiones | reubicarse | Funciones | RND | Función de memoria | Línea de números | Delimitador de declaración | Errores | Precisión | Aritmética | Variables | Matrices | Instrumentos de cuerda |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(Estudiantes de Dartmouth) | GE-225 | Compilar y listo | N / A [!] | LET var = expresión | PRINT expr-list {, /; /} | IR A número | SI expresión reubicar expresión ENTONCES número de línea | Número de GOSUB | REGRESO | FINAL | CORRER | LISTA - empezar | - | NUEVO [se solicita el nombre del programa] | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | LEER, DATOS | DETENER | N / A | precedencia, ^ | <<= => => <> | INT, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN | RND (0) 0..1 | - | 1 hasta 99999 | Ninguno | 22 definidos | 9 dígitos | ± 999,999,999; Base de notación E 2-256 a +255 (E ± 76). | AZ, A0-Z9 | DIM (nombre de una letra, dos dimensiones); si se omite, se supone que va de 0 a 10; hasta 1500 elementos en todos los arreglos | Ninguno |
(Personal de DEC) | PDP-8 | Compilar y listo | INPUT var-list | LET var = expresión | PRINT expr-list {, /; /} | IR A número | IF expresión reubicar expresión [THEN / GO TO] número de línea | Número de GOSUB | REGRESO | FINAL | CORRER | LISTA (primero (, último)) | - | NUEVO [se solicita el nombre del programa] | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | LEER, DATOS, RESTAURAR | DETENER, VIEJO, GUARDAR, DESGUARDAR | BORRAR (primero (, último)), ADIÓS | precedencia, ^ | <<= => => <> | INT, SGN, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN | RND (0) 0..1 | - | 1 hasta 2045 | Ninguno | 23 definidos | ? | ± 134,217,727; 14E-38 | AZ, AA-Z9 | DIM (nombre de una letra, dos dimensiones) | Ninguno |
Alfred Weaver, Michael Tindall y Ronald Danielson | 8008 | Interprete | INPUT | LET var = fórmula | PRINT | IR A número | SI expresión ENTONCES número de línea | Número de GOSUB | REGRESO | FINAL | CORRER | no documentado | no documentado | no documentado | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | - | DEF FN, DETENER | N / A | precedencia, ^ | <<= => => # Y O NO | FNA..Z, SIN, COS, LOG, SQR, EXP, ATN | - | - | 0 hasta 999 | Ninguno | no documentado | Mantisa de 4 bytes y exponente de 1 byte [Paquete aritmético de punto flotante de Datapoint 2200] | no documentado | AZ, A0-Z9 | DIM (nombre de una letra, tres dimensiones) | Ninguno |
Bill Gates, Paul Allen y Monte Davidoff | 8080 | Interprete | INPUT ("cadena",) var-list | (LET) var = expresión | PRINT expr-list {, /; } | Número GOTO | IF expresión ENTONCES número de línea / instrucción | Número de GOSUB | REGRESO | FINAL | CORRER | LISTA (inicio) | - | NUEVO | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | LEER, DATOS, RESTAURAR | DETENER | - | precedencia | <<= => => <> | ABS, INT, SGN, SQR, TAB, USR | RND (X) <0, nuevo usando X como semilla; = 0, repetir; > 0, siguiente | - | 1 hasta 65535 | : | 12 definidos | Operando de 40 bits flotante | ? | ? | DIM (una dimensión) | Ninguno |
Dennis Allison | N / A | Interprete | INPUT var-list | LET var = expresión | IMPRIMIR lista-expr | Expresión GOTO | IF expresión reubicar expresión THEN sentencia | Expresión de GOSUB | REGRESO | FINAL | CORRER | LISTA | [eq. a la nueva] | - | - | - | - | - | - | precedencia | <<= => => <>> < | Ninguno | Ninguno | - | 1 hasta 255 | Ninguno | 8 definidos | 16 bits | ± 32767 | Arizona | Ninguno | Ninguno |
Dick Whipple y John Arnold | 8080 | Interprete | EN | (LET) var = expresión | ;} | IR | IF expresión [no ENTONCES] declaración | IR SUB | RETIRADO | FINAL | CORRER | LST (primero (, último)) | - | NUEVO | - | PARA-NXT (sin PASO) | DTA (matriz LET) | - | - | precedencia | <<= => => <>> < | TB () espacios impresos | RN (aleatorio 0-10000) | SZE | 1 hasta 65535 | PS | 14 definidos | 16 bits | ± 32767 | Arizona | DIM, 1 o 2 dimensiones, 255x255 máx. | Ninguno |
Fred Greeb | 8080 | Interprete | EN | (LET) var = expresión | ;} | IR | IF expresión [no ENTONCES] declaración | GOSUB | RETIRADO | FINAL | CORRER | LISTA (primero último) | [eq. a la nueva] | - | - | - | - | CINTA [GUARDAR], CARGAR | CLRS [CLS] | precedencia | <<= => => <>> < | RND (0), RND (1) | TALLA | 2 hasta 255 | : | 20 definidos | 16 bits | ± 32767 | AZ, A1 a A6 a Z6 | DIM, 1 dimensión | Ninguno | |
Tom Pittman | 6800 | Interprete | INPUT (expresión) lista-var | LET var = expresión | PRINT expr-list {, /; } | Expresión GOTO | IF expresión reubicar expresión THEN sentencia | Expresión de GOSUB | REGRESO | FINAL | CORRER | LISTA (primero último) | [eq. a la nueva] | - | movimiento rápido del ojo | - | - | - | - | precedencia | <<= => => <>> < | USR () | RND () | - | 1 hasta 65535 | Ninguno | 53 definidos | 16 bits | ± 32767 | Arizona | Ninguno | Ninguno |
Eric T. Mueller | 8080 | Interprete | EN | (LET) var = expresión | PR expr-list {;} | [GOTO 0 vuelve al inicio de la declaración directa] | IF expresión reubicar expresión; declaración | N / A | N / A | FINAL | CORRER | LISTA | BORRAR [solo variables] | NUEVO | - | - | - | - | No se permiten espacios excepto en cadenas | Sin precedencia de operadores | <= # | $ [CHR $] | ! [RND] | - | 1 hasta 254 | : | 6 definido | 8 bits | 0 hasta 255 | Arizona | (H, L) ubicación de la memoria | solo char |
Li-Chen Wang | 8080 | Interprete | INPUT [(expresión) var] * | (LET) var = expresión | IMPRIMIR lista-expr | Expresión GOTO | IF expresión [no ENTONCES] declaración | Expresión de GOSUB | REGRESO | DETENER | CORRER | LISTA (inicio) | - | NUEVO | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | - | DETENER | - | precedencia | <<= => => # | ABDOMINALES() | RND () | TALLA | 1 hasta 32767 | ; | 3 definido | 16 bits | ± 32767 | Arizona | @ (1 matriz de 1 dimensión) | Ninguno |
Mark Alexander y Steve Leininger | SC / MP | Interprete | ENTRADA ($) var | (LET) var = expresión | PR / PRINT expr-list | Expresión GOTO | Declaración IF expresión (ENTONCES) | Expresión de GOSUB | REGRESO | FINAL | CORRER | LISTA (inicio) | BORRAR [variables y pila] | NUEVO | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | - | HACER HASTA | Direccionamiento de memoria (@ [PEEK / POKE], STAT, PAGE) | precedencia | <<= => => <> | MOD (), Y, O, NO, | RND (A, Z) | CIMA | 0 hasta 32767 | : | 13 cuatro caracteres definidos | 16 bits | ± 32767 | Arizona | direccionamiento de memoria | INPUT $, PRINT $, $ exp = exp |
Steve Leininger | Z80 | Interprete | INPUT (# dígitos) [(expresión) var] * | (LET) var = expresión | PRINT (# dígitos) lista-expr | Número GOTO | IF expresión ENTONCES declaración | Número de GOSUB | REGRESO | FINAL | RUN (inicio) | LISTA (inicio) | - | NUEVO | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | LEER, DATOS, RESTAURAR | DETENER, CONT, ON-GOTO / GOSUB | CLOAD, CSAVE, CLS, SET, RESET, | precedencia | <<= => => <>> < | ABS (), INT (), MEM, PUNTO (X, Y) | RND () | MEM | 1 hasta 32767 | : | 3 definido | 16 bits | ± 32767 | Arizona | A (1 matriz de 1 dimensión) | A $, B $ |
Robert Uiterwyk | 6800 | Interprete | INPUT var-list | (LET) var = expresión | PRINT expr-list {, /; } | Expresión GOTO | IF expresión reubicar expresión THEN sentencia | Expresión de GOSUB | REGRESO | FINAL | CORRER | LISTA (primero (, último)) | - | NUEVO | - | PARA / HASTA / SIGUIENTE (sin PASO) | - | PESTAÑA() | - | precedencia | <<= => => <>> < | RND, TAMAÑO | RND [devuelve 1-32762] | TAMAÑO (declaración que imprime los bytes usados y los bytes libres) | 1 hasta 65535 | Ninguno | 17 definidos | 16 bits [¡BCD posterior!] | ± 32767 | Arizona | DIM (dos dimensiones, tamaño máximo de 255) | Ninguno |
Mark Arnold y Nat Wadsworth | 8008 | Interprete | INPUT var-list | (LET) var = expresión | PRINT expr-list {, /; /} | Número GOTO | ENTONCES declaración | Número de GOSUB | REGRESO | FINAL | CORRER | LISTA | - | Rasga] | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | - | GUARDAR CARGA | UDF [USR] | precedencia, ^ | <<= => => <> | INT, SGN, ABS, SQR, CHR [utilizable solo en PRINT], TAB | RND (0) 0..1 | - | 1 al 999999 | Ninguno | 18 definidos | Operando de 32 bits de coma flotante o fija | ± 134,217,727; 14E-38 | ? | DIM (nombre de una letra, una dimensión; hasta 4 matrices de hasta 64 entradas en total) | Ninguno |
Steve Wozniak | 6502 | Interprete | INPUT ("cadena",) var-list | (LET) var = expresión | PRINT expr-list {, /; } | Expresión GOTO | IF expresión reubicar expresión ENTONCES número de línea / declaración | Expresión de GOSUB | REGRESO | FINAL | RUN (inicio) | LISTA (primero (, último)) | - | SCR | movimiento rápido del ojo | PARA / A / PASO / SIGUIENTE | - | AUTO, DEL, POKE | TAB (comando), CALL | precedencia | <<= => => <> # Y O NO MOD | SGN, ABS, PEEK (), LEN () | RND (X) 0..X (o X..0!) | HIMEM, LOMEM | 1 hasta 32767 | Ninguno [versión anterior, luego:] | 16 definidos | 16 bits | ± 32767 | AZ seguido de cualquier número de alfanumérico | DIM (una dimensión) | dimensionado |
(Personal de la Universidad de Idaho) | 8080 | Interprete | INPUT var-list | (LET) var = expresión | PRINT expr-list {, /;} | IR A número | Sentencia IF expresión relop expression (THEN) | GO SUB número | REGRESO | FINAL | CORRER | LISTA | - | SCR | movimiento rápido del ojo | PARA / HASTA / SIGUIENTE (sin PASO) | - | DETENER | LLAMAR, OBTENER (), PONER () | precedencia | <<= => => <>> < | ¿No RND? | - | 0 hasta 32767 | : | 14 definidos | Operando de coma flotante de 32 bits | ? | AZ, A0-Z9 | DIM (solo números enteros, nombre de una letra, una dimensión, tamaño máximo de 255) | Ninguno |
Ver también
- Intérprete BÁSICO
- Copyleft
- Dartmouth BÁSICO
Notas
- ^ En ese momento, el tamaño de memoria más común para el 8800 era de 4 kB, que costaba cientos de dólares.
- ^ Hash también se usó para no iguales en HP Time-Shared BASIC .
Referencias
Citas
- ^ Lancaster, Don (1976). "Libro de cocina de la máquina de escribir de TV" (PDF) . págs. 210–211.
- ^ Manes y Andrews 1994 , p. 81.
- ^ Roberts, H. Edward (octubre de 1975). "Carta del presidente" . Notas de la computadora . Albuquerque NM .: MITS. 1 (5): 3–4. Archivado desde el original el 23 de marzo de 2012.
- ^ Manes y Andrews 1994 , p. 91.
- ^ Allison, Dennis (julio de 1976). "Notas de diseño para TINY BASIC". Avisos SIGPLAN . ACM. 11 (7): 25–33. doi : 10.1145 / 987491.987494 .
- ^ a b "Hoja de códigos de TB" . Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (1). Diciembre de 1975.
- ^ Dobbs 1976 , p. 5.
- ^ a b c Rauskolb, Roger (diciembre de 1976). "Palo Alto Tiny BASIC del Dr. Wang". Edad de la interfaz . 2 (1): 92–108. El código fuente comienza con las siguientes nueve líneas:
; ********************************;; TINY BASIC PARA INTEL 8080; VERSIÓN 2.0; POR LI-CHEN WANG; MODIFICADO Y TRADUCIDO; A INTEL MNEMONICS; POR ROGER RAUSKOLB; 10 DE OCTUBRE DE 1976; @COPYLEFT; TODOS LOS MALOS RESERVADOS;; ********************************
- ^ "Hardware abierto: cómo y por qué funciona" .
El movimiento del software abierto fue fundado por Dennis Allison en su lanzamiento de Tiny BASIC en 1975.
- ^ a b Warren, Jim C. (julio de 1976). "Correspondencia". Avisos SIGPLAN . ACM. 11 (7): 1–2. ISSN 0362-1340 .
- ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BASIC". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (5): 12-25. El código fuente comienza con las siguientes seis líneas.
TINY BASIC PARA INTEL 8080VERSIÓN 1.0POR LI-CHEN WANG10 DE JUNIO DE 1976@COPYLEFTTODOS LOS MALOS RESERVADOS
La fecha de junio en la edición de mayo es correcta. La revista estaba retrasada, los números de junio y julio se combinaron para ponerse al día. - ^ Allison, Dennis (1976). "Construye tu propio BÁSICO" . Diario del Dr. Dobb . Vol. 1 no. 1. p. 9.
- ^ Allison, Dennis (1976). "Guía de referencia rápida para Tiny BASIC" . Diario del Dr. Dobb . Vol. 1 no. 1. p. 6.
- ^ Manual de idiomas BASIC-PLUS (PDF). Maynard, Massachusetts: Corporación de equipos digitales. 1972. págs. 3-13.
- ^ Allen, Dennis. "PEQUEÑO BÁSICO". Empresa de informática del pueblo . 4 (3).
- ^ Veit, Holger. "6800 diminuto BASIC de Tom Pittman" . Consultado el 2 de mayo de 2017 .
- ^ Diario del Dr. Dobb , volumen 1, número 1, 1976, p. 12.
- ^ El CRLF simboliza un retorno de carro seguido de un salto de línea .
- ^ Pittman, Tom. "Kit de Experimentador BÁSICO Tiny" . Consultado el 9 de agosto de 2020 .
- ^ "TINY BASIC 6800" (PDF) . Consultado el 13 de agosto de 2020 .
- ^ a b c "Tiny BASIC Extendido". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (2). Febrero de 1976.
- ^ a b "Denver Tiny BASIC". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (3). Marzo de 1976.
- ^ a b c "MINOL". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (4). Abril de 1976.
- ^ a b c d e Rauskolb, Roger (diciembre de 1976). "Palo Alto Tiny BASIC del Dr. Wang" (PDF) . Edad de la interfaz . págs. 92-108.
- ^ "Nota de diseño". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (1). Diciembre de 1975.
- ^ "6800 Tiny BASIC". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (3). Marzo de 1976.
- ^ "Manual de usuario de TINY BASIC +" .
- ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BASIC". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (5): 12-25.
- ^ a b "NIBL". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (10). Noviembre de 1976.
- ^ "6800 Tiny BASIC mejorado y modificado". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . Octubre de 1980.
- ^ "TBI68K". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . Febrero de 1985.
- ^ "Regreso de Tiny BASIC". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . Enero de 2006.
- ^ "Texas Tiny BASIC (TBX) se casa con el sistema operativo de casetes de TV (TVCOS)". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (5): 28–31. Mayo de 1976.
- ^ Arnold, Mark; Wadsworth, Nat (febrero de 1976). "SCELBAL - Un lenguaje de nivel superior para sistemas 8008/8080" . Diario del Dr. Dobb . págs. 30–53.
- ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BASIC". Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without 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 EQUIVOCADOS RESERVADOS". La fecha de junio en la edición de mayo es correcta . La revista estaba retrasada, los números de junio y julio se combinaron para ponerse al día).
- ^ McCabe, Dwight [editor] (1 de julio de 1977). Libro de referencia de PCC sobre informática personal y doméstica (1ª ed.). Menlo Park, CA: People's Computer Company. pag. 248. ISBN 0-918790-02-6.CS1 maint: texto adicional: lista de autores ( enlace )
- ^ "Empresa de informática del pueblo" (PDF) . Consultado el 25 de diciembre de 2019 .
- ^ Turnbull, Pete. "Startrek.asc" . Consultado el 25 de diciembre de 2019 .
- ^ "Manual de instrucciones básico de 3K Control" (PDF) . Cromemco. Archivado desde el original (PDF) el 22 de diciembre de 2013 . Consultado el 18 de febrero de 2013 .
- ^ Ainsworth, Dick (1982). Astro BASIC . Astrocade, Inc. pág. 3.
- ^ "BÁSICO de Robert Uiterwyk" .
- ^ "Micro básico de Robert Uiterwyk" .
- ^ "Parte 1 del intérprete básico LLL 8080" (PDF) .
- ^ "4 sistemas de lenguaje de Altair" . Altair BASIC .
- ^ Altair BASIC (PDF) . MITS. 25 de agosto de 1975.
- ^ Wozniak, Steven (1 de mayo de 2014). "Cómo Steve Wozniak escribió BASIC para la Apple original desde cero" . Gizmodo .
- ^ Galés, David; Galés, Theresa (2007). Cebado de la bomba: cómo los entusiastas de TRS-80 ayudaron a encender la revolución de la PC . pag. 7.
- ^ "ZX80 - ACTUALIZACIÓN BÁSICA DE ROM 8K" .
- ^ Ness, Stephen. "XYBASIC" . Software Ness . Consultado el 4 de agosto de 2020 .
- ^ "TinyBasicPlus" .
- ^ "¡Ya está aquí! Half-Byte Tiny Basic 2 para Arduino y compatibles" .
- ^ "Ejecución de Tiny Basic en el Micro: Bit" .
- ^ Chailloux, Emmanuel; Manoury, Pascal; Pagano, Bruno (2002). Desarrollo de aplicaciones con Objective Caml . Francia: O'Reilly. ISBN 2841771210.
- ^ "aleozlx / tinybasic" . Consultado el 20 de septiembre de 2020 .
- ^ "PaloAltoTinyBasic" . Consultado el 20 de septiembre de 2020 .
- ^ "BÁSICO" (PDF) .
- ^ "GUÍA DEL USUARIO DEL SISTEMA DE TIEMPO COMPARTIDO TSS / 8" (PDF) .
- ^ "UN INTÉRPRETE DEL LENGUAJE BÁSICO PARA EL MICROPROCESADOR INTEL 8008" (PDF) .
- ^ "MANUAL DE REFERENCIA BÁSICO DE MITS ALTAIR" (PDF) .
- ^ "Diario del Dr. Dobb de calistenia informática y ortodoncia: funcionamiento ligero sin Overbyte" (PDF) .
- ^ "Diario del Dr. Dobb de calistenia informática y ortodoncia: funcionamiento ligero sin Overbyte" (PDF) .
- ^ a b "Diario del Dr. Dobb de calistenia informática y ortodoncia: funcionamiento ligero sin Overbyte" (PDF) .
- ^ "Diario del Dr. Dobb de calistenia informática y ortodoncia: luz corriente sin Overbyte" .
- ^ "Edad de la interfaz" .
- ^ "Diario del Dr. Dobb de calistenia informática y ortodoncia: funcionamiento ligero sin Overbyte" (PDF) .
- ^ "Ayuda para TRS-80 Nivel I BÁSICO" .
- ^ "MICRO BASIC de Robert Uiterwyk" .
- ^ "ESCELBAL - UN IDIOMA DE NIVEL SUPERIOR PARA SISTEMAS 8008/8080" (PDF) .
- ^ "MANUAL BÁSICO DEL USUARIO DE APPLE PRELIMINAR" (PDF) .
- ^ "Edad de la interfaz" (PDF) .
Bibliografía
- "Hoja de códigos de TB" . Dr. Dobb's Journal of Computer Calistenics & Orthodontia, Running Light Without Overbyte . 1 (1). Diciembre de 1975.
- Manes, Stephen ; Andrews, Paul (1994). Gates: cómo el magnate de Microsoft reinventó una industria y se convirtió en el hombre más rico de Estados Unidos . Nueva York: Touchstone, Simon y Schuster. ISBN 0-671-88074-8.
enlaces externos
- Tiny Basic User Manual y Experimenter's Kit - por Tom Pittman
- BASIC de Robert Uiterwyk y de Robert Uiterwyk Micro Básico - Una pequeña MC6800 BÁSICO vendió más adelante con el SWTPC equipo 6800
- MINOL - MINOL de Erik Mueller - Tiny BASIC con cuerdas para Intel 8080
- Tiny BASIC : una versión para la biblioteca de manejo de pantallas de personajes de curses
- tinyBasic : una implementación escrita en iziBasic
- Tiny BASIC : una versión web en vivo, portada a Run BASIC desde iziBasic
- Palo Alto BASIC menos de 500 líneas - Ejemplo de intérprete BASIC escrito en Ruby.
- TinyBasic : una adaptación del intérprete de TinyBasic C de Tom Pittman a Java , C # y Adobe Flex . Incluye versiones web en vivo.
- TinyBASIC Windows : una versión para Windows de TinyBASIC