Articulo de referencia

IBM BASIC

Cinco chips DIP ROM de 8 KB y un zócalo de expansión ROM vacío de 8 KB, en una placa base de IBM PC . Cuatro chips contienen Cassette BASIC y uno contiene la BIOS . El lengu...

Cinco chips DIP ROM  de 8 KB y un zócalo de expansión ROM vacío de 8 KB, en una placa base de IBM PC . Cuatro chips contienen Cassette BASIC y uno contiene la BIOS . 

El lenguaje de programación IBM Personal Computer BASIC , comúnmente abreviado como IBM BASIC , fue lanzado por primera vez por IBM con la IBM Personal Computer, Modelo 5150 (IBM PC) en 1981. IBM lanzó cuatro versiones diferentes del intérprete Microsoft BASIC , con licencia de Microsoft para PC y PCjr . Estas versiones se conocen como Cassette BASIC, Disk BASIC, Advanced BASIC (BASICA) y Cartridge BASIC. Las versiones Disk BASIC y Advanced BASIC se incluyeron con IBM PC DOS hasta PC DOS 4. Además de las características de un BASIC estándar ANSI , las versiones de IBM ofrecían soporte para el hardware gráfico y de sonido de la línea IBM PC. El código fuente podía introducirse con un editor de pantalla completa y se proporcionaban herramientas limitadas para la depuración básica de programas . IBM también lanzó una versión del compilador Microsoft BASIC para PC simultáneamente con el lanzamiento de PC DOS 1.10 en 1982.

Fondo

IBM licenció Microsoft BASIC para el IBM Personal Computer a pesar de que ya contaba con su propia versión de BASIC para los mainframes de la compañía. Don Estridge dijo: «Microsoft BASIC tenía cientos de miles de usuarios en todo el mundo. ¿Cómo se puede discutir eso?» [ 1 ]

BASIC de casete de IBM

IBM Cassette BASIC venía en 32 kilobytes (KB) de memoria de solo lectura (ROM), separada de la ROM BIOS  de 8 KB del IBM PC original, y no requería un sistema operativo para ejecutarse. Cassette BASIC proporcionaba la interfaz de usuario predeterminada invocada por la BIOS a través de INT 18h si no había una unidad de disquete instalada o si el código de arranque no encontraba un disquete de arranque al encender el equipo. El nombre Cassette BASIC provenía de su uso de cintas de casete en lugar de disquetes para almacenar programas y datos. Cassette BASIC estaba integrado en las ROM del PC y XT originales y de los primeros modelos de la línea PS/2 . Admite la carga y el guardado de programas solo en la interfaz de cinta de casete de IBM , que no está disponible en los modelos posteriores al Modelo 5150 original. La versión básica del 5150 venía con solo 16 KB de memoria de acceso aleatorio (RAM), que era suficiente para ejecutar Cassette BASIC. Sin embargo, Cassette BASIC se usaba raramente porque pocos PC se vendían sin unidad de disquete, y la mayoría se vendían con PC DOS y suficiente RAM para ejecutar al menos Disk BASIC; muchos también podían ejecutar Advanced BASIC. Existen tres versiones de Cassette BASIC: C1.00 (presente en los primeros PC IBM con placas base de 16 a 64 KB), C1.10 (presente en todos los PC IBM, XT, AT y PS/2 posteriores) y C1.20 (presente en el PCjr). 

IBM Disk BASIC

IBM Disk BASIC (BASIC.COM) se incluyó en el IBM PC DOS original . Debido a que utilizaba la  ROM BASIC de casete de 32 KB, [ 2 ] BASIC.COM no se ejecutaba ni siquiera en clones de PC altamente compatibles , como el Compaq Portable . [ 3 ] El nombre Disk BASIC provenía de su uso de disquetes , así como de cintas de casete, para almacenar programas y datos. El código basado en disco corregía erratas en el código residente en la ROM y añadía compatibilidad con disquetes y puertos serie .

Disk BASIC se identifica por la letra D que precede al número de versión. Añade compatibilidad con discos y algunas características ausentes en Cassette BASIC, pero no incluye las funciones extendidas de sonido ni gráficos de BASICA. El objetivo principal de Disk BASIC era ofrecer una versión "ligera" para los PC IBM con tan solo 48  KB de memoria: BASIC.COM dispondría entonces de unos 23  KB libres para código de usuario, mientras que BASICA solo tendría unos 17  KB. En 1986, todos los PC nuevos se comercializaban con al menos 256 KB, y las versiones de DOS posteriores a la 3.00 redujeron Disk BASIC a un pequeño fragmento que llamaba a BASICA.COM para garantizar la compatibilidad con archivos por lotes. Aun con todo este exceso de RAM, BASIC seguía asignando y gestionando solo unos 61  KB para programas de usuario, ya fuera Cassette BASIC, BASIC.COM o BASICA.

IBM Advanced BASIC

IBM Advanced BASIC (BASICA.COM) también se incluyó en el IBM PC DOS original y requiere el código residente en ROM de Cassette BASIC. [ 2 ] Añadió funciones como acceso a archivos de disquete, almacenamiento de programas en disco, sonido monofónico mediante el altavoz integrado del PC, funciones gráficas para establecer y borrar píxeles , funciones similares para dibujar líneas y círculos y establecer colores, y manejo de eventos para comunicaciones y pulsaciones de joystick. BASICA no se ejecuta en ordenadores que no sean de IBM (ni siquiera en los llamados "100% compatibles") ni en modelos posteriores de IBM, porque carecen del BASIC ROM necesario.

Las versiones de BASICA son las mismas que las de sus respectivas versiones de DOS, comenzando con la v1.00 y terminando con la v3.30. Las primeras versiones de BASICA no admiten subdirectorios y algunos comandos gráficos funcionan de manera ligeramente diferente. Por ejemplo, si LINEse usa la instrucción para dibujar líneas que se extienden fuera de la pantalla, BASIC simplemente las interseca con la línea adyacente más cercana, mientras que en BASIC 2.x y versiones posteriores, las líneas se extienden fuera de la pantalla y no se intersecan. El PAINTcomando en BASIC 1.x comienza a rellenar en la coordenada especificada y se expande hacia afuera en direcciones alternas hacia arriba y hacia abajo, mientras que en BASIC 2.x rellena todo lo que está debajo de la coordenada inicial y luego, después de terminar, todo lo que está encima de ella. PAINTEl comando de BASIC 1.x también utiliza la pila del sistema para el almacenamiento y, al rellenar áreas complejas, puede producir un OVERFLOWerror. Para remediar esto, se puede usar la CLEARinstrucción para expandir la pila de BASIC (128 bytes es el tamaño predeterminado). BASIC 2.x no utiliza la pila al pintar y, por lo tanto, no presenta este problema.

Compaq BASIC 1.13 fue el primer BASIC independiente (que no requiere Cassette BASIC) para PC, así como la única versión de BASIC, además de IBM BASICA 1.00 y 1.10, que utilizaba FCB e incluía la instrucción LINE original con líneas que se cruzan (la PAINTinstrucción en Compaq BASIC 1.13 funciona como en todas las versiones posteriores de BASICA/GW-BASIC: utiliza el nuevo algoritmo de relleno y no tiene pila).

Las primeras versiones de PC DOS incluían varios programas BASIC de ejemplo que demostraban las capacidades del PC, incluido el juego BASICA DONKEY.BAS .

Microsoft GW-BASIC es idéntico a BASICA, [ 4 ] con la excepción de que incluye el código Cassette BASIC en el programa, por lo que se ejecuta en computadoras que no son de IBM y en modelos posteriores de IBM que carecen de Cassette BASIC en la ROM.

Cartucho IBM PCjr BASIC

Una versión en cartucho ROM de BASIC estaba disponible únicamente en el IBM PCjr , lanzado en 1984, y admitía los modos gráficos adicionales y las capacidades de sonido posibles en esa máquina. [ 5 ] Es un superconjunto de BASIC avanzado. [ 6 ] El BASIC en cartucho solo podía operar dentro de los primeros 128  KB de memoria en el PCjr y no funcionaba con RAM de expansión, es decir , la función DEF SEG no se puede usar para apuntar a segmentos de memoria por encima de &H1FF0.

El cartucho BASIC se activaba escribiendo BASICA en la línea de comandos de DOS. Por el contrario, las versiones 2.1 y posteriores de IBM BASICA no se ejecutaban si detectaban un PCjr, pero se podían modificar para solucionar esta limitación.

Operación

Cassette BASIC se cargaba cuando un PC o PCjr se iniciaba sin un disco o cartucho de arranque. Disk BASIC y Advanced BASIC se cargan cuando se escribe su nombre de comando (BASIC y BASICA respectivamente) en la línea de comandos de DOS (excepto en un PCjr, que activa Cartridge BASIC en su lugar), con algunos parámetros opcionales para controlar la asignación de memoria. Al cargarse, un mensaje de identificación de inicio de sesión muestra el número de versión del programa y se inicia un editor de texto a pantalla completa (ver imágenes a la derecha). Las teclas de función tienen asignados comandos comunes, que se muestran en la parte inferior de la pantalla. Se pueden escribir comandos para cargar o guardar programas, y se pueden escribir expresiones y ejecutarlas en modo directo (inmediato) . Si una línea de entrada comienza con un número, el sistema de lenguaje almacena la siguiente línea de texto como parte del código fuente del programa, lo que permite al programador introducir un programa completo línea por línea, con números de línea antes de cada instrucción. Cuando se muestran en pantalla, las líneas se visualizan en orden ascendente de número de línea. Se pueden realizar cambios en una línea de código fuente del programa mostrada moviendo el cursor a la línea con las teclas de cursor y escribiendo sobre el texto en pantalla. El código fuente del programa se almacena internamente en forma tokenizada , donde las palabras reservadas se reemplazan con un token de un solo byte para ahorrar espacio y tiempo de ejecución. Los programas se pueden guardar en formato tokenizado compacto o, de forma opcional, como archivos de texto ASCII de DOS [ 7 ] que se pueden visualizar y editar con otros programas. Al igual que la mayoría de las demás aplicaciones de DOS, IBM BASIC es un programa en modo texto y no tiene funciones para ventanas, iconos, compatibilidad con el ratón ni edición mediante copiar y pegar .

Legado

GW-BASIC , lanzado en 1983, es un producto de Microsoft basado en disco que se distribuía con ordenadores MS-DOS que no eran de IBM y que admite todos los modos gráficos y funciones de BASICA en ordenadores que no tienen IBM Cassette BASIC.

El sucesor de BASICA para las versiones de MS-DOS y PC DOS, ahora descontinuado, es QBasic , lanzado en 1991. Es una versión simplificada del compilador Microsoft QuickBASIC : QBasic es un intérprete y no puede compilar archivos fuente, mientras que QuickBASIC puede compilar y guardar los programas en formato de archivo ejecutable .EXE . QuickBASIC también incluye algunas instrucciones y funciones de lenguaje avanzadas (principalmente relacionadas con la interfaz del sistema operativo y la programación en lenguaje máquina de bajo nivel ), admite programas multimodulares e incluye funciones avanzadas de depuración, características que no están presentes en QBASIC.

Referencias

  1. Curran, Lawrence J.; Shuford, Richard S. (noviembre de 1983). "Estridge de IBM" . BYTE . págs. 88–97 . Recuperado el 19 de marzo de 2016 . 
  2. 1 2 Williams, Gregg (enero de 1982). "Una mirada más cercana a la computadora personal IBM" . BYTE . pág. 36. Recuperado el 19 de octubre de 2013 . 
  3. Dahmke, Mark (enero de 1983). "The Compaq Portable" . BYTE . págs. 30–36 . Recuperado el 27 de julio de 2013 . 
  4. Rash, Wayne Jr. (diciembre de 1984). "The Zenith Z-150 PC" . BYTE . págs. 252–259 . 
  5. Comentarios de los lectores: Versiones de IBM BASIC , Compute! Magazine , n.° 78, noviembre de 1986, pág. 8, consultado el 23 de diciembre de 2011.
  6. IBM. Carta de anuncio de los cartuchos PCjr . 1983-11-01 ().
  7. Los archivos de texto de DOS terminan cada línea con un par de caracteres CR ( retorno de carro , ASCII 13) y LF ( salto de línea , ASCII 10), en ese orden.
  • Breve historia del desarrollo de BASIC www.phys.uu.nl/~bergmann/history.html (archivado)
  • PCE IBM PC Emulator  : emula IBM Cassette BASIC e IBM Cassette Interface con una unidad de casete de terceros conectada.
  • POPBASIC y RUNBASIC que invocan y copian IBM Cassette BASIC