stringtranslate.com

Pequeño BÁSICO

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 por Dennis Allison y People's Computer Company (PCC) en respuesta a la carta abierta publicada por Bill Gates quejándose 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 gratuita de BASIC que se ejecutaría en las mismas primeras microcomputadoras .

Tiny BASIC fue lanzado como una especificación, no como una implementación, publicado en la edición de septiembre de 1975 del boletín PPC. El artículo invitaba a los programadores a implementarlo en sus máquinas y enviar la implementación resultante en lenguaje ensamblador 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 centrada en software para microcomputadoras. Dr. Dobb's estuvo impreso durante 34 años y luego en línea hasta 2014, cuando su sitio web se convirtió en un archivo estático.

El tamaño pequeñ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 sólo 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 estrictos límites de tamaño, 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 BASIC para programar microcontroladores como el Arduino .

Historia

Altair BÁSICO

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

Las primeras microcomputadoras , como la 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 aquella época, los terminales basados ​​en vídeo eran muy caros, costaban mucho más que el ordenador, por lo que muchos usuarios recurrieron a dispositivos mecánicos como el Teletipo Modelo 33 . El Modelo 33, como la mayoría de los teleimpresores de la época, incluía un sistema de perforación de cinta destinado a permitir a los operadores pregrabar 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 las primeras microcomputadoras, esto proporcionó un formato conveniente de almacenamiento de datos informáticos , que permitía a los usuarios escribir programas en cintas 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 aprovecharon las reuniones para intercambiar software en cintas perforadas. En la reunión de junio, desapareció una cinta que contenía una versión preliminar 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 en una caja de cartón 50 copias de Altair BASIC en cinta de papel. [2] Cuando Ed Roberts , fundador de MITS, se enteró de esto, afirmó: "Cualquiera que esté usando una copia robada de MITS BASIC debe identificarse como 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 roban su software". [4]

Pequeño 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), consideró que la mejor respuesta sería producir su propio BASIC que fuera completamente gratuito para cualquiera. Se acercó a Dennis Allison , 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 entre 2 y 3 kilobytes de memoria. [a] Para facilitar la portabilidad , el diseño se basó en un lenguaje intermedio (IL), un intérprete para el intérprete, lo que significaba que solo se tenía que portar una pequeña porción del código total.

El diseño inicial de Allison se publicó 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 pedía a los programadores que implementaran el diseño en su computadora y enviaran la versión resultante en lenguaje ensamblador al PCC. Expresaron sus planes de publicar tres boletines especiales que contengan 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 única matriz numérica. Evitaron el uso de IL y lo escribieron directamente en código de máquina, usando octal . [6]

El primero de los tres boletines previstos, 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 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 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 indicaba que ya habían decidido continuar publicando el nuevo boletín con el nombre simplificado Dr. Dobb's Journal . En los números siguientes, se publicaron versiones adicionales del idioma 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; todos los errores reservados" 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 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 airada carta a los aficionados a la informática sobre la 'estafa' de software. Cuando el software es gratuito o tan barato que es más fácil pagarlo que duplicarlo entonces no será 'robado'." La carta de Bill Gates fue escrita para convertir el software en productos . El método alternativo era que un profesional experimentado hiciera el diseño general y luego delineara 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 ampliaría. [10]

La edición 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 ERRORES RESERVADOS". [11] Un compañero miembro del Homebrew Computer Club , Roger Rauskolb, modificó y mejoró el programa de Li-Chen Wang y esto se publicó en la edición de diciembre de 1976 de la revista Interface Age . [8] Roger añadió su nombre y conservó el Aviso COPYLEFT.

Descripción

Conceptos básicos

Tiny BASIC fue diseñado para utilizar la menor cantidad de memoria posible, y esto se refleja en la escasez de funciones y detalles de su sistema de interpretación . Las primeras microcomputadoras 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 y el usuario escribía 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 eliminar, a menudo la barra invertida, para indicar dónde el usuario hacía una copia de seguridad para editar el texto existente.

Si el usuario escribía una declaración en la línea de comando, el sistema la examinaba para ver si comenzaba con un número. Si no era así, la línea se analizaba y operaba inmediatamente, generando potencialmente 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 LISTen la línea de comando, el sistema recorría la matriz, convertía el número de línea nuevamente al formato decimal y luego imprimió el resto del texto en la línea.

Cuando un programa estaba presente en la memoria y el usuario escribe el RUNcomando, el sistema ingresa al "modo indirecto". En este modo, un puntero está configurado para apuntar a la primera línea del programa, por ejemplo, 10 ( $0A hex ). Luego, el texto original de esa línea se recupera de la tienda y se ejecuta como si el usuario acabara de escribirlo 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 especifica en la Nota de diseño. [12] En el listado, un asterisco (" *") denota cero o más objetos 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 el conjunto vacío. Como es común en la notación gramatical del lenguaje informático, la barra vertical (" |") distingue las alternativas, al igual que su lista en líneas separadas. El símbolo " CR" indica un retorno de carro (generalmente generado por la tecla "Enter" del teclado). Una DESCANSO desde la consola interrumpirá la ejecución del programa.

 línea  :: = declaración numérica CR | declaración Declaración CR :: = IMPRIMIR lista-expr IF expresión relop expresión ENTONCES declaración GOTO expresión INPUT lista-var LET var = expresión expresión GOSUB VOLVER BORRAR LISTA EJECUTAR FINAL 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 | Número Z :: = 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, por simple que fuera, agregó una innovación: GOTOpodía GOSUBtomar 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 de GOTO/GOSUB ... OF ..., una estructura entonces compatible con HP Time-Shared BASIC. y depredación ON ... GOTO. La sintaxis que permitía IF-THEN statement(a diferencia de solo un número de línea al que pasar) 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 Design Note especificaba 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 BÁSICOS ejecutados en ella se ejecutaron con cierta lentitud. [15]

Los dialectos que utilizaron la máquina virtual incluyeron Tiny BASIC Extended, Tiny BASIC de Tom Pittman [16] y NIBL. Otros dialectos como Denver Tiny BASIC (DTB) y Palo Alto Tiny BASIC fueron intérpretes directos. Algunos programadores, como Fred Greeb de DTB, trataron el programa IL (lenguaje interpretativo) como un pseudocódigo para que el algoritmo lo implementara en lenguaje ensamblador; Denver Tiny BASIC no utilizó 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 , 'IR' ; ¿IR A O GOSUB? TST S2 , 'A' ;SÍ...A, O...SUBLLAMADA EXPR ; OBTENER ETIQUETA REALIZADA ;ERROR SI CR NO ES EL SIGUIENTE 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 en función de 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 (normalmente busca 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 a continuación TO , saltando a la línea S2 si falla (una prueba para SUB , para ver si se trata de un comando GOSUB ). Si se aprueba, 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, (un GO TO calculado) es tan legal como la alternativa al ON-GOTO de implementaciones BASIC más grandes. La subrutina EXPR envía el resultado de la expresión a 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 da un error si lo hace. XFER extrae el número de la pila y transfiere la ejecución (VA A) 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 de Tiny BASIC. [17]

TST lbl , cuerda
Si la cadena coincide con la línea BÁSICA, 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
Ejecute la subrutina IL comenzando en lbl ; guarde la dirección IL después de la LLAMADA en la pila de control
HECHO
Informar de un error de sintaxis si después de eliminar los espacios en blanco iniciales el cursor no está posicionado para llegar a un retorno de carro
XFER
Pruebe que el valor en la parte superior de la pila AE esté dentro del rango. Si no, 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
Regrese a la ubicación IL especificada en la parte superior de la pila de control
PRS
Imprime caracteres desde el texto BÁSICO hasta las comillas de cierre, pero sin incluirlas
PRN
Número de impresión obtenido al abrir la parte superior de la pila de expresiones
proceso estadístico
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 sobre IL, dice: "El intérprete TINY BASIC fue diseñado por Dennis Allison como un analizador de descenso recursivo . Parte de la elegante simplicidad de este diseño se perdió al agregar azúcar sintáctico al lenguaje, pero la forma básica permanece. El IL es especialmente adecuado para el análisis de descenso recursivo de TINY BASIC debido a la naturaleza recursiva general de sus procedimientos y la simplicidad de los tokens TINY BASIC. El lenguaje IL está efectivamente optimizado para la interpretación de TINY. La experiencia ha demostrado que la dificultad de agregar "Las nuevas características del lenguaje están desproporcionadas con la naturaleza de las características. Por lo general, es necesario agregar subrutinas adicionales del lenguaje de máquina para soportar 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 declaraciones: LET, PRINT, INPUT, IF, GOTO, GOSUB, RETURN, END, CLEAR, LIST , RUN. La aritmética se realiza 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 matrices. ... Tiny BASIC especifica números de línea inferiores 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:

Como alternativa a la tokenización, para ahorrar RAM, TBX, [21] DTB, [22] y MINOL [23] palabras clave truncadas: PRfor PRINT, INfor INPUT, RETfor RETURN. No se aceptaron las palabras clave tradicionales completas. Por el contrario, PATB permitía palabras clave tradicionales aceptadas, pero también permitía abreviar cualquier palabra clave a su cadena única mínima, con un punto final. Por ejemplo, PRINTse podría escribir P., aunque PR.también funcionaban otras variaciones. Este sistema se mantuvo en el Nivel I BASIC para el TRS-80 , que usaba PATB, y también se encontró más tarde en Atari BASIC y el BASIC de varias Sharp Pocket Computers . [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, existieron muchas otras versiones de Tiny BASIC.

Lista de dialectos destacados

Tiny BASIC se publicó por primera vez en un boletín informativo 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.

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 Pequeño 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 llevó 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 . En la edición de junio/julio de Dr. Dobb's (Vol. 1, No 6) apareció una errata del artículo original . Este artículo también incluye información sobre cómo agregar dispositivos de E/S adicionales, usando 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 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 donde el código fuente se compartía y modificaba. De hecho, Wang había contribuido anteriormente con ediciones de 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 Libro de referencia de informática personal y doméstica 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 IFy GOTO. Al igual que en Microsoft BASIC , los límites superior e inferior del bucle se establecieron al ingresar al bucle y no cambiaron durante el bucle, por lo que si uno de los límites se basó en una expresión variable; cambiar la variable no cambió el límite. El STEPmodificador era opcional, como en MS. [24]

Otro cambio significativo fue la posibilidad 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 ya comunes dos puntos :.

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

PATB usó palabras para los mensajes de error en lugar de números. Para reducir la cantidad de memoria necesaria, sólo había tres mensajes y consistían en palabras sueltas. El sistema respondería en WHAT?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 SORRYproblemas 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 con la forma letra-dígito (por ejemplo, a A0) Z9, funciones lógicas ( AND(),, ), un comando para ejecutar rutinas en lenguaje de máquina, más opciones de formato y otros ( y en lugar de y ; funciones del puerto de E/S). [39]OR()XOR()CALLPRINTGET()PUT()PEEKPOKE

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

minol

Escrito por un estudiante de tercer año de secundaria, MINOL fue la única implementación que no admitía la Nota de diseño completa, carecía de precedencia de operadores y tenía solo tres relops (<, =, #), omitiendo GOSUBy RETURN. Solo admitía precisión de 8 bits sin signo (a diferencia de la precisión de 16 bits con signo para cualquier otra implementación) y números de línea del 0 al 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 en lenguaje de máquina. [23]

Dialectos varios

Muchos dialectos aparecieron en varias otras publicaciones.

La edición de mayo de 1977 presentaba un Floppy ROM que contenía MICRO-BASIC.

Inspirado por el llamado de PCC para Tiny BASIC, 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 SWTPC. Uiterwyk había escrito el idioma a mano 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 utilizar decimal codificado en binario con 9 dígitos de precisión, con un rango de hasta 10 99 , y al publicarse de forma gratuita como un inserto de revista "Floppy ROM" . Una versión de 8K agregó variables de cadena y funciones trigonométricas . 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 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ó LLL ( Lawrence Livermore Laboratory ) BASIC, cuyo primer borrador fue desarrollado por Steve Leininger a partir de las especificaciones 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 de 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 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 EE.UU. [43]

BÁSICOS 4K

Altair BASIC , 4K BASIC, podría ejecutarse en una máquina con 4 KB de RAM, dejando sólo 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 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 idioma 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 primera computadora, la TRS-80 , un sistema Z80 con Nivel I BÁSICO en una ROM de 4 KB. Steve Leininger, empleado de Tandy , había escrito el primer borrador del intérprete NIBL ​​(Lenguaje Básico Industrial Nacional) para 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ó exhaustivamente el intérprete, agregando soporte de punto flotante, negro simple. gráficos y READ/DATA/RESTOREdeclaraciones 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 American National Standards Institute (ANSI) de 1978, pero era en sí mismo una implementación incompleta de 4 KB con aritmética de enteros únicamente. [48]

Dialectos del microcontrolador

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

Implementaciones posteriores

En 2002, Emmanuel Chailloux, Pascal Manoury y Bruno Pagano publicaron un Tiny BASIC (faltante GOSUB/ RETURN) en Desarrollo de aplicaciones con Objective Caml como ejemplo de aplicación 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]

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 la convierte en la implementación 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 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 el ensamblador 6502. Está influenciado 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 otros BASIC destacados que las precedieron.

Ver 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. ^ Hash también se usó para no iguales en HP Time-Shared BASIC .

Referencias

Citas

  1. ^ Lancaster, Don (1976). "Libro de cocina sobre máquinas de escribir de TV" (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". Notas de computadora . Albuquerque Nuevo México: MITS. 1 (5): 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 . ACM. 11 (7): 25–33. doi : 10.1145/987491.987494 . S2CID  18819472.
  6. ^ ab "Hoja de códigos de tuberculosis". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (1). Diciembre de 1975.
  7. ^ Dobbs 1976, pág. 5.
  8. ^ abc Rauskolb, Roger (diciembre de 1976). "Palo Alto Tiny BASIC del Dr. Wang". Era de la interfaz . 2 (1): 92-108.El código fuente comienza con las siguientes nueve líneas:
    ;*********************************;; PEQUEÑO BÁSICO PARA INTEL 8080; VERSIÓN 2.0; POR LI-CHEN WANG; MODIFICADO Y TRADUCIDO; A LOS MNEMÓNICOS DE INTEL; 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 el lanzamiento de Tiny BASIC en 1975.
  10. ^ ab Warren, Jim C. (julio de 1976). "Correspondencia". Avisos SIGPLAN . ACM. 11 (7): 1–2. ISSN  0362-1340.
  11. ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BÁSICO". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (5): 12–25.El código fuente comienza con las siguientes seis líneas.
    PEQUEÑO BÁSICO PARA INTEL 8080VERSIÓN 1.0POR LI-CHEN WANG10 DE JUNIO DE 1976@COPYLEFTTODOS LOS ERRORES 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.
  12. ^ Allison, Dennis (1976). "Construye tu propio BÁSICO". 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". Diario del Dr. Dobb . vol. 1, núm. 1. pág. 6.
  14. ^ Manual de idiomas BASIC-PLUS (PDF). Maynard, Massachusetts: Corporación de equipos digitales. 1972, págs. 3-13.
  15. ^ Allen, Dennis. "PEQUEÑO BÁSICO". 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 CRLFallí simboliza un retorno de carro seguido de un avance de línea .
  19. ^ Pittman, Tom. "Kit de experimento Tiny BASIC" . Consultado el 9 de agosto de 2020 .
  20. ^ "PEQUEÑO BÁSICO 6800" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022 . Consultado el 13 de agosto de 2020 .
  21. ^ abc "Tiny BASIC extendido". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (2). Febrero de 1976.
  22. ^ ab "Denver Tiny BÁSICO". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (3). Marzo de 1976.
  23. ^ abc "MINOL". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (4). Abril de 1976.
  24. ^ abcde Rauskolb, Roger (diciembre de 1976). "Palo Alto Tiny BASIC del Dr. Wang" (PDF) . Era de la interfaz . 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 Pequeño BÁSICO". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (3). Marzo de 1976.
  27. ^ "Manual de usuario de TINY BASIC+".
  28. ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BÁSICO". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without 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. ^ "6800 Tiny BASIC mejorado y modificado". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without 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 casa con el sistema operativo de casetes de TV (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 nivel superior para sistemas 8008/8080". Diario del Dr. Dobb . págs. 30–53.
  35. ^ Wang, Li-Chen (mayo de 1976). "Palo Alto Tiny BÁSICO". Revista de calistenia y ortodoncia informática del Dr. Dobb, Running Light Without Overbyte . 1 (5): 12–25.(NB. El código fuente comienza con las siguientes seis líneas. "TINY BASIC FOR 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, los números de junio y julio se combinaron para ponerse al día).
  36. ^ McCabe, Dwight [editor] (1 de julio de 1977). Libro de referencia de informática personal y doméstica del PCC (1ª ed.). Menlo Park, CA: People's Computer Company. pag. 248.ISBN _ 0-918790-02-6. {{cite book}}: |first1=tiene nombre genérico ( ayuda )
  37. ^ "Compañía de informática del pueblo" (PDF) . Archivado (PDF) desde el 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) . Cromeco. Archivado desde el original (PDF) el 22 de diciembre de 2013 . Consultado el 18 de febrero de 2013 .
  40. ^ Ainsworth, Dick (1982). AstroBÁSICO . Astrocade, Inc. pág. 3.
  41. ^ "BÁSICO de Robert Uiterwyk".
  42. ^ "Micro básico de Robert Uiterwyk".
  43. ^ "Parte 1 del intérprete BÁSICO LLL 8080" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  44. ^ "4 sistemas lingüísticos de Altair". Altair BÁSICO .
  45. ^ Altair BÁSICO (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 la Apple original desde cero". Gizmodo .
  47. ^ Galés, David; Galés, Teresa (2007). Preparando la bomba: cómo los entusiastas del TRS-80 ayudaron a impulsar la revolución de las PC . pag. 7.
  48. ^ "ZX80 - ACTUALIZACIÓN DE ROM BÁSICA 8K".
  49. ^ Ness, Esteban. "XYBÁSICO". Software Ness . 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. ^ "Ejecutando Tiny Basic en 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/tinybásico". 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 su idioma favorito en el sector de arranque". Hackear un día . Consultado el 26 de marzo de 2022 .
  57. ^ Gutiérrez, Óscar Toledo. "bootBASIC es un lenguaje BÁSICO en 512 bytes de código de máquina x86". Github . Consultado el 26 de marzo de 2022 .
  58. ^ Gutiérrez, Oscar Toledo (27 de julio de 2019). Programación de juegos del sector de arranque . Lulú. pag. 155.ISBN _ 978-0-359-76262-0.
  59. ^ Henderson, Gordon (2023). "Un pequeño básico para el 6502". Proyectos Drogón .
  60. ^ "BÁSICO" (PDF) . Archivado (PDF) desde el 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 MITS ALTAIR" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  64. ^ "Revista de ortodoncia y calistenia informática del Dr. Dobb: correr ligero sin Overbyte" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  65. ^ "Revista de ortodoncia y calistenia informática del Dr. Dobb: correr ligero sin Overbyte" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  66. ^ ab "Revista de ortodoncia y calistenia informática del Dr. Dobb: correr ligero sin Overbyte" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  67. ^ "Revista de ortodoncia y calistenia informática del Dr. Dobb: correr ligero sin Overbyte".
  68. ^ "Era de la interfaz".
  69. ^ "Revista de ortodoncia y calistenia informática del Dr. Dobb: correr ligero sin Overbyte" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  70. ^ "Ayuda para TRS-80 Nivel I BÁSICO".
  71. ^ "MICRO BÁSICO de Robert Uiterwyk".
  72. ^ "SCELBAL: un lenguaje de nivel superior para sistemas 8008/8080" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.
  73. ^ "MANUAL PRELIMINAR DEL USUARIO BÁSICO DE APPLE". Octubre de 1976.
  74. ^ "Era de la interfaz" (PDF) . Archivado (PDF) desde el original el 9 de octubre de 2022.

Bibliografía

enlaces externos