BASICODE fue un proyecto informático destinado a crear un estándar unificado para el lenguaje de programación BASIC . BASIC estaba disponible en muchas computadoras hogareñas populares , pero había innumerables variantes que eran en su mayoría incompatibles entre sí. El proyecto fue iniciado en 1980 por Hobbyscoop, un programa de radio de la organización de radiodifusión holandesa Nederlandse Omroep Stichting (NOS).
La implementación básica fueron aplicaciones de utilidad específicas de la arquitectura que ejecutaban llamadas de subrutinas para texto, audio y sonido definidas en el estándar de lenguaje BASICODE de acuerdo con las capacidades de la computadora en cuestión. Estas aplicaciones, llamadas Bascoders , también permitieron compartir datos y programas entre diferentes plataformas informáticas al definir un formato de datos para los casetes compactos que se usaban regularmente como medio de almacenamiento en la década de 1980. Un programa BASICODE almacenado en un casete se puede cargar y ejecutar en cualquier computadora que admita el idioma. BASICODE a menudo se llamaba " Esperanto para computadoras" por esa razón.
BASICODE
La situación a principios de los años ochenta
Desde finales de la década de 1970 hasta finales de la de 1980, las computadoras domésticas basadas en procesadores de 8 bits fueron muy populares. Entre los modelos más conocidos estaban el TRS-80 de Tandy , el PET 2001 , VIC-20 , C64 , C128 y el Plus / 4 de Commodore , el Atari 400/800 (XL / XE) , las computadoras Sinclair Research ( ZX80 , ZX81 , ZX Spectrum ) y la familia KC85 popular en la República Democrática Alemana . Todos estos equipos contaban con una CPU del tipo MOS Technology 6502 o Zilog Z80 , 16 a 64 kilobytes de RAM , conectores para una unidad de casete o incorporada para almacenamiento de datos, y finalmente un intérprete BASIC que generalmente se almacenaba en ROM . La curva de aprendizaje plana de BASIC, que se había diseñado teniendo en cuenta a los recién llegados a la programación, y la disponibilidad instantánea del lenguaje en todas estas computadoras llevó a muchos usuarios a escribir y compartir sus propios programas.
Un problema era que compartir programas y datos entre computadoras de diferentes fabricantes era difícil porque los diversos dialectos BÁSICOS eran totalmente incompatibles en algunas áreas. Utilizaron diferentes comandos BÁSICOS para realizar la misma acción (como limpiar la pantalla, dibujar un píxel o reproducir un sonido), de modo que un programa BÁSICO escrito para el C64 no funcionaba en un Atari XL sin modificaciones y viceversa. Otra dificultad fue el hecho de que, si bien estas computadoras eran similares, aún diferían en aspectos clave del hardware como la resolución de la pantalla, la paleta de colores disponible o las capacidades de audio. Por último, los formatos de datos utilizados para almacenar datos en casetes también eran incompatibles.
El primer estándar
Alrededor de 1980, la emisora holandesa NOS comenzó a transmitir programas informáticos por radio. Debido a que los programas y los datos se almacenaban como audio en casetes compactos, era posible grabar dicha transmisión en una cinta y cargarla en la computadora más tarde. Sin embargo, debido a los problemas mencionados anteriormente, el programa tuvo que adaptarse para casi todos los tipos populares de computadoras y también transmitirse varias veces. Debido a que el casete compacto tiene una densidad de datos muy baja en comparación con los medios de almacenamiento actuales, la grabación de los programas tomó bastante tiempo y solo se pudo transmitir un número limitado de programas por programa. Entonces, la transmisión adicional de diferentes versiones de los mismos programas fue un gran inconveniente.
En 1982, los ejecutivos de NOS decidieron desarrollar un formato de datos unificado. Una aplicación que era específica para cada modelo de computadora, llamada Bascoder , administraba la recuperación y el almacenamiento de programas y datos en este formato unificado desde cinta. Los Bascoders también fueron transmitidos por NOS, pero también se podían comprar en NOS en casete y compartirlos entre amigos y conocidos. El formato, que estaba muy bien protegido contra interferencias, podía ser leído y escrito por todo el hardware de computadora doméstico popular. La robustez del formato también hizo posible la transmisión a través de radio de onda media , lo que aumentó el alcance y, a su vez, el número de usuarios potenciales. Por ejemplo, los datos transmitidos por la estación de radio holandesa Hilversum podrían recibirse en gran parte de la República Democrática Alemana .
CÓDIGO BÁSICO 2
El estándar solucionó uno de los problemas antes mencionados, los formatos de datos incompatibles. Sin embargo, los programas todavía tenían que adaptarse al dialecto BÁSICO de cada computadora y a las capacidades del hardware. Limitar los programas a usar solo instrucciones comunes en todos los dialectos significó grandes limitaciones en términos de funcionalidad, por ejemplo, abstenerse por completo de usar gráficos y sonido y solo métodos incómodos para ingresar datos usando el teclado y controlar la salida de caracteres en la pantalla. Por este motivo, en 1984 se creó el estándar mejorado BASICODE 2. Los codificadores de base que usaban este estándar no solo contenían rutinas para la entrada y salida de datos en cinta. Además de un conjunto de aproximadamente 50 comandos, funciones y operadores de BASIC que eran comunes en todos los dialectos de BASIC, el estándar de lenguaje de BASICODE 2 definía una biblioteca de subrutinas que emulaban las mismas capacidades en todas las computadoras compatibles.
Para lograr esto, todas las líneas de programa por debajo de 1000 se reservaron para el Bascoder, y los programas BASICODE solo podían comenzar en la línea número 1000. Las subrutinas del Bascoder en las líneas por debajo de 1000 se llamaron con un comando GOSUB . Los argumentos necesarios se pasaron al Bascoder mediante el uso de variables predefinidas especiales que estaban reservadas para su uso por Bascoder. El estándar contenía una serie de reglas adicionales que se hicieron necesarias debido a las limitaciones de algunos modelos de computadora. Por ejemplo, en el ZX-81, una línea de código solo podía contener un único comando BASIC, un comportamiento que casi ninguna otra computadora compartía. En una computadora de la serie KC, una línea de código no puede tener más de 60 caracteres. Estas limitaciones tuvieron que aplicarse a todos los programas BASICODE para garantizar la independencia de la plataforma, porque el Bascoder fue interpretado por el mismo intérprete BASIC específico de la computadora que el programa BASICODE mismo.
Por lo tanto, los Bascoders se cargaron en las diversas computadoras como programas normales y luego proporcionaron las rutinas adicionales para el estándar común y E / S de casete. Los programas escritos en BASICODE solo se podían usar después de que el Bascoder se había cargado e iniciado. Sin embargo, en algunas computadoras, los programas BASICODE podrían fusionarse con las rutinas de los Bascoders y guardarse en el formato de datos nativo. El programa resultante ya no era independiente de la plataforma, pero debido a la mayor densidad de datos de la mayoría de los formatos nativos, se podía cargar mucho más rápido que el mismo programa en formato BASICODE. Además, debido a que no era necesario cargar el Bascoder completo para ejecutar el programa, quedaba más RAM disponible en tiempo de ejecución.
Había Bascoders BASICODE 2 para Exidy Sorcerer , Color Genie , Commodore PET , VIC-20 , C64 , Amiga , Sinclair ZX81 , ZX Spectrum , QL , Acorn Atom , BBC Micro , Electron , Tandy TRS-80 , MSX , Oric Atmos , P2000T , Grundy NewBrain , Amstrad CPC , IBM PC , Apple II , Texas Instruments TI-99 / 4A , Mattel Aquarius y otros. Además, los usuarios avanzados pudieron escribir su propio Bascoder para el sistema de su elección, ya que el estándar de idioma y el formato de datos eran abiertos y bien documentados. El estándar BASICODE 2 hizo posible el desarrollo de programas independientes de la plataforma con capacidades avanzadas (por el momento). Además, BASICODE se utilizó para transmitir y compartir información como noticias de la escena informática a través de la radio en forma de los llamados "diarios". De esta manera también se transmitió un tutorial de codificación BASICODE y otra documentación.
CÓDIGO BÁSICO 3 / 3C
En 1986, se desarrolló el nuevo estándar BASICODE 3. Las adiciones más importantes fueron rutinas para gráficos monocromáticos simples , lectura y escritura de datos desde programas y salida de sonido. BASICODE 3 hizo popular a BASICODE en la escena informática de la RDA, y desde 1989 en adelante, los programas de BASICODE se transmitieron por radio por toda la RDA. Además, se publicó un libro que incluía un disco de vinilo con Bascoders para todas las computadoras comunes en la RDA. La última revisión de BASICODE, que incluía gráficos en color, se lanzó como BASICODE 3C en 1991.
El fin de BASICODE
Desde aproximadamente 1990 en adelante, la popularidad de BASICODE disminuyó rápidamente debido al aumento de las computadoras de 16 y 32 bits, especialmente las variantes de IBM-PC y los sistemas compatibles. Aunque había Bascoders para estas máquinas, BASICODE era demasiado limitado para hacer uso de los recursos que proporcionaba esa generación de computadoras. Además, debido a la menor cantidad de arquitecturas comunes en la era de 16 y 32 bits, la razón principal para el desarrollo y uso de BASICODE se volvió discutible. A medida que el hardware y el software de los nuevos sistemas se volvieron cada vez más complejos, la mayoría de los usuarios se volvieron incapaces o no querían escribir programas. El aumento de las interfaces gráficas de usuario contribuyó a la disminución de la popularidad de las computadoras de 8 bits y, en consecuencia, también BASICODE.
El sucesor de la emisora estatal de la RDA, Deutschlandsender Kultur (que más tarde se convirtió en parte de la nueva Deutschlandradio ), continuó transmitiendo programas BASICODE hasta aproximadamente 1992. Un estándar planificado llamado BASICODE 4 nunca se hizo realidad, porque NOS dejó de apoyar el proyecto poco después de BASICODE 3C fue lanzado. BASICODE todavía lo utilizan los entusiastas, en particular los fanáticos de las computadoras de 8 bits, por su valor nostálgico, pero no tiene ninguna relevancia práctica.
Significado historico
BASICODE fue un primer intento de crear un estándar para el intercambio de programas y datos entre arquitecturas de computadoras domésticas incompatibles entre sí. Es más o menos contemporáneo al estándar MSX desarrollado por Microsoft , que especificaba una plataforma de hardware compartida además de un dialecto BASIC común. Estas computadoras fueron vendidas por varias compañías y compitieron directamente con otras computadoras domésticas populares. MSX tuvo éxito principalmente en los mercados domésticos de los fabricantes, por ejemplo , Japón , Corea del Sur , Holanda y Brasil . A diferencia de MSX, BASICODE no definía hardware, sino un estándar de lenguaje para el lenguaje de programación BASIC, que era casi omnipresente en las computadoras domésticas, además de un formato de datos para cassettes compactos que se podía leer y escribir en todas las computadoras para las que BASICODE estaba disponible. Como resultado, la implementación de BASICODE dependía exclusivamente de software adicional y, por lo tanto, no se limitaba a computadoras de fabricantes específicos. La base instalada de BASICODE es difícil de estimar, porque tanto los Basicoders como los programas escritos en BASICODE estaban disponibles gratuitamente. Había un Bascoder para casi todas las computadoras domésticas vendidas durante esta época. Comercialmente, BASICODE no tenía importancia porque siempre se compartía de forma gratuita.
Debe indicarse que BASICODE era, por diseño, incapaz de utilizar las capacidades de las computadoras host en toda su extensión. El estándar de lenguaje definido por BASICODE fue el mínimo común denominador de todos los sistemas informáticos relevantes. Este concepto se abandonó parcialmente solo con BASICODE3 / 3C, ya que algunas computadoras o variantes de computadora como la ZX80 / ZX81 y la KC87 no eran capaces de gráficos y colores y las nuevas secciones de BASICODE que usaban estas capacidades no se podían usar en ellas. Especialmente para las aplicaciones que se basaban en la sincronización y los gráficos o el sonido, por ejemplo, los videojuegos , BASICODE era claramente inferior a los programas escritos en código de máquina o BASIC "nativo" . Los puntos fuertes de BASICODE se encontraban en las áreas de diseño de aplicaciones, software educativo e intercambio de datos. El formato BASICODE también se utilizó para los programas Pascal . Pascal era un lenguaje mucho más consistente en todos los sistemas, pero los compiladores estaban disponibles solo para muy pocos tipos de computadoras domésticas.
El concepto subyacente de BASICODE, que es la definición de un estándar de lenguaje para el desarrollo de software independiente de la plataforma y la implementación de dicho estándar como tiempos de ejecución específicos del sistema (Bascoder) fue revisado posteriormente en el lenguaje de programación Java , en forma de sistema operativo. -Máquinas virtuales Java específicas que ejecutan programas Java. Además, la distribución de datos e información en el formato de datos BASICODE recuerda a los tipos de documentos actuales que no dependen de la plataforma, como el formato de documento portátil (PDF) y las aplicaciones de lectura de PDF que necesita.
El formato de datos BASICODE
En el formato BASICODE, la grabación de programas es análoga a la grabación de datos. Por lo tanto, al grabar programas, los comandos no se leen ni se escriben en forma de unidades de un solo byte ( tokens ), sino carácter a carácter.
Un bloque de datos comienza con el carácter 02 (STX, comienzo del texto) y termina con el carácter 03 (ETX, final del texto). Después de ETX, se transmite un byte de verificación formado por los bytes anteriores, incluidos STX y ETX por adición binaria (XOR). Un carácter 0D (decimal 13) marca el final de una línea durante la transmisión. Los archivos de datos creados por programas pueden utilizar todos los caracteres como datos y no deben contener caracteres de control. Se leen y escriben en bloques de 1024 bytes.
Cada byte se transmite en la secuencia "1 bits de inicio - 8 bits de datos - 2 bits de parada". Los bits de datos se envían con el bit menos significativo primero. El bit más significativo se transmite invertido y siempre es 0 (se transmite como 1) porque BASICODE usa solo caracteres ASCII . Entonces, otra forma de describir la secuencia de transmisión es "1 bit de inicio - 7 bits de datos - 3 bits de parada". La redundancia resultante está destinada a maximizar la compatibilidad con diferentes equipos.
Para las señales de audio, se utilizan ondas cuadradas en forma de onda de 1200 Hz para un bit "0" y dos ondas de 2400 Hz para un bit "1", lo que da como resultado un tiempo de 1/1200 segundos para cada bit. Una pausa de más de 1/1800 segundos entre ondas marca el comienzo de un byte, haciendo que la siguiente onda sea el bit de inicio. Después del bit de inicio y antes de los ocho bits de datos hay otra pausa de al menos 1/1800 segundos. Una señal de 2400 Hz con una duración de cinco segundos marca el comienzo de una transmisión y se utiliza para la sincronización del programa de lectura. Al final de la transmisión, se envía una señal de 2400 Hz con una duración de un segundo.
La tasa de datos teórica de este formato es de 1200 bits por segundo. Teniendo en cuenta la transmisión de tres bits adicionales por byte de datos y las pausas antes y después del bit de inicio, esto da como resultado una velocidad de datos utilizable de 102 bytes por segundo y aproximadamente 6 kilobytes por minuto.
Decodificación de casetes de audio
En una computadora moderna, los casetes de audio Basicode se pueden decodificar usando minimodem , un módem de software disponible gratuitamente. Si el casete se ha convertido en un archivo wav llamado basicode.wav , el siguiente comando lo decodificará en sus bytes de datos correspondientes en un archivo llamado basicode.txt .
minimodem --rx 1200 -S 1200 -M 2400 --startbits 1-7 --stopbits 3 -f basicode.wav> basicode.txt
Ver también
- Capa de abstracción de hardware
- Biblioteca (informática)
- Máquina virtual
- Estándar de Kansas City
Otras lecturas
- (en alemán) Michael Wiegand, Manfred Fillinger: BASICODE. Mit Programmkassette. Ravensburger Buchverlag, Ravensburg 1986, ISBN 3-473-44010-8
- (en holandés) Hermine Bakker, Jaques Haubrich (autores), Stichting BASICODE (editor): Het BASICODE-3 boek. 3. Auflage. Kluwer Technische Boeken BV, Deventer / Antwerpen 1988, ISBN 90-201-2111-1
- (en alemán) Horst Völz: Basicode mit Programmen auf Schallplatte für Heimcomputer. Verlag Technik, Berlín 1990, ISBN 3-341-00895-0
enlaces externos
- (en holandés) Sitio oficial holandés de Hobbyscoop , el grupo de desarrollo original de BASICODE
- BASICODE: un ejemplo del folclore informático holandés - Información histórica
- (en alemán) BasiCode - Software für alle - Información sobre historia y programación
- BASICODE: todavía activo dentro de un grupo electrónico de Yahoo
- Las descargas de imágenes de cinta descargables se realizan con permiso de Hobbyscoop.
- Una colección de programas BASICODE de varios autores Varios programas BASICODE