# IBM Personal Computer BASIC

IBM Personal Computer BASIC (IBM PC BASIC o IBM BASIC) fueron tres versiones del lenguaje de programación BASIC para la computadora IBM PC, llamadas: Cassette BASIC, Disk BASIC y Advanced BASIC. Fueron versiones licenciadas por IBM para IBM PC del intérpret BASIC de Microsoft.
El Disk BASIC tenía todas las características del Cassette BASIC, más algunas adicionales; y el Advanced BASIC tenía todas las características del Disk BASIC más algunas adicionales.

## Cassette BASIC

El Cassette BASIC o IBM ROM BASIC era el núcleo de todas las versiones del BASIC, y residía en el IBM PC original en 4 módulos ROM de 8KiB, junto con un módulo de 8 KiB del IBM PC ROM BIOS, por lo que no requería un sistema operativo para ejecutarse. El nombre de Cassette BASIC fue debido a la utilización de casetes para el almacemiento de los programas y los datos.
Cuando se encendía el computador, la rutina de bootstraping del Boot Strap Loader del BIOS intentaba cargar el sector de arranque del disquete insertado en la unidad de disco. Si surgía cualquier problema, como que no se pudiera leer el sector de arranque, o que no había ningún disquete en la unidad de disco, o que no hubiera unidad de disco, el Boot Strap Loader llamaba al código del Casete BASIC en la ROM para que este se comenzara a funcionar.
Debido a que el Casete BASIC, no residía en RAM y como no estaba cargado el sistema operativo IBM PC DOS, tenía a su disposición casi toda la memoria RAM del sistema. Solo estaban ocupados los primeros cientos de bytes usados para almacenar los vectores de interrupción del procesador Intel 8088, las áreas de datos del BIOS del IBM PC, y las áreas de datos usadas por el propio interpretador.
El Casete BASIC podía usar un grabador de casete casero para leer y almacenar programas y datos secuencialmente. No tenía acceso a las unidades de disco. Tenía una capacidad gráfica sencilla para dibujar puntos, líneas, rectángulos (si hubiera conectada una tarjeta CGA), podía generar tonos de sonido a través del altavoz del PC, tenía entrada de joystick, etc.
El Casete BASIC estaba integrado en los ROMs del modelo original de la IBM PC y XT, y en los primeros modelos de la línea PS/2. Solo soportaba cargar y guardar programas en la interfaz de casete, la cual ya no estaba disponible después del modelo 5150; este contaba solamente con 16 KiB de memoria de acceso aleatorio (RAM), el cual era suficiente para ejecutar el Casete BASIC.
Sin embargo, el Cassette BASIC raramente fue utilizado debido a que muy pocas PCs fueron vendidas sin una unidad de disco, y la gran mayoría fueron vendidas con PC DOS y suficiente RAM para correr Disk BASIC, así como también correr Advanced BASIC.
Existieron tres versiones del Casete BASIC:
* C1.00 encontrado en las primeras IBM PCs con tarjetas madre con 16k-64k.
* C1.10 encontrado en las posteriores IBM PCs, XTs, ATs, y PS/2s.
* C1.20 encontrado en la PCjr.
Tanto el Disk BASIC como el Advanced BASIC usaban el ROM del Casete BASIC para trabajar. Es por eso que no podían correr en un clon del IBM PC, pues éstos no tenían dicha ROM (podían detenerse o reiniciarse).

## Disk BASIC

El Disk BASIC (BASIC.COM) venía como un programa ejecutable en el disquete del IBM PC DOS y requería 32 KB de RAM. Dado que para funcionar se necesitaba que cargara el DOS, y luego el propio interpretador, ambos ocupando espacio de RAM, había menos memoria disponible para los programas de BASIC que la que había para el Casete BASIC.
El nombre de Disk BASIC provenía de la utilización de diquetes en vez de casetes para almacenar programas y datos.
El Disk BASIC añadía funcionalidad para manejar archivos de disco, tanto secuencial como de acceso aleatorio, y acceso al puerto de comunicaciones RS-232, entre otras cosas.
Ninguna versión del IBM BASIC correría en los clones de computadoras IBM computers o modelos posteriores de IBM, debido a que no tenían el ROM BASIC requerido.
Disk BASIC podía ser identificado por el uso de la letra D precedido por el número de versión. Agregaba el soporte de disquetes y algunas funcionalidades de carecía el Cassette BASIC, pero no incluía las funciones extendidas de sonido/gráficos de BASICA. El propósito principal del Disk BASIC era una versión "ligera" para las IBM PCs con solamente 64k de memoria.
Para 1986, todas las nuevas PCs era suministradas con al menos 256k y versiones de DOS posteriores a 3.00 redujeron Disk BASIC a solamente un pequeño programa llamado BASICA.COM para compatibilidad con los archivos batch.

## Advanced BASIC

Al igual que el Disk BASIC, el Advanced BASIC (también llamado BASICA) venía como un programa ejecutable en el disquete del PC DOS. Era más grande y ocupaba más espacio en la memoria RAM que el Disk BASIC, quedando menos memoria para los programas BASIC del usuario, pero añadía funciones avanzadas que no tenían ni el Casete BASIC, ni el Disk BASIC, como por ejemplo, funciones gráficas para dibujar círculos, rellenar polígonos cerrados con un color, soporte para producir música, y otras.

## GW BASIC

Cuando Microsoft sacó al mercado el sistema operativo MS DOS para los clones del IBM PC, incluyó el lenguaje de programación GW-BASIC, que era equivalente al Advanced BASIC del IBM PC DOS, con la diferencia que mientras el Disk BASIC y el Advanced BASIC necesitaban el ROM del Casete BASIC para poder funcionar, el GW-BASIC funcionaba por sí solo independientemente.