Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Locomotive Basic - это проприетарный диалект языка программирования BASIC, написанный Locomotive Software на Amstrad CPC (где он был встроен в ROM ) и более поздний Locomotive BASIC-2 в качестве приложения GEM на Amstrad PC1512 и 1640. Это был Основной потомок Mallard BASIC , [1] интерпретатор для CP / M поставляется с Amstrad PCW .

Существует две версии Locomotive BASIC: 1.0, которая поставляется только с моделью CPC 464, и 1.1, которая поставляется со всеми другими версиями. BASIC 1.1 также поставлялся с машинами серии Amstrad CPC Plus как часть входящего в комплект игрового картриджа.

Развитие [ править ]

Разработка была основана на существующей недавно проведенной работе по написанию дополнения Mallard BASIC для Acorn Computers Z80 для BBC Micro. Сообщается, что на улучшение существующего кода ушло около 12 недель, и на него «сильно повлиял» BBC BASIC , хотя и были добавлены дополнительные функции для выполнения вещей, которые потребовали бы языка ассемблера на BBC. [1]

Особенности [ править ]

Это была довольно простая, но мощная реализация BASIC по стандартам того времени, с выделенными командами для работы с графикой (такими как DRAW, PLOT, INK и PAPER во всех версиях; плюс FILL в v1.1), даже позволяя создавать несколько экранов, окон и тому подобное, хотя цветовая система и обработка палитры были неудобными. Таблица с числовыми кодами для 27 системных цветов была напечатана на корпусе встроенного 3-дюймового дисковода на машинах 664 и более поздних моделей. Каким бы простым она ни была, она выделялась среди других BASIC того времени тем, что предлагала таймер. - основанный на программном механизме прерывания с использованием команд EVERY или AFTER; это предлагало синхронизированный повторяющийся или однократный вызов, соответственно, на номер строки BASIC по вашему выбору.

Кроме того, по сравнению с другими домашними компьютерами того времени Amstrad через Locomotive BASIC предоставил относительно высокий уровень контроля над звуковым чипом CPC AY-3-8912 с 3 мелодическими каналами и 1 шумовым каналом. Этот же чип также использовался в последних моделях ZX Spectrums , а также в Atari ST и MSX.компьютеров, но ни у одного из них не было такой полной встроенной команды ЗВУК. Многие вещи, от выбора определенного канала или комбинации каналов, настройки огибающих, громкости, высоты тона, шума и т. Д., Могут быть выполнены с помощью одной команды SOUND с максимум 7 параметрами. Конечно, особенно сложные и / или низкоуровневые техники не могут быть реализованы с помощью BASIC из-за того, что они требуют более точного или прямого доступа к оборудованию, например, особенно сложная музыка с трекеров (включая симулированные аккорды с использованием арпеджио и т. Д. ), Воспроизведение оцифрованные звуки, как например в игре RoboCop , и так далее.

Управление дисками, лентами и файлами осуществлялось самим BASIC, и обычно этого было достаточно для простого управления файлами с помощью таких команд, как GET, PUT, ERASE, SAVE, MERGE, RUN, CAT, LOAD и т. Д. Фактически, в те годы BASIC, входящий в стандартную комплектацию каждого недорогого домашнего компьютера, также работал как более или менее простая операционная система .

Также были доступны некоторые специальные команды для выделения и обработки памяти, такие как MEMORY и параметрическая команда LOAD, позволяющая, например, загружать файл, содержащий "сырые" данные изображения, в видеопамять, вызывая его отображение с помощью пары BASIC. инструкции. Добавление правильного адреса (а) памяти в качестве параметра к командам ЗАГРУЗИТЬ или СОХРАНИТЬ позволит легко загружать необработанные несжатые изображения экрана размером 16 КБ. Вызов другого адреса приводил к принудительному сбросу системы (вызов 0), знаменитому «Нажатию любой клавиши» (call & bb18) или устранению мерцания в анимации, позволяя вам синхронизироваться с растровым сканированием монитора через «синхронизацию кадров с обратным ходом» (call & bd19 ); в Basic 1.1 для этого была дана отдельная команда - FRAME. С PEEK и POKE , CALL предоставляет интерфейс для программирования на ассемблере из BASIC.

Современные соперники [ править ]

Locomotive BASIC по сравнению с Commodore 64 's BASIC ( Commodore BASIC ), в котором не было специальных команд для графики или звука, позволял делать практически все, что было в пределах стандартных возможностей машины. Это было немаловажно, поскольку некоторые другие машины той эпохи, использующие полную графику или звук, были ограничены программистами на ассемблере . MSX, Spectrum и некоторые другие предлагали аналогичный, более или менее полный набор команд для своих звуковых и графических возможностей. Единственное, что явно выходило за рамки возможностей BASIC, - это режимы нерабочей развертки, используемые в играх и демонстрациях, режимы 27-цветной графики, воспроизведение цифрового звука и плавная прокрутка.

В отличие от Sinclair BASIC или Commodore 64 BASIC, у которых были различные сочетания клавиш или специальные клавиши для выбора символов или цветов, ключевые слова Locomotive BASIC вводились полностью, а интерпретатор анализировал , распознавал и токенировал их. Однако были сокращения вроде "?" для «ПЕЧАТЬ» и несколько ярлыков. Программы могут быть сохранены на компакт-кассете или гибком диске и извлечены как двоичные файлы или файлы ASCII .

Ссылки [ править ]

  1. ^ Смит, Тони (12 февраля 2014 г.). «Вы НЕ уволены: история удивительного CPC 464 Амстрада» . Реестр . Проверено 17 февраля 2014 года . CS1 maint: discouraged parameter (link)

Внешние ссылки [ править ]

  • Локомотив BASIC ссылка
  • Справочник команд с примерами кода
  • Справочник команд (неполный)
  • Дополнительные примеры кода в Rosetta Code