Articulo de referencia

BASICODE

La afirmación de BASICODE de que se trata de " esperanto para ordenadores", según la publicación de Alemania Oriental radio fernsehen elektronik . BASICODE fue un proyecto infor...

La afirmación de BASICODE de que se trata de " esperanto para ordenadores", según la publicación de Alemania Oriental radio fernsehen elektronik .

BASICODE fue un proyecto informático cuyo objetivo era crear un estándar unificado para el lenguaje de programación BASIC . BASIC estaba disponible en muchos ordenadores domésticos populares , pero existían innumerables variantes, 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 neerlandesa Nederlandse Omroep Stichting (NOS).

Las implementaciones del lenguaje eran aplicaciones de utilidad específicas de la arquitectura que ejecutaban llamadas a subrutinas para texto y audio definidas en el estándar del lenguaje BASICODE, adaptadas según las capacidades del sistema informático anfitrión. Estas aplicaciones, llamadas Bascoders , también permitían compartir datos y programas entre diferentes plataformas informáticas al definir un formato de datos para las cintas de casete que se usaban habitualmente como soporte de almacenamiento en la década de 1980. [ 1 ] Un programa BASICODE almacenado en casete podía cargarse y ejecutarse en cualquier ordenador compatible con el lenguaje. Por esta razón, a BASICODE se le solía llamar « el esperanto de los ordenadores». [ 2 ]

BASICODE

La situación a principios de la década de 1980

Commodore 64
Atari 800 XL

Desde finales de la década de 1970 hasta finales de la de 1980, los ordenadores domésticos basados ​​en procesadores de 8 bits fueron populares. Entre los modelos más conocidos en EE. UU. se encontraban el TRS-80 , el PET 2001 , el VIC-20 , el Commodore 64 y los ordenadores Atari de 8 bits . En Europa, también existían el ZX80 , el ZX81 , el ZX Spectrum , los microordenadores Acorn/BBC, varios sistemas Amstrad, el Dragon 32/64 de Dragon Data y la familia KC85, popular en la República Democrática Alemana . La mayoría de estos ordenadores tenían una CPU MOS Technology 6502 o Zilog Z80 , o una variante de la misma. La mayoría venían con (o se podían ampliar a) al menos 16 kilobytes de RAM , aunque muchos venían con mucha más. La mayoría incluía conectores para una unidad de casete o una integrada para el almacenamiento de datos, y un intérprete BASIC que generalmente se almacenaba en la ROM . La facilidad de aprendizaje de BASIC, que había sido diseñado pensando en los principiantes en programación, y la disponibilidad inmediata del lenguaje en todos estos ordenadores propiciaron que muchos usuarios escribieran y compartieran sus propios programas.

Un problema radicaba en la dificultad de compartir programas y datos entre ordenadores de distintos fabricantes, ya que los diversos dialectos de BASIC solían ser incompatibles en algunos aspectos. Muchos utilizaban comandos BASIC diferentes para lograr el mismo resultado (como borrar la pantalla, dibujar un píxel o reproducir un sonido), lo que significaba que, por ejemplo, era improbable que un programa BASIC escrito para el Commodore 64 funcionara en un Atari 800 XL sin modificaciones, y viceversa. Otra dificultad era que, si bien estos ordenadores eran similares, diferían en aspectos clave del hardware, como la resolución de pantalla, la paleta de colores disponible o las capacidades de audio. Finalmente, los formatos de datos utilizados para almacenar datos en casete también eran incompatibles.

El primer estándar

Sinclair ZX Spectrum

En 1979, la emisora ​​holandesa NOS comenzó a transmitir programas informáticos por radio. Dado que los programas y los datos se almacenaban como audio en casetes compactos, era posible grabar la emisión en cinta y cargarla posteriormente en el ordenador. Sin embargo, debido a los problemas mencionados anteriormente, el programa también debía adaptarse a diversos ordenadores populares y emitirse varias veces. Debido a la baja densidad de datos de los casetes compactos en comparación con los soportes de almacenamiento actuales, la grabación de los programas llevaba bastante tiempo y solo se podía emitir un número limitado de programas por emisión. Por lo tanto, la emisión adicional de diferentes versiones de los mismos programas resultaba muy inconveniente. [ 1 ]

En 1982, los directivos de NOS decidieron desarrollar un formato de datos unificado. Una aplicación específica para cada modelo de ordenador, llamada Bascoder , gestionaba la recuperación y el almacenamiento de programas y datos en este formato unificado desde cinta. Los Bascoders también eran emitidos por NOS, pero podían adquirirse en casete y compartirse entre amigos y conocidos. El formato, que estaba muy bien protegido contra interferencias, podía leerse y escribirse en muchos sistemas informáticos domésticos populares. La robustez del formato también hizo posible la transmisión por radio de onda media , lo que aumentó el alcance y, por consiguiente, el número de usuarios potenciales. Por ejemplo, los datos emitidos por la emisora ​​de radio holandesa Hilversum podían recibirse en gran parte de la República Democrática Alemana .

BÁSICO 2

ZX81
Apple II

El estándar resolvió uno de los problemas mencionados anteriormente: los formatos de datos incompatibles. Sin embargo, los programas aún debían adaptarse al dialecto BASIC y a las capacidades de hardware de cada computadora. Limitar los programas a usar solo instrucciones comunes a todos los dialectos implicaba grandes limitaciones en términos de funcionalidad; por ejemplo, la ausencia total de gráficos y sonido, y la limitación de la funcionalidad para la entrada de datos mediante el teclado y la salida de caracteres en la pantalla. Por estas razones, en 1983 se creó el estándar mejorado BASICODE 2. [ 1 ] Los Bascoders que utilizaban este estándar no solo contenían rutinas para la entrada y salida de datos a cinta. Además de un conjunto de aproximadamente 50 comandos, funciones y operadores BASIC comunes a todos los dialectos BASIC, el estándar del lenguaje 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 la 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 la 1000 se llamaban con un comando GOSUB . [ 1 ] Los argumentos necesarios se pasaban al Bascoder usando variables especiales predefinidas que estaban reservadas para su uso. 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 una computadora de la serie KC, una línea de código no podía tener más de 60 caracteres. Estas limitaciones debían aplicarse a todos los programas BASICODE para garantizar la independencia de la plataforma, porque el Bascoder era interpretado por el mismo intérprete BASIC específico de la computadora que el propio programa BASICODE.

Así, los Bascoders se cargaban en los distintos ordenadores como programas normales y, al ejecutarse, proporcionaban las rutinas adicionales para la entrada/salida estándar y de casete. Los programas escritos en BASICODE solo podían utilizarse después de que el Bascoder se hubiera cargado e iniciado. Sin embargo, en algunos ordenadores, los programas BASICODE podían combinarse 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, podía cargarse mucho más rápido que el mismo programa en formato BASICODE. Además, como no era necesario cargar el Bascoder completo para ejecutar el programa, quedaba más RAM disponible durante la ejecución.

Existían Basicode 2 Bascoders para Exidy Sorcerer , Colour Genie , PET , VIC-20 , Commodore 64 , Amiga , ZX81 , ZX Spectrum , Sinclair QL , Acorn Atom , BBC Micro , Electron , TRS-80 , MSX , Oric Atmos , P2000T , Grundy NewBrain , Amstrad CPC , IBM PC , Apple II , TI-99/4A , Aquarius y otros. Además, los usuarios avanzados podían escribir su propio Bascoder para el sistema de su elección, ya que el estándar del lenguaje y el formato de datos eran abiertos y estaban bien documentados. El estándar BASICODE 2 hizo posible el desarrollo de programas independientes de la plataforma con capacidades avanzadas (para la época). Asimismo, BASICODE se utilizaba para transmitir y compartir información, como noticias del mundo informático, a través de la radio, en forma de los llamados "revistas". De igual modo, los tutoriales de codificación de BASICODE y otra documentación también podrían transmitirse de esta manera.

BÁSICO 3 / 3C

En 1986, se desarrolló el nuevo estándar BASICODE 3. [ 1 ] Las adiciones más importantes fueron rutinas para gráficos monocromáticos simples , lectura y escritura de datos desde dentro de los programas y salida de sonido. Se publicó un folleto sobre el lenguaje, que venía con un casete que contenía Bascoders para varios microordenadores. [ 3 ] BASICODE 3 popularizó BASICODE en el ámbito informático de la RDA, y a partir de 1989 los programas BASICODE se transmitieron por radio en toda la RDA. También se publicó un libro que incluía un disco de vinilo con Bascoders para todos los ordenadores comunes en la RDA. [ 4 ] La última revisión de BASICODE, que presentaba gráficos en color, se lanzó como BASICODE 3C en 1991.

El final de BASICODE

A partir de 1990, la popularidad de BASICODE decayó rápidamente debido al auge de las computadoras de 16 y 32 bits, como la Atari ST, la CBM Amiga, la Acorn Archimedes y la gran cantidad de clones compatibles con IBM-PC. Si bien existían programas para estas máquinas, BASICODE era demasiado limitado para aprovechar los recursos que ofrecía la nueva generación de computadoras. A medida que el hardware, los sistemas operativos y el software de las nuevas computadoras se volvían más complejos, muchos usuarios no podían o no estaban dispuestos a escribir sus propios programas. El surgimiento de varias interfaces gráficas de usuario sofisticadas pero incompatibles y la disminución de la popularidad de las computadoras de 8 bits redujeron la utilidad de BASICODE y provocaron su desaparición.

La sucesora de la emisora ​​estatal de la RDA, la Deutschlandsender Kultur (que más tarde se integró en la nueva Deutschlandradio ), continuó emitiendo programas en BASICODE hasta aproximadamente 1992. Un estándar previsto llamado BASICODE 4 nunca llegó a materializarse, ya que NOS dejó de dar soporte al proyecto poco después del lanzamiento de BASICODE 3C. BASICODE todavía se utiliza por aficionados, en particular por los seguidores de los ordenadores de 8 bits, por su valor nostálgico, pero carece de relevancia práctica.

Importancia histórica

BASICODE fue un intento temprano de crear un estándar para el intercambio de programas y datos entre sistemas informáticos domésticos incompatibles. Es aproximadamente contemporáneo al estándar MSX desarrollado por Microsoft , que especificaba una plataforma de hardware compartida además de un dialecto BASIC común. Estos ordenadores fueron vendidos por varias compañías y compitieron directamente con otros ordenadores domésticos populares. MSX tuvo éxito principalmente en los mercados nacionales de los fabricantes, por ejemplo, Japón , Corea del Sur , los Países Bajos y Brasil . A diferencia de MSX, BASICODE no hizo ningún esfuerzo por estandarizar el hardware en el que se ejecutaba, sino que ofreció un subconjunto estandarizado del omnipresente lenguaje de programación BASIC y un formato de datos común para cintas de casete que podía leerse y escribirse en todos los ordenadores para los que BASICODE estaba disponible. Como resultado de esta independencia de dispositivos, a diferencia de MSX, BASICODE no estaba limitado a ordenadores de fabricantes específicos. La base instalada de BASICODE es difícil de estimar, porque tanto los Basicoders como los programas escritos en BASICODE generalmente estaban disponibles gratuitamente. Estaban disponibles para una gran cantidad de ordenadores domésticos vendidos durante esta época. Aunque no se trataba de un producto comercial, varios vendedores ofrecían versiones en cinta que se podían comprar a bajo precio, presumiblemente dirigidas a aquellos que no podían recibir las emisiones de radio BASICODE.

Cabe señalar que BASICODE, por diseño, no podía aprovechar al máximo las capacidades de los ordenadores anfitriones. El estándar de lenguaje definido por BASICODE era el mínimo común denominador de todos los sistemas informáticos relevantes. Este concepto se abandonó parcialmente con BASICODE3/3C, ya que algunos ordenadores o variantes como el ZX80 / ZX81 y el KC87 carecían de capacidad gráfica y de color, y las nuevas secciones de BASICODE que utilizaban estas capacidades no eran compatibles con ellos. Especialmente para aplicaciones que dependían de la sincronización, los gráficos o el sonido, como los videojuegos , BASICODE era claramente inferior a los programas escritos en BASIC nativo o código máquina . Los puntos fuertes de BASICODE residían en el diseño de aplicaciones, el software educativo y el intercambio de datos. El formato BASICODE también se utilizaba para programas Pascal . Pascal era un lenguaje mucho más consistente entre sistemas, pero los compiladores solo estaban disponibles para muy pocos tipos de ordenadores domésticos.

El concepto fundamental de BASICODE, que consiste en 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 entornos de ejecución específicos del sistema (Bascoder), fue posteriormente retomado en el lenguaje de programación Java , mediante máquinas virtuales Java específicas del sistema operativo 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 independientes de la plataforma, como el formato de documento portátil (PDF) y las aplicaciones lectoras de PDF que requiere.

El formato de datos BASICODE

Un casete de audio compacto BASICODE, el soporte de almacenamiento de datos típico de 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 por carácter.

Un bloque de datos comienza con el carácter 02 (STX, inicio de texto) y termina con el carácter 03 (ETX, fin de texto). Tras ETX, se transmite un byte de control formado por la suma binaria (XOR) de los bytes anteriores, incluyendo STX y ETX. El 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.

Cada byte se transmite en la secuencia "1 bit de inicio - 8 bits de datos - 2 bits de parada". Los bits de datos se envían comenzando por el menos significativo. El bit más significativo se transmite invertido y siempre es 0 (se transmite como 1) porque BASICODE solo utiliza caracteres ASCII . Por lo tanto, 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 tiene como objetivo maximizar la compatibilidad con diferentes ordenadores.

Para las señales de audio, se utilizan ondas cuadradas: una onda de 1200 Hz para un bit "0" y dos  ondas de 2400 Hz para un bit "1", lo que resulta en un tiempo de 1/1200 segundos por cada bit. Una pausa de más de 1/1800 segundos entre ondas marca el inicio de un byte, convirtiendo la siguiente onda en 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 inicio 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 velocidad de datos teórica de este formato es de 1200 bits por segundo. Si se tiene 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 resulta en una velocidad de datos útil de 102 bytes por segundo, o aproximadamente 6 kilobytes por minuto.

Decodificación de casetes de audio

En un ordenador moderno, las cintas de audio Basicode se pueden decodificar utilizando minimodem , un módem de software gratuito. Por ejemplo, una cinta convertida en un archivo WAV llamado basicode.wav se puede decodificar a sus bytes de datos correspondientes mediante el comando:

minimodem --rx 1200 -S 1200 -M 2400 --startbits 1 -7 --stopbits 3 -f basicode.wav >basicode.txt

Véase también

Referencias

  1. 1 2 3 4 5 ¡Qué dulce! Octubre de 1991, 'Código básico-3' de Bob Munniksma
  2. ^ Aarde & Kosmos número 7, 1986, 'BASICODE-3, uitgebreid esperanto voor komputers' por Rien van Dongen
  3. ^ Basicode-3 de Hermine Bakker, 1986, ISBN 90-201-1949-4
  4. BASICODE Mit Programmen auf Schallplatte für Heimcomputer por Horst Völz, 1990, ISBN 3-341-00895-0

Lecturas adicionales

  • (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. Auflaje. Kluwer Technische Boeken BV, Deventer/Amberes 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
  • (en neerlandés) Sitio web oficial de Hobbyscoop en los Países Bajos , 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 
  • Las imágenes de cintas descargables se pueden descargar con el permiso de Hobbyscoop.
  • Una colección de programas BASICODE de varios autores Varios programas BASICODE