AMOS Professional - это компилируемый язык программирования (диалект BASIC), разработанный François Lionet в начале 1990х, специально для платформы компьютеров Commodore Amiga. Он адаптирован под уникальные графические и звуковые возможности чипсета Amiga.
Настройка VS Code
Для современной, удобной работы с кодом устанавливаем редактор Visual Studio Code под свою платформу (Windows, Linux, macOS). Нам понадобится поддержка синтаксиса языка. Для VS Code некий товарищ Docster выпустил расширение AMOS Professional с подсветкой кода и подсказками на команды и функции. Конечно, можно просто остановиться и использовать любой любимый редактор, где есть подсветка для Visual Basic - с ней работать вполне можно.
Далее текстовому файлу для кода можно определить оригинальное расширение (например .vsamos) с привязкой к синтаксису и кодировке ISO-8859-1, которую понимает компилятор AMOS без ошибок с символами. В VS Code это делается в настройках файла settings.json конфигурации пользователя.
{
"files.associations": {
"*.vsamos": "amos"
},
"[amos]": {
"files.encoding": "iso88591"
}
}
По языку AMOS теперь есть подробная документация в сети, кто-то взял pdf формат книги и заверстал в более удобный вид онлайн страниц. После настройки VS Code можно переходить к эмулятору WinUAE (для других OS есть свои реализации UAE).
Эмулятор WinUAE
WinUAE - это популярный эмулятор компьютеров Commodore Amiga для Windows, поддерживающий полную линейку моделей: A1000, A500, A600, A1200, A2000, A3000, A4000 и других. Он обеспечивает детальную эмуляцию аппаратных компонентов, включая чипсеты OCS, ECS, AGA, модели процессоров Motorola архитектуры 68K: 68000, 68010, 68020, 68030, 68040, 68060. Также есть поддержка различных карт расширений и режимов работы.
В этом материале не рассматривается настройка и конфигурация эмулятора под определенную модель. Для установки AmigaOS с необходимым софтом был настроен базовый конфиг модели A1200 (CPU 68020EC без FPU и MMU) на чипсете AGA с 8MB Fast RAM и виртуальным диском HDD. Системное разрешение монитора в Workbench установлено в режим DBLPAL High Res 640x512 No Flicker с палитрой в 16 цветов.
Виртуальный диск в эмуляторе амиги представляет собой выбранную папку в основной (хостовой) OS, поэтому в VS Code мы как бы работаем с файлами на HDD AmigaOS. Это удобно, нам доступны все файлы амиги, редактируем и правим как хотим. Использование образов и физических носителей Amiga здесь не рассматривается.
В AmigaOS устанавливаем пакет AMOS 2 Pro (6 дискет FDD) и компилятор AMOS Compiler. Как не странно, для компилятора был отдельный дистрибутив на 3 дискеты. Сам редактор и утилиты разработки в AMOS для своего времени были вполне удобными и мощными (v2.00 - 1993 год). И стоит отметить, что AmigaOS (первый релиз в 1985 году) намного опередила время со своей многозадачностью и графическим интерфейсом на рынке доступных компьютеров.
В родном редакторе AMOS отсутствует подсветка синтаксиса кода и мы ограничены средой AmigaOS, поэтому предлагается использовать VS Code. Для импорта кода в редактор поддерживается команда Merge ASCII для загрузки текстового файла (с расширением .asc) в кодировке ISO-8859-1. В родном редакторе проекты .amos сохраняются в бинарном виде, они не пригодны для редактирования в стороннем редакторе.
Компиляция кода AMOS
Мы подошли к сути процесса. У нас есть файл с текстом кода, который мы редактировали в VS Code, осталось его скомпилировать в эмуляторе (либо на реальном железе) и получить исполняемый файл для компьютера Amiga. А для автоматизации процесса нам поможет простой скрипт, исполняемый из CLI консоли.
Название файла скрипта apcmp.bat произвольное, в данном примере от системы APCmp компилятора. Для удобного запуска по команде Run используется файловый менеджер DOpus. Перед запуском следует проверить protect атрибуты файла, важно установить пункт Script - файл будет исполняемым.
При установке AMOS в системе создаются свои assign (назначения, пути) к файлам, папкам. А также в AmigaOS можно определять любые свои assign в файлах startup. В первой строке C:APCmp запускается компилятор, далее идет путь до файла, который будет компилироваться (в данном примере projects тоже является заданным assign, что соответствует пути от диска HDD к папке - DH0:projects).
C:APCmp projects:demoscene/scene_02/scene_02.vsamos type=1 inclib
ECHO ""
ECHO "----------------"
ECHO "Test Scene 02 Ready..."
ASK "Stop now (Yes)?"
IF WARN
ECHO "Close task..."
ELSE
ECHO "Run programm..."
projects:demoscene/scene_02/scene_02
ENDIF
ECHO ""
ECHO "----------------"
ASK "Press Any Key..."
Все параметры компилятора можно посмотреть в документации. В данном случае при type=1 мы просто получаем исполняемый файл. Параметр inclib служит для добавления всех нужных библиотек AMOS в файл, что позволяет запускать программу автономно, без установленной среды AMOS на других машинах. Далее в скрипте просто удобные условия. Если компилятор вывел ошибку при проверке и токенизации кода, мы можем закрыть задачу, подтвердив вводом по клавише «Y». Иначе будет запущен последний скомпилированный файл.
Прототипы на AMOS
В процессе изучения AMOS создавались прототипы. В одном проверялись методы управления индексами палитры, получился эффект анимации перебором значений цвета в индексах.
В другом прототипе было исследование программного расчета эффекта starfield simulation и анимации подготовленных растровых объектов, используя возможности Blitter чипсета.