stringtranslate.com

Locomotora BASICA

Locomotive Basic es un dialecto propietario del lenguaje de programación BASIC escrito por Locomotive Software en el Amstrad CPC (donde estaba integrado en ROM ) y el posterior Locomotive BASIC-2 como una aplicación GEM en el Amstrad PC1512 y 1640. Fue el descendiente principal de Mallard BASIC , [1] el intérprete para CP/M suministrado con el Amstrad PCW .

Existen dos versiones de Locomotive BASIC: la 1.0, que solo se incluía con el modelo CPC 464, y la 1.1, que se incluía con todas las demás versiones. La 1.1 BASIC también se incluía con las máquinas de la serie Amstrad CPC Plus , como parte del cartucho de juego incluido.

Desarrollo

El desarrollo se basó en el trabajo existente realizado recientemente escribiendo Mallard BASIC para el complemento Z80 de Acorn Computers para BBC Micro. Se informó que se necesitaron alrededor de 12 semanas para mejorar el código existente y que estuvo "muy influenciado" por BBC BASIC , aunque agregó funciones adicionales para hacer cosas que habrían requerido lenguaje ensamblador en BBC. [1]

Características

Un programa en Locomotive BASIC que dibuja un mapa del mundo en Modo 1 (320x200px y 4 colores)
Impresión de barras de color en la pantalla en modo 0 (16 colores) con BASIC
Paleta de colores Amstrad CPC con números de tinta

Era una implementación de BASIC bastante simple pero poderosa para los estándares de la época, con comandos dedicados para el manejo de gráficos (como DRAW, PLOT, INK y PAPER en todas las versiones; más FILL en v1.1), incluso permitiendo la creación de múltiples pantallas, ventanas y similares, aunque el manejo del sistema de color y la paleta era complicado. Una tabla con los códigos numéricos para los 27 colores del sistema estaba impresa sobre la carcasa de la unidad de disco de 3" incorporada en las máquinas 664 y posteriores. Sin embargo, por simple que fuera, se destacaba entre otros BASIC de la época al ofrecer un mecanismo de interrupción de software basado en temporizador que usaba los comandos EVERY o AFTER; esto ofrecía una llamada repetida o única temporizada respectivamente al número de línea BASIC que el usuario eligiera.

Además, en comparación con otros ordenadores domésticos de la época, el Amstrad, a través de Locomotive BASIC, garantizaba un nivel relativamente alto de control sobre el chip de sonido CPC, un AY-3-8912 con 3 canales melódicos y 1 canal de ruido. El mismo chip también se utilizó en los últimos modelos de ZX Spectrum , así como en los ordenadores Atari ST y MSX , pero ninguno de ellos tenía un comando SOUND integrado tan completo. Muchas cosas, desde seleccionar un canal en particular o una combinación de canales, configurar envolventes, volumen, tono, ruido, etc., se podían hacer con un solo comando SOUND, con hasta 7 parámetros. Es cierto que las técnicas especialmente complejas y/o de bajo nivel no se podían realizar con BASIC debido a que requerían un acceso más preciso o directo al hardware, por ejemplo, música especialmente compleja de trackers (incluyendo acordes simulados usando arpegios, etc.), la reproducción de sonidos muestreados digitalmente como en el juego RoboCop , por ejemplo, etc.

La gestión de discos, cintas y archivos eran gestionados por el propio BASIC, y normalmente eran lo suficientemente buenos para una gestión sencilla de archivos, con comandos como GET, PUT, ERASE, SAVE, MERGE, RUN, CAT, LOAD, etc. De hecho, durante aquellos años, el BASIC que venía de serie con la mayoría de ordenadores domésticos de bajo coste actuaba también como un sistema operativo más o menos sencillo .

Cargar una imagen desde un disquete en Locomotive BASIC

También estaban disponibles algunos comandos especiales para la asignación y manejo de memoria, como MEMORY y un comando LOAD paramétrico, que permitía, por ejemplo, cargar un archivo que contenía datos de imagen "en bruto" en la memoria de vídeo, haciendo que se mostrara, con un par de instrucciones BASIC. Añadir la(s) dirección(es) de memoria correcta(s) como parámetro a los comandos LOAD o SAVE permitiría cargar fácilmente imágenes de pantalla de 16 KB sin comprimir. LLAMAR a otra dirección proporcionaba un reinicio forzado del sistema (llamada 0), el famoso "Presione cualquier tecla" (llamada &bb18) o para eliminar el parpadeo en la animación al permitirle sincronizar con el escaneo de trama del monitor a través de "sync frame-flyback" (llamada &bd19); a esto se le dio su propio comando dedicado en Basic 1.1: FRAME. Con PEEK y POKE , CALL proporcionó una interfaz para la programación en lenguaje ensamblador desde BASIC.

Rivales contemporáneos

A diferencia del BASIC integrado del Commodore 64 ( Commodore BASIC ), que no tenía comandos dedicados para gráficos o sonido, el Locomotive BASIC permitía hacer prácticamente cualquier cosa que estuviera dentro de las capacidades estándar de la máquina. Esto no era poco importante, ya que algunas otras máquinas de la época requerían que los programadores usaran ensamblador para acceder a todas las capacidades de sonido y gráficos de su sistema. MSX, Sinclair Spectrum y algunas otras ofrecían un conjunto de comandos similar, más o menos completo, para sus capacidades de sonido y gráficos. Las únicas cosas que iban claramente más allá de las capacidades del BASIC eran los modos de sobreescaneo utilizados en juegos y demostraciones, los modos gráficos de 27 colores, la reproducción de sonido digital y el desplazamiento suave.

A diferencia del BASIC Sinclair o del BASIC Commodore 64, que tenían varios atajos de teclado o teclas especializadas para elegir símbolos o colores, las palabras clave del BASIC Locomotive se escribían completas y el intérprete las analizaba , reconocía y convertía en tokens . Sin embargo, había abreviaturas como "?" para "PRINT" y algunos atajos. Los programas se podían guardar en un casete compacto o en un disquete y recuperarse como archivos binarios o ASCII .

Referencias

  1. ^ Smith, Tony (12 de febrero de 2014). "No estás despedido: la historia del asombroso CPC 464 de Amstrad". The Register . Consultado el 17 de febrero de 2014 .

Enlaces externos