Каллисто: язык «Форт» для МК-161

| рубрика «Калькуляторы» | автор AtH
Метки: ,

От редакции. Здесь представлен анонс начала разработки Форта для МК-161. Подробное описание находится на сайте проекта

Одной из технических причин, вызвавших раскол русскоязычного сообщества любителей ПМК, были ограниченные возможности входного языка долгожданной портативной ЭКВМ «Электроники МК-161».

Критике подверглась необходимость использования компьютера для полноценного написания более-менее серьёзных программ, с метками и именами подпрограмм. Хочется иметь удобную возможность писать полезные программы «на борту», например в дороге или полевых условиях.

Также сильная сторона входного языка, совместимость с советскими ПМК, для ряда любителей обернулась слабостью. Язык называли слишком низкоуровневым, критиковали за «спагетти» (необходимость использования условных/безусловных переходов и запоминания адресов/меток), скудость типов данных, использование регистров вместо переменных и даже сравнивали с ассемблером. Стек состоит всего из 4 уровней и требовал тщательного планирования сложных вычислений, расширяемость самого языка ограничена подпрограммами.

Третьим пунктом придирок была закрытость системы ЭКВМ. Не было опубликовано SDK для написания владельцами программ для МК-161 на языках высокого уровня, таких как Си. Также, по информации от производителя, прошивка в ЭКВМ передаётся с использованием криптографических средств, так что замена её владельцем на прошивку собственной разработки представляется трудоёмкой. Исходный текст прошивки, серьёзно облегчивший бы её доработку владельцами, также не был опубликован. Мотивировано это было страхом перед китайскими подделками.

В конце августа прошлого (2014) года я нашёл выход из этой ситуации, казавшейся неразрешимой. Поверх ЯМК можно реализовать язык Форт, преодолевающий многие упомянутые ограничения и позволяющий как разрабатывать нетривиальные программы «на борту», так и воспользоваться некоторой частью уже существующей библиотеки программ для Форта. Запас по быстродействию МК-161 это позволяет. Разумеется, пока Форт не будет внесён в прошивку ЭКВМ программы, написанные прямо на ЯМК, будут выполняться в несколько раз быстрее Фортовских.

2 октября мною был опубликован исходный код (и файл mkp) Форта версии 0.17 — ещё не компилятор, но уже достаточный proof of concept для тех, кто знаком с Фортом не по наслышке. Он содержит описания всех необходимых слов Форта — некоторые, правда, достаточно «сырые» и ещё не отлаженные. Поэтому уже написанный компилятор Форта пока даже не тестировался, существуя в зачаточном состоянии. Низкоуровневые слова Форта написаны на ЯМК. Сейчас Форт полностью, вместе с высокоуровневыми словами, содержится в памяти программ и занимает 85 страниц. Всего же их в ЭКВМ сто. Запас для развития хороший.

Интерпретатор Форта, а также ряд слов Форта уже работают. Интерпретатор исполняет шитый код Форта из памяти программ. Этот тестовый код в терминальном режиме вводит строчку символов с клавиатуры и выводит её обратно на экран, попутно заменяя строчные буквы заглавными. Работает вывод строки неторопливо — мне была важна не оптимизация по времени, а наоборот. Проверить как можно больше слов и конструкций языка Форт, демонстрируя их работоспособность.

Вчера я опубликовал накладку для МК-161 с алфавитно-цифровой клавиатурой, которую использует этот интерпретатор Форта.

Разработка Форта ведётся по данной ссылке и я рад всем, кто поддержит и присоединится к нашей группе с целью довести Форт-161 до рабочего состояния:

vk.com/topic-10838600_30361028

Также проект можно форкать или создавать свои Форты, его текст открыт. Мне было главное продемонстрировать саму концепцию языка высокого уровня на МК-161, преодолевающего встроенные ограничения системы.

P.S. Внимательные люди разглядели, что на накладной клавиатуре отсутствуют подписи на клавише с английской буквой «C», она же русская «Ж». Дело в том, что она задумана на базе клавиши С/П, отключать которую на данном этапе я счёл лишним. Накладка обозначает её чёрным цветом, чтобы случайно не нажали и не остановили работу Форта.

Когда введённые символы будут передаваться системе Форта для исполнения или компиляции, разумеется, стандартная функция клавиша С/П будет отключена, буквы «C» и «Ж» появятся (код для них в Форте уже написан), а для выхода из Форта будет использовано соответствующее слово, кнопка выключения или собственная комбинация клавиш.

Видеообзор про возможности Каллисто