You are here
161eForth, версия 0.7b
Опубликован eForth 0.7b для МК-161.
Немного поработал над справкой, расставив переносы. Справка стала гораздо дружелюбней и теперь работать с ней одно удовольствие. Также сделан перенос знака равенства на следующую строку, как принято в России. Можно сравнить снимки экрана с такими же от предыдущей версии.
В процессе работы над справкой нашёл несколько ошибок (грамматических и фактических) во встроенной справке 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 выводить тексты своих сообщений из блокнота. Напомню, что в Каллисто Классик вместо текста сообщения выводится его номер. Каллистянская нумерация сообщений взята из и практически совпадает с советской системой ФОРТ ИТЭФ (г. Москва).
- AtH's blog
- Log in or register to post comments
- 3289 просмотров
Комментарии
Универсальный DSL. Возможно ли это?
Тематика опубликованной статьи на 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 вполне нормально для большинства применений. Заставляет, конечно, поработать над лаконичностью интерфейса, а иногда и отображаемой информации.
Forth и таблицы
Есть и такой экзотический проект. :)
http://thyrd.org/thyrd/
P.S. Но, в сообщении выше именно понималось отображение таблицы и по ней навигации в виде графа. (может и высвечивании название СЛОВА-УЗЛА при наведении курсора на неё для разгрузки информации по навигации по словам)
т.е. как аналогия знаков зодиака на небе связи между ними, а симуляция в названии по аналогии с "нейросетями" по отслеживанию истории активности той или иной сетевой переменной-слова.
Графы и массивы
На первых порах таблицы хорошо ложатся на общеизвестные массивы. A[3,4] может считывать и класть на стек данные из ячейки, а может запускать хранящийся в ней код. Индексы могут вычисляться. Как всё это красиво наложить на форт, пока неясно. Возможно, так и останется: 3 4 A[,]
Позже можно расширить систему до произвольных графов. Но на сегодняшнем оборудовании памяти и быстродействия хорошо, если хватит для таблиц. Если дело лишь в отображении, этим можно заняться и позже.
Пока Каллисто-2 даже на уровень метакомпиляции не выведена. Даже исходник на СПФ не дописан. Само появление типов пока под вопросом. Но эти вещи тоже продумываются, на будущее.