161eForth, версия 0.7b

Опубликован eForth 0.7b для МК-161.

Справка по R9000Справка по R9000

Немного поработал над справкой, расставив переносы. Справка стала гораздо дружелюбней и теперь работать с ней одно удовольствие. Также сделан перенос знака равенства на следующую строку, как принято в России. Можно сравнить снимки экрана с такими же от предыдущей версии.

В процессе работы над справкой нашёл несколько ошибок (грамматических и фактических) во встроенной справке MK.EXE, взятой мною за основу. Исправил их, а также расставил точки над «ё». Вся эта работа отражена в файле regs.txt, он находится в каталоге tools дистрибутива eForth. Там же лежит mkmkn.c — обновлённый инструмент для компиляции этого файла. Не нравится моя подсказка, можете лучше? Сделайте свою и пользуйтесь на здоровье.

Ещё одна ошибка в MK.EXE (последнюю версию не проверял) связана с передачей файла блокнота, последняя запись из которого не передаётся на ЭКВМ. Если надо передать 100 записей от 0 до 99, программа правильно пишет «100 записей», но передаёт лишь 99 записей с 0 по 98. В связи с этим в файл справки EFORTH.MKN я включил лишнюю последнюю запись — потеряется, не страшно.

При подготовке новой версии справки пришлось чуть усложнить реализацию NTYPE — вывода текстовой строки из блокнота на графический экран. Дело в том, что TYPE в eForth выводит все непечатные литеры (включая перевод строки), как литеру подчёркивания "_". Для вмешательства в это поведение добавлено ещё одно значение переменной 8BIT.

Запись 127 в переменную 8BIT приводит к переходу на 7-битные литеры и «убийству» русского алфавита. Это стандартное поведение eForth на других системах. Поскольку МК-161 — отечественная машинка, по умолчанию в переменной 8BIT хранится число 255. Это даёт возможность использовать весь набор символов ЭКВМ «из коробки», включая русские буквы.

Теперь если в 8BIT занести ноль, слова TYPE и EMIT вообще перестают проверять литеры и становятся «прозрачными» для всего, что приложение хочет вывести на индикатор или в последовательный порт. NTYPE на время своей работы сбрасывает 8BIT в ноль, а потом восстанавливает старое значение переменной. Это позволяет выводить из блокнота заранее отформатированные подсказки, в несколько строк.

Качать 161eForth 0.7b отсюда: http://the-hacker.ru/2019/161eforth0.7b.zip

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

При желании справку легко перенести и в Каллисто, но я это сделаю лишь для следующего языка Каллисто-2. Справка нужна для изменившейся идеологии. Поскольку регистры функций решено в новом входном языке оставить, справка по регистрам позволяет максимально облегчить работу с ними.

Также новая технология позволит Каллисто-2 выводить тексты своих сообщений из блокнота. Напомню, что в Каллисто Классик вместо текста сообщения выводится его номер. Каллистянская нумерация сообщений взята из и практически совпадает с советской системой ФОРТ ИТЭФ (г. Москва).

Метки публикаций: 

Комментарии

Тематика опубликованной статьи на Xaбр, в чём то соприкасается в осмыслении с 161eForth
https://habr.com/ru/company/tinkoff/blog/477902/

Спасибо за ссылку. В статье упоминается eForth. Видимо первая модель, благодаря малому количеству примитивов.

Также я строил eForth поверх отечественного языка МК, а Антон Жуков поверх американского C#. Ничего полезного, к сожалению, для 161eForth не нашёл, хотя пробежал глазами и статью, и комментарии.

Я активно ищу, как в Каллисто-2, для которого уже много строительных блоков подготовлено и проверено, сделать ростки новых полезных технологий. Некоторые исследованные пути оказались тупиковыми. Например, обработка исключений сейчас исключена из замысла.

В «универсальном DSL» есть работа с классами/объектами, что хотелось бы получить и в Каллисто-2. Но реализована она, насколько я понял, поверх уже готового сервиса C#. Примерно также, как машинная графика Каллисто это доступ к сервисам новосибирской прошивки.

Поразмышляв над дизайном Электронных таблиц предложенном в этом проекте
https://github.com/Lecrapouille/SimTaDyn

возможно есть рациональное зерно и в применении на экране МК-161
как карты навигации по вычисляемым узлам сетевого графа.

P.S. Но, наверное, 128х64 мало для использования такого концепта.

Попутно :) http://theforth.net/ Сайт в форме Wiki по Forth (в зелёных тонах)

Электронные таблицы — хорошее направление развитие ПМК. Думал развивать входной язык в этом направлении, когда элементами массива могут быть и данные, и код (формулы-функции-слова).

Конкретно SimTaDyn привлекает использованием Форта, как языка скриптов. Но геопривязка, скорее всего, излишня. Также не факт, что подход SimTaDyn учитывает скромную скорость ЭКВМ.

Графинтерфейс на МК-161 уже есть «из коробки». Он довольно необычен, но вполне работоспособен:
http://mk.semico.ru/d1_p16.htm

128×64 вполне нормально для большинства применений. Заставляет, конечно, поработать над лаконичностью интерфейса, а иногда и отображаемой информации.

Есть и такой экзотический проект. :)
http://thyrd.org/thyrd/

P.S. Но, в сообщении выше именно понималось отображение таблицы и по ней навигации в виде графа. (может и высвечивании название СЛОВА-УЗЛА при наведении курсора на неё для разгрузки информации по навигации по словам)
т.е. как аналогия знаков зодиака на небе связи между ними, а симуляция в названии по аналогии с "нейросетями" по отслеживанию истории активности той или иной сетевой переменной-слова.

На первых порах таблицы хорошо ложатся на общеизвестные массивы. A[3,4] может считывать и класть на стек данные из ячейки, а может запускать хранящийся в ней код. Индексы могут вычисляться. Как всё это красиво наложить на форт, пока неясно. Возможно, так и останется: 3 4 A[,]

Позже можно расширить систему до произвольных графов. Но на сегодняшнем оборудовании памяти и быстродействия хорошо, если хватит для таблиц. Если дело лишь в отображении, этим можно заняться и позже.

Пока Каллисто-2 даже на уровень метакомпиляции не выведена. Даже исходник на СПФ не дописан. Само появление типов пока под вопросом. Но эти вещи тоже продумываются, на будущее.