MSX BASIC (MSX BASIC)

Перейти к навигации Перейти к поиску

MSX BASIC — диалект языка программирования BASIC, разработанный в 1983 году компанией Microsoft. Представляет собой расширенную версию Microsoft BASIC version 4.5 и имеет поддержку для графических, музыкальных и прочих возможностей бытовых компьютеров стандарта MSX. Разработан как последователь GW-BASIC (1983), одного из стандартных диалектов BASIC для 16-разрядных IBM PC-совместимых компьютеров. В процессе разработке MSX-BASIC основное внимание уделялось гибкости системы и возможности её расширения.

Распространение

[править | править код]

MSX-BASIC поставлялся со всеми компьютерами стандарта MSX и был записан в ПЗУ компьютера. При старте системы, если другое ПО, записанное в ПЗУ, не перехватывает управление, запускается MSX-BASIC и отображается приглашение командной строки. Примерами другого ПО, перехватывающего управление при старте системы, являются игровые картриджи (запускается вместо BASIC, если вставлен в слот) и контроллер дисковода (показывает приглашение MSX-DOS, если в дисководе находится дискета с системными файлами).

Когда MSX BASIC используется, ПЗУ, содержащее код интерпретатора и BIOS, занимает младшие 32 КБ адресного пространства процессора Z80. В старших 32 КБ находится ОЗУ, из которого для BASIC-программ и данных доступно от 23 КБ до 28 КБ. Точное значение объёма доступной оперативной памяти зависит от наличия контроллера дисковода и версии MSX-DOS.

Среда разработки

[править | править код]

Среда разработки MSX BASIC очень похожа на среду Dartmouth Time Sharing System (Dartmouth BASIC). Она представляет собой интегрированную среду разработки с интерфейсом командной строки (исключение представляют функциональные клавиши, позволяющие вводить некоторые часто используемые команды одним нажатием; их назначение отображается в нижней части экрана). Все строки программы должны быть пронумерованы; строки, вводимые без указания номера, выполняются сразу.

Версии MSX BASIC

[править | править код]

Каждая новая версия стандарта на компьютеры MSX включала новую версию MSX BASIC. Все версии имеют обратную совместимость и предоставляют возможности использования нового и дополнительного аппаратного обеспечения новых моделей компьютеров.

MSX BASIC 1.0 / 1.1

[править | править код]
  • Поставлялся с компьютерами MSX 1.0 / 1.1
  • Объём ПЗУ 16 КБ
  • Отсутствует встроенная поддержка дисководов, требуется картридж Disk BASIC (4 КБ)
  • Поддерживает все доступные на MSX1 видеорежимы:
    • Screen 0 (текстовый режим 40 x 24 символов)
    • Screen 1 (смешанный текстовый режим 32 x 24 символов, аппаратные спрайты и цвет для символов)
    • Screen 2 (графический режим высокого разрешения 256 x 192 точек, 16 цветов)
    • Screen 3 (графический режим низкого разрешения 64 x 48)
  • Полная поддержка аппаратных спрайтов и автоматическое определение их столкновений, с генерацией прерываний
  • Полная поддержка штатного звукогенератора General Instruments AY-3-8910 (PSG)
  • Поставлялся с компьютерами MSX 2.0
  • Объём ПЗУ 16 КБ
  • Добавлена поддержка новых видеорежимов:
    • Обновление Screen 0 (текстовый режим 80 x 24)
    • Screen 5 (графический режим 256 x 212/424 точек, 16 цветов из 512 доступных)
    • Screen 6 (графический режим 512 x 212/424 точек, 4 цветов из 512)
    • Screen 7 (графический режим 512 x 212/424 точек, 16 цветов из 512)
    • Screen 8 (графический режим 256 x 212/424 точек, 256 цветов, без палитры)
      • Режимы с 424 строками могут отображаться только в режиме чередования строк
  • Добавлена поддержка цветных спрайтов (16 цветов)
  • Добавлена поддержка аппаратных графических функций (копирование блоков, закраска и другие)
  • Добавлена поддержка нижних 32 КБ ОЗУ компьютера в виде виртуального диска с ограниченными возможностями (может хранить только некоторые типы файлов). Эта область ОЗУ недоступна напрямую, так как ПЗУ BIOS и интерпретатора BASIC находятся в том же адресном пространстве.
  • Поставлялся с компьютерами MSX 2.0+
  • Объём ПЗУ 16 КБ
  • Добавлена команда SET SCROLL для управления плавной аппаратной прокруткой в BASIC-программах
  • Добавлена поддержка новых видеорежимов:
    • Screen 10 (графический режим 256 x 212/424 точек, 12499 отображаемых цветов одновременно в формате YJK + 16 цветов из палитры, содержащей 512 цветов в формате RGB)
    • Screen 11 (графический режим 256 x 212/424 точек, 12499 цветов YJK одновременно + 16 цветов из 512 в RGB)
    • Screen 12 (графический режим 256 x 212/424 точек, 19268 цветов YJK одновременно)
  • Поставлялся с компьютерами MSX Turbo R (выпускались только в Японии)
  • Добавлена поддержка видеорежимов 512 x 512 точек (16 цветов из 512) и 256 x 212 (19268 цветов)
  • Добавлена команда _PAUSE для создания программных задержек, не зависящих от выбранного процессора и его тактовой частоты
  • Добавлены команды для управления устройством записи и воспроизведения цифрового звука (_PCMPLAY, _PCMREC)
  • Поставлялся с компьютером FS-A1GT MSX Turbo R
  • Имеет расширения для работы с интерфейсом MIDI

Расширения MSX BASIC

[править | править код]

Так как возможность расширения была предусмотрена в MSX BASIC изначально, создание дополнительных модулей осуществлялось очень просто. Поддержка дополнительных устройств обычно добавлялась с помощью картриджей, содержавших также сами устройства или аппаратный интерфейс для их подключения. Например, MSX Disk-BASIC поставлялся в картридже, имевшем интерфейс для подключения дисководов, и добавлял новые команды для работы с ними.

Также существовала возможность расширения MSX BASIC чисто программными способами. Интересным расширением для MSX BASIC 1.0/1.1 было расширение с названием Screen IV, реализующее дополнительный видеорежим смешанного типа, Screen 4, позволявший выводить символьную информацию с разрешением 64 x 24 символа в графическом режиме высокого разрешения (Screen 2).

Интересные факты

[править | править код]
  • Вильнюсский бейсик создавался с нуля для машин с системой команд PDP-11 под сильным влиянием MSX Basic. В частности, совпадают названия большинства операторов и функций, а также коды сообщений об ошибках.
  • Оператор цикла FOR в MSX BASIC имел отличительную особенность — при любых значениях параметров цикла тело цикла выполнялось по крайней мере один раз.