Locomotive Basic es un dialecto propietario del lenguaje de programación BASIC escrito por Locomotive Software en el Amstrad CPC (donde estaba integrado en la 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 de CP / M suministrado con el Amstrad PCW .
Apareció por primera vez | 1984 |
---|---|
SO | AMSDOS |
Licencia | Propiedad |
Influenciado por | |
Hay dos versiones de Locomotive BASIC: 1.0 que solo vino con el modelo CPC 464 y 1.1 que se envió con todas las demás versiones. BASIC 1.1 también se envió 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 para escribir el complemento Mallard BASIC para Acorn Computers Z80 para BBC Micro. Se informa que tomó alrededor de 12 semanas mejorar el código existente, y fue "muy influenciado" por BBC BASIC , aunque agregó funciones adicionales para hacer cosas que habrían requerido el lenguaje ensamblador en la BBC. [1]
Características
Fue una implementación BASIC bastante simple pero poderosa para los estándares del día, con comandos dedicados para manejar 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 sistema de color y el manejo de la paleta eran incómodos. Se imprimió una tabla con los códigos numéricos para los 27 colores del sistema sobre la carcasa de la unidad de disco de 3 "incorporada en las máquinas 664 y posteriores. Por simple que fuera, se destacó sin embargo entre otros BÁSICOS de la época al ofrecer un temporizador -mecanismo de interrupción de software basado en los comandos TODOS o DESPUÉS; esto ofrecía una llamada repetida o única cronometrada, respectivamente, al número de línea BÁSICO de su elección.
Además, en comparación con otras computadoras domésticas de la época, el Amstrad a través de Locomotive BASIC otorgó 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 usó en ZX Spectrums de último modelo , así como en las computadoras Atari ST y MSX , pero ninguna de ellas 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 pueden hacer con un solo comando SOUND, con hasta 7 parámetros. Por supuesto, las técnicas especialmente complejas y / o de bajo nivel no se pueden hacer con BASIC debido a que requieren un acceso más preciso o directo al hardware, por ejemplo, música especialmente compleja de los rastreadores (incluidos los acordes simulados que usan arpegios, etc.), la reproducción de sonidos muestreados digitalmente como en el juego RoboCop, por ejemplo, y así sucesivamente.
La administración de discos, cintas y archivos era administrada por BASIC y, por lo general, era lo suficientemente buena para una administración simple de archivos, con comandos como GET, PUT, ERASE, SAVE, MERGE, RUN, CAT, LOAD, etc. De hecho, durante esos años , el BASIC suministrado de serie con todos los ordenadores domésticos de bajo coste también actuaba como un sistema operativo más o menos sencillo .
También estaban disponibles algunos comandos especiales para la asignación y el manejo de la memoria, como MEMORY y un comando paramétrico LOAD, que permite, por ejemplo, cargar un archivo que contiene datos de imagen "sin procesar" en la memoria de video, haciendo que se muestre, con un par de BÁSICOS instrucciones. Agregar las direcciones de memoria correctas como parámetro a los comandos LOAD o SAVE permitiría cargar fácilmente imágenes de pantalla de 16 KB sin procesar. Llamar a otra dirección dio 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 "sincronizar frame-flyback" (llamada & bd19 ); esto recibió su propio comando dedicado en Basic 1.1 - FRAME. Con PEEK y POKE , CALL proporcionó una interfaz para la programación en lenguaje ensamblador de BASIC.
Rivales contemporáneos
Locomotive BASIC en comparación con el BASIC de Commodore 64 ( Commodore BASIC ), que no tenía comandos dedicados para gráficos o sonido, permitía hacer prácticamente cualquier cosa que estuviera dentro de las capacidades estándar de la máquina. Esto no dejaba de ser importante, ya que algunas otras máquinas de la época que usaban gráficos completos o sonido estaban limitadas a los programadores ensambladores . MSX, Spectrum y algunos otros ofrecieron un conjunto de comandos similar, más o menos completo, para sus capacidades de sonido y gráficos. Las únicas cosas que van claramente más allá de las capacidades BÁSICAS fueron los modos de sobreexploración utilizados en juegos y demostraciones, modos de gráficos de 27 colores, reproducción de sonido digital y desplazamiento suave.
A diferencia de Sinclair BASIC o Commodore 64 BASIC, que tenían varios atajos de comandos de teclado o teclas especializadas para elegir símbolos o colores, las palabras clave de Locomotive BASIC se escribieron en su totalidad y el intérprete las analizó , reconoció y tokenizó . Sin embargo, había abreviaturas como "?" para "IMPRIMIR" y algunos atajos. Los programas pueden guardarse en Compact Cassette o disquete y recuperarse como archivos binarios o ASCII .
Referencias
- ^ Smith, Tony (12 de febrero de 2014). "NO estás despedido: la historia del increíble CPC 464 de Amstrad" . El registro . Consultado el 17 de febrero de 2014 .
enlaces externos
- Referencia BÁSICA de locomotora
- Referencia de comandos con ejemplos de código
- Referencia de comando (incompleta)
- Ejemplos de código adicionales en Rosetta Code