Articulo de referencia

MBASIC

MBASIC es la implementación de Microsoft BASIC para el sistema operativo CP/M . MBASIC desciende de los intérpretes originales Altair BASIC, que figuraban entre los primeros pro...

MBASIC es la implementación de Microsoft BASIC para el sistema operativo CP/M . MBASIC desciende de los intérpretes originales Altair BASIC, que figuraban entre los primeros productos de Microsoft. MBASIC fue una de las dos versiones de BASIC incluidas con el ordenador Osborne 1. El nombre "MBASIC" deriva del nombre del archivo de disco MBASIC.COM del intérprete BASIC. MBASIC, al igual que su predecesora familia de intérpretes de 8 bits Microsoft BASIC , se inspiró en gran medida en BASIC-PLUS de Digital Equipment Corporation PDP-10 , aunque era más simple (menos estructurado) y más lento (sin compilación parcial).

Ambiente

MBasic 5.21 ejecutándose en un sistema Z80 CP/M, mostrado en un monitor monocromo típico de aquella época.

La versión 5 de MBASIC requería un sistema CP/M con al menos 28  KB de memoria de acceso aleatorio (RAM) y al menos una unidad de disquete.

A diferencia de las versiones de Microsoft BASIC-80 , que eran personalizadas por los fabricantes de ordenadores domésticos para aprovechar las características específicas del hardware de cada equipo, MBASIC dependía únicamente de las llamadas al sistema operativo CP/M para todas las operaciones de entrada y salida. Solo estaban disponibles la consola CP/M (pantalla y teclado), la impresora de línea y los dispositivos de disco.

MBASIC, en su versión estándar, carecía de funciones para gráficos , color, joysticks, ratones, comunicaciones serie , redes , sonido e incluso reloj en tiempo real . No era totalmente compatible con las funciones del sistema operativo CP/M, por ejemplo, no admitía las áreas de usuario de CP/M para organizar archivos en un disquete. Dado que los sistemas CP/M solían ser monousuario e independientes, no ofrecían bloqueo de archivos ni registros, ni ninguna forma de multitarea . A pesar de estas limitaciones, en su momento MBASIC se consideró una implementación potente y útil de BASIC.

Características

Sistema de lenguaje

MBASIC es un intérprete . El texto fuente del programa se almacenaba en memoria en forma tokenizada, con las palabras clave de BASIC reemplazadas por tokens de un byte que ahorraban espacio de memoria y aceleraban la ejecución. Cualquier línea precedida por un número de línea se almacenaba como texto del programa; las instrucciones de BASIC sin prefijo de número de línea se ejecutaban inmediatamente como comandos. Los programas podían listarse en la pantalla para su edición o guardarse en disco en formato binario comprimido o como texto ASCII plano . Cada línea fuente se identificaba con un número, que podía usarse como destino de una transferencia GOTO o GOSUB . Solo se proporcionaban comandos de edición de línea. [ 1 ] A menudo era beneficioso guardar un programa como texto plano y editarlo con un editor completo.

El texto del programa, las variables , los búferes de disco y el propio sistema operativo CP/M debían compartir el espacio de direcciones de 64 kilobytes del procesador 8080. Normalmente, al iniciar MBASIC por primera vez, había menos de 32 kB de memoria disponible para programas y datos, incluso en una máquina equipada con 64 kilobytes de RAM. REM Se podían colocar líneas de comentarios, precedidas por la palabra clave o un apóstrofo, en el texto del programa, pero ocupaban un valioso espacio de memoria, lo que desincentivaba a los usuarios de BASIC a documentar completamente su código. Para permitir la ejecución de programas más grandes y complejos, las versiones posteriores de MBASIC admitían funciones que permitían leer y ejecutar porciones del texto del programa bajo el control del programa (las instrucciones " " CHAIN y MERGE ). No se proporcionaba soporte para la ejecución de comandos de "shell", aunque esta funcionalidad podía ser duplicada por un programador decidido.

Una ventaja particular de MBASIC eran los mensajes de error de texto completo que proporcionaba para errores de sintaxis y de ejecución. MBASIC también tenía una función de "seguimiento" que mostraba los números de línea a medida que se ejecutaban. Si bien esto ocupaba el mismo espacio en la pantalla que la salida normal del programa, era útil para detectar condiciones como bucles infinitos .

Archivos y entrada/salida

Los datos podían leerse y almacenarse en disco como archivos secuenciales (delimitados por la convención CP/M de CR / LF al final de cada línea) o como archivos de acceso aleatorio de longitud fija, que, con un programador suficientemente capacitado, podían utilizarse para manipular registros como en una base de datos. El formato binario de Microsoft para números de coma flotante era propietario de la implementación, lo que significaba que los datos solo podían intercambiarse con otros programas que utilizaran la representación de texto ASCII o mediante una programación compleja para convertir el formato binario.

Variables y tipos de datos

MBASIC admitía los siguientes tipos de datos:

  • Datos de caracteres de 8 bits, en cadenas de longitud entre 0 y 255 caracteres;
  • enteros de 16 bits ;
  • Número de coma flotante de 32 bits (precisión simple), equivalente a seis dígitos decimales, con un exponente de dos dígitos;
  • Número de coma flotante de 64 bits (doble precisión), equivalente a dieciséis dígitos decimales, con un exponente de dos dígitos.

Los operadores de cadena incluían la selección de subcadenas, la concatenación, la asignación y la comprobación de igualdad.

Se permitían matrices de los tipos mencionados con hasta 7 dimensiones, pero ninguna función u operador funcionaba con matrices; por ejemplo, no había asignación de matrices. A diferencia de otras implementaciones de BASIC de la época, MBASIC no ofrecía soporte para operaciones matriciales , números complejos ni un tipo de dato decimal (BCD) para cálculos financieros. Todas las operaciones de punto flotante se realizaban por software, ya que los sistemas CP/M típicos no disponían de hardware de punto flotante . Las funciones matemáticas integradas ( seno, coseno , tangente , logaritmo natural , exponencial , raíz cuadrada ) solo proporcionaban resultados de precisión simple. Se proporcionaba un generador de números pseudoaleatorios por software ; este dependía de que el usuario introdujera un número semilla para obtener una secuencia de números útil para juegos y algunas simulaciones. MBASIC permitía, pero no requería, la LET palabra clave para las sentencias de asignación.

Las primeras versiones de BASIC para microcomputadoras eran conocidas por tener nombres de variables de uno o dos caracteres, lo que dificultaba recordar su significado en programas complejos. La versión 5 de MBASIC permitía identificadores de hasta 40 caracteres, lo que posibilitaba a los programadores asignar nombres legibles a las variables.

Control de flujo del programa

El control del flujo del programa en MBASIC se controlaba mediante IF...THEN...ELSE... pruebas condicionales, WHILE...WEND bucles e instrucciones GOTO AND GOSUB . No CASE había ninguna instrucción AND disponible, aunque una ON...GOTO... instrucción GOTO (calculada) proporcionaba bifurcaciones múltiples. Las subrutinas no tenían parámetros y todas las variables eran globales. MBASIC no hacía obligatoria la programación estructurada para los programadores y era fácil escribir código espagueti .

PEEKs, POKEs y funciones de usuario

Al igual que en otros ordenadores de 8 bits de finales de los años 70 y principios de los 80, las funciones PEEK y POKE se utilizaban para leer y escribir directamente en la memoria. Dado que estos sistemas normalmente carecían de protección de memoria , esto permitía a un programador acceder a partes del sistema operativo o a funciones que de otro modo no estarían disponibles. Esto también ofrecía la posibilidad de que los programas de usuario bloquearan el sistema, generalmente por accidente. Por ejemplo, un programador de CP/M podría usar una POKE función para permitir que BASIC cambiara el dispositivo de consola al puerto serie, si la BIOS del sistema lo admitía. En máquinas con relojes en tiempo real, PEEKse podría haber utilizado un conjunto de instrucciones para acceder a la hora.

Para operaciones más complejas, MBASIC permitía funciones definidas por el usuario que podían llamarse desde un programa BASIC. Estas funciones se ubicaban normalmente en un área reservada de memoria o se insertaban como constantes de cadena (mediante la instrucción POKE), como una serie de códigos máquina ( opcodes ). MBASIC también proporcionaba hardware INPe OUTinstrucciones que leían y escribían directamente en los puertos de entrada/salida del microcontrolador 8080. Esto permitía controlar dispositivos periféricos desde un programa BASIC si el hardware del sistema lo permitía.

Cualquier programa MBASIC que utilizara PEEKy POKE, y de funciones de usuario de código máquina, no era portable entre máquinas sin modificaciones.

Sucesores de MBASIC

Además del BASIC-80 de Microsoft para CP/M, también estaba disponible una variante de MBASIC para el sistema operativo ISIS-II .

MSX-BASIC es también un conocido sucesor de MBASIC, que incluye varias extensiones específicas para las máquinas MSX .

Todas las funciones de CP/M MBASIC estaban disponibles en BASICA o GWBASIC, sistemas basados ​​en disco para IBM PC, lo que facilitó la migración de programas de CP/M a PC compatibles. Los tokens utilizados para representar las palabras clave eran diferentes, por lo que los programas de CP/M debían guardarse en formato fuente ASCII. Normalmente, las secuencias de escape de formato de pantalla incluidas en la versión de CP/M se reemplazaban por los comandos de posicionamiento del cursor presentes en las versiones de BASIC para PC; por lo demás, se requería poca modificación.

BASCOM

Microsoft vendió un compilador CP/M BASIC (conocido como BASCOM ) que utilizaba un lenguaje fuente similar al de MBASIC. Un programa depurado con MBASIC podía compilarse con BASCOM. Dado que el texto del programa ya no se almacenaba en memoria y los elementos de tiempo de ejecución del compilador eran más pequeños que el intérprete, se disponía de más memoria para los datos del usuario. La velocidad de ejecución de los programas reales se triplicó aproximadamente.

Los desarrolladores acogieron con beneplácito BASCOM como una alternativa al popular, pero lento y torpe, CBASIC . A diferencia de CBASIC, BASCOM no necesitaba un preprocesador para el código fuente de MBASIC, por lo que podía depurarse de forma interactiva. [ 2 ] Si bien aprobó su superior ciclo de edición-compilación-ejecución-depuración en comparación con CBASIC, y afirmó que los binarios se ejecutaban mucho más rápido, Jerry Pournelle denunció en diciembre de 1980 el requisito de Microsoft de una regalía del 9% por cada copia binaria [ 3 ] y 40 dólares por combinaciones de hardware y software. La compañía también se reservaba el derecho de auditar los registros financieros de los desarrolladores. Dado que las tasas de regalías típicas de los autores de software eran del 10-25%, InfoWorld afirmó en 1980 que la tasa de regalías adicional del 9% de BASCOM "podría hacer que el desarrollo de software fuera completamente no rentable", concluyendo que "Microsoft tiene la solución técnica [a las fallas de CBASIC], pero no la económica". [ 2 ]

Importancia de MBASIC

MBASIC fue una herramienta importante durante la era de las computadoras CP/M de 8 bits. Los usuarios expertos podían escribir rutinas en MBASIC para automatizar tareas que, en los sistemas actuales, se realizarían mediante potentes comandos de programas de aplicación o lenguajes de scripting. El intercambio de programas útiles en MBASIC era una función común de los grupos de usuarios de computadoras . Introducir largas listas de BASIC de un artículo de revista era una forma de "arrancar" software en un nuevo sistema CP/M. Al menos un compilador para un lenguaje de alto nivel se escribió en MBASIC, y se escribieron muchos juegos pequeños y programas de utilidad que variaban desde unas pocas líneas hasta varios miles de líneas de código.

Otros usos

MBASIC es también el nombre de un compilador BASIC comercial para la familia de microcontroladores PIC de Microchip Technology , desarrollado por Basic Micro, Inc., sin relación con el intérprete CP/M.

Referencias

  1. Los productos CP/M que ofrecían soporte para edición a pantalla completa requerían sus propias rutinas de instalación para personalizar el software según el terminal informático utilizado como consola del sistema. CP/M no ofrecía soporte para estandarizar las capacidades del terminal.
  2. 1 2 "Editorial" . InfoWorld . 18 de agosto de 1980. pág.  8.
  3. Pournelle, Jerry (diciembre de 1980). "BASIC, lenguajes de programación y aventuras informáticas" . BYTE . pág. 222. Consultado el 18 de octubre de 2013 . 
  • Thom Hogan y Mike Iannamico, Guía de referencia del usuario de Osborne 1 , (1982) Osborne Computer Corporation
  • David A. Lien, Manual de BASIC , 2.ª edición, Enciclopedia del lenguaje de programación BASIC (1981), Compusoft Publishing
  • Manual de referencia de BASIC 80 , Microsoft Corporation, sin fecha