Язык Форт для МК-161 — альфа-версия.

Каллисто альфа-версии 0.6a (диалект Форта для «Электроники МК-161») качать отсюда: http://the-hacker.ru/2015/Callisto-0.6a.zip

Начиная с версии 0.3.2a в дистрибутив входит документация в формате PDF (пока незавершённая) и редактор экранов, пока построчный. Редактор компилируют из файла B011.mkt командой 11 LOAD (файл B011 типа "Т" должен находиться в каталоге Каллисто1 диска А), его листинг в файле B011.txt — также в комплект входит программа на Си, позволяющая получать подобные листинги из файлов mkt. Редактор поддерживает стандартные команды EDIT WIPE T P U X M I L B N и несколько других.

При вводе с клавиатуры клавиша Cx удаляет последний введённый символ, а F Cx стирает всю строку. Традиционными клавишами ПМК ↑ и ↔︎ вводятся односимвольные команды, выполняющие в Каллисто функции DUP и SWAP.

ВНИМАНИЕ! Клавиша С/П вводит букву "C", для выхода из Каллисто служит команда BYE — а если надо срочно, выключайте МК-161 и включайте обратно с нажатой клавишей "C" (С/П).

Функции «Электроники МК-161» работают в «бесконечном» стеке Каллисто, вводить их надо в традиционной русской нотации буквами без префиксных клавиш: sin ln 10x СЧ ЗН |x| и т.д. MAX и MIN оставляют максимальное и минимальное число из двух верхних, а yx возводит число в степень, находящуюся на вершине стека.

Логические команды AND OR XOR INVERT воспринимают числа на вершине стека, как 32-битные целые со знаком. Деление и умножение производят слова ÷ × и т.д. Для популярного в Форте целочисленного деления служат слова / MOD /MOD 2/ ×/ и т.д.

Переменные определяются словом VALUE и хранятся в обычных десятичных регистрах МК-161, начиная с R20. Созданные этим словом переменные кладут на стек своё значение, а для присваивания им значения служит стандартное слово TO. Для работы с этим новым десятичным словарём служат слова, начинающиеся с русской буквы "Д": ДDP ДHERE ДALLOT Д,

Стек данных Каллисто тоже хранится в области десятичных регистров. Ячейка стека данных занимает 1 регистр, формально это 8 байт. В стеке числа хранятся как родная «плавучка» «Электроники МК-161» и слова вроде . выводят её. Стандартное слово Форта для вывода целых чисел называется I.. При вводе чисел в стек можно использовать все 12 разрядов мантиссы, десятичную запятую ",", знак "-" и английскую букву "E" для указания десятичного порядка числа. Для ввода чисел также можно использовать префиксы Форта-2012, а именно $ для шестнадцатеричных чисел, # для десятичных и % для двоичных. Также числом считается символ в апострофах: 3,14 -99 1E-1 $1A #1917 %1101 '&'

Словарь и 16-битный стек возвратов хранятся в области байтовых данных. Ячейка памяти Каллисто занимает 2 байта. Определяющие слова CONSTANT и VARIABLE создают классические двухбайтовые константы (со знаком) и переменные. Можно создавать свои определяющие слова — по старинке, с помощью мощного механизма <BUILDSDOES>.

При чтении переменной VARIABLE из байтовой памяти в десятичный стек надо обращать внимание на её тип. Беззнаковые 16-битные числа считываются с помощью нового слова U@. Целые 16-битные числа со знаком считываются с помощью @.

Каллисто использует единое адресное пространство. Адреса от 0 до 9999 адресуют память программ, адреса от 10000 адресуют память данных. Для обращения к регистрам «Электроники МК-161» напрямую по их номерам, в обход трансляции адресов, служат слова РЕГ! РЕГ@

Каллисто позволяет сохранять скомпилированный код на диск, после чтения пока выдаются ошибки. Также Каллисто может читать и записывать на диск блоки, в которых удобно размещать исходный текст программ. Блоки Каллисто создаются и хранятся в четырёх подкаталогах диска А как файлы типа "Т" (текст) с именем Bxxx и занимают по 3Кб каждый, 48 строчек по 64 символа. Каллисто имеет 1 буфер в области текста, в котором может размещаться один такой блок.

Для работы с блоками служат стандартные слова BLOCK BUFFER FLUSH EMPTY-BUFFERS INDEX COPY LIST SCR LOAD. Все слова, загруженные в словарь Форта, можно посмотреть командой WORDS. Сохранение словарей Каллисто и их загрузка производится командами SAVE" LOAD". Файлы состояний должны быть от той же версии Каллисто, в которой их грузят.

Сейчас Каллисто занимает все 100 страниц памяти программ и более 118Кб (более 3900 строк) исходного текста. Распространяется под лицензией, совместимой с GNU GPL v3. В комментариях к исходному тексту и в прилагаемом Руководстве можно найти стековые диаграммы и назначение реализованных слов, карту единого адресного пространства, а также что означают номера ошибок. Языку Каллисто посвящены сотни страничек на Вики по ПМК и ЭКВМ, но до релиза лучше всего заглядывать в исходный текст Callisto.mkl.

Для Каллисто на «Электронике МК-161» удобно использовать накладную клавиатуру. Её можно найти на стр.2 Руководства по эксплуатации Callisto.pdf. Для эмулятора клавиатура здесь: http://the-hacker.ru/2015/FORTHkbd034a.png

Всё вместе выглядит вот так:

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

Комментарии

На хостинге ведутся технические работы. Форт станет доступным сегодня после 8 вечера по Москве.

Тов. Арви побил все рекорды и выкатил вечную нетленку, чем доказал практическую значимость Форта для ЭКВМ. Ощущения от символьной манипуляции бьют даже могучие зарубежные модели. Остаётся пожелать развития этой версии и я очень надеюсь, что товарищи из СЕМИКО сменят гнев на милость и озаботятся созданием нативной прошивки Форта для своей платформы. Учитывая, что Форт - это метаязык, можно ожидать появления удобных проблемно ориентированных диалектов языка для управления всеми аспектами ЭКВМ и проблемных областей, где его можно применить. Мощности железа с избытком хватает. Желаю Семико создать свою новую машину на базе ARM11 процессора российского производства К1879ХБ1Я, который имеет вполне доступную цену, наверное кроме обычного Linux можно найти какую-нибудь Real Time версию, если уж СЕМИКО так печётся о надёжности и безглючности.

Обсуждение Форта, со времени написания самого первого кода (август 2014), ведётся в Контакте:
https://vk.com/topic-10838600_30361028

Там же выложено описание различных частей языка, по мере их появления.

Кроме ARM российского контроллера есть российский Форт контроллер линейка K1894
а также из доступного можно взять к примеру плату серии Discovery на каком нибудь чипе STM32 и запустить в ней Форт. У меня получилось так запустить VFX Форт от MPE LTD.
Ввод/вывод без подключённого дисплея и клавиатуры идёт через Uart.
К1986ВЕ92QI (от Миландра)кстати тоже ARM Cortex серии
Следующий вариант, например, это уже Rasbery, Beaglbone и другие железки с ARM процессорами.Из экзотики это юзать Форт на GA144.

P.S. Некоторые "проблемы" с Форт на RISC процессорах могут возникнуть, если делать оптимизирующий компилятор по принципу VM (виртуальных машин) в ограниченных ресурсах выбранного железа.
https://www.lektorium.tv/course/22980 небольшой курс видео лекций по VM

K1894 интересен. Можно подробней? Это наша разработка — или клон американской железки?

AtH wrote: K1894 интересен. Можно подробней? Это наша разработка — или клон американской железки?

Разработка ядра бывшей питерской компании TexнoФорт без аналогов (К1894 на ядре tf16).
причастных к разработке линейки Дофин стековых процессоров до распада СССР(Минск, Интеграл сейчас у них тоже есть продолженная разработка http://www.integral.by/download/2980/1881VE2T.pdf ).

К1894 разработка idm+ http://www.idm-plus.ru/16bit.html производится в Зленограде для каких то контор ВПК (информация на сайте куцая)

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

Начало http://www.kit-e.ru/articles/cpu/2003_09_98.php
Часть 1 http://www.kit-e.ru/articles/elcomp/2004_1_102.php
Часть 2 http://www.kit-e.ru/articles/elcomp/2004_2_130.php (здесь тf16)

Страничка И.Каршенбоя (автора многих статей в KиТ) http://iosifk.narod.ru/

P.S. Из давнишней спецификации на К1894 тактовая порядка 80Мгц из периферии вроде SPI I2С Урты (4-е) интерфейс к флеш диску, выполнение программы после стартовой загрузки из ОЗУ
поддержка DSP вариантов команд арифметики.

http://www.myshared.ru/slide/177281/ Презентация МИЭТ с упоминанием K1894

В FPGA хорошая тема встраивать Форт ядра.
Например и для такого http://excamera.com/sphinx/gameduino/

К этому K1894 подключить дисплейчик и клавиатуру от МК-161 — будет наибыстрейшая машинка!

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

Если разместить в таком ПМК достаточно ОЗУ, можно будет начинать программировать символьные вычисления. СКМ (или CAS, кто привык к английскому). Чем быстрее будет налажен массовый выпуск ПМК на К1894, тем быстрее он научится считать интегралы. :-)

Спецификации К1894ВГ1Т.pdf + 1894ВЦ1У.pdf http://dropmefiles.com/NVx6O
Презентация МИЭТ в PDF формате http://dropmefiles.com/Mt6VI
Презентация МИЭТ в PPT формате http://dropmefiles.com/GFabX

P.S. Какие спецификации сейчас можно уточнить у производителя

Интеграловский Форт процессор (Белмикросистемы ТУ 2004г.) "Продолжатель" дофин линейки советских Форт процессоров.
http://dropmefiles.com/TgOgh K1881BE1T.doc (IN16C) в формате DOC МS файла

Перечислил все стандартные слова Каллисто на Вики по ПМК и ЭКВМ. Их оказалось ровно 280, в последней опубликованной версии:

http://pmk.the-hacker.ru/wiki/Список_стандартных_слов_Каллисто

Теперь буду постепенно добавлять описание — как работает каждое из этих слов. Там же, в обсуждениях, уже можно задавать вопросы по конкретному слову.

Сейчас у большинства слов есть описание длиной в одну строку. Многие из слов широко известны, так как стандартны для Форта. Всё равно будем формировать полное описание языка — включая отличия Каллисто от стандартов Форта и других его реализаций.

На вики pmk.the-hacker.ru выложены все стандартные слова Каллисто.

На страничке каждого слова, где это возможно, добавлены ссылки на определения этих слов в стандартах Форта — в действующем 1994 года и в черновике нового стандарта 200x (пока не принятого).

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

Также в Москве (до 11 сентября) идёт запись на первый учебный класс по Каллисто. Могу сделать дистанционным, если будут желающие. Если кликнуть на картинку, будет листовка в формате pdf (для печати на принтере и распространения):

AtH wrote: Могу сделать дистанционным, если будут желающие.

Хорошо бы снять видео уроков этого класса.

Видеоуроки это отдельный жанр, более дорогостоящий в подготовке и требующий неплохой команды поддержки. Он мало совместим с обычными, более интерактивными, дистанционными занятиями — разве что можно давать ученикам домашнее задание их просматривать.

В этот (шестой) период практики экспедиция на Каллисто будет состоять из одного разработчика. Остальным, видимо, либо не интересен проект. Либо предпочитают разбираться в нём самостоятельно.

Буду доводить транслятор до состояния бета-версии.

AtH wrote: Остальным, видимо, либо не интересен проект. Либо предпочитают разбираться в нём самостоятельно.

Может быть что то подобное с видео сделать https://youtu.be/c-KQCK6qsPU

Меня обрадует, если кто-нибудь сделает такое видео про Каллисто. Если же делать авторское, тут нужно финансирование или хотя бы техническая поддержка.

Сейчас всё время, которое я трачу на Каллисто, идёт на завершение первой, простейшей однофайловой версии языка. Если что остаётся, вкладывается в подготовку документации. Без которой бета-версию не выпустить.

А можно ли разместить краткое описание Каллисто для чайников?

Для чайников есть вот эта pdf'ка (она включена в дистрибутив и совершенствуется по мере перехода к бета-версии):
http://the-hacker.ru/2015/Callisto.pdf

Ссылки для дальнейшего изучения:
http://pmk.the-hacker.ru/wiki/Каллисто
http://pmk.the-hacker.ru/wiki/Список_стандартных_слов_Каллисто

В бета-версии будет полная документация по Каллисто, включая введение для начинающих. Это основное, что осталось для выпуска беты.

Вышла новая альфа-версия Каллисто. В ней реализована необходимая часть языка — литералы (числа-константы) с плавающей запятой. Теперь их можно использовать при определении слов через двоеточие, наряду с целыми числами. Занимают они в шитом коде всё те же 4 байта, что и целочисленные литералы (плюс один десятичный регистр, куда заносится значение константы).

Также теперь внутри определений через двоеточие можно заносить в стек числа меньше -32768 и больше 32767 (границы диапазона целых) — просто добавляйте к ним запятую, и они скомпилируются как плавучка.

Версия 0.5а начинает подготовку к выпуску бета-версии. На вики pmk.the-hacker.ru помечены все 282 слова, в описании которых ещё нет стековых диаграмм.

Когда в документации каждого слова будет стоять стековая диаграмма, можно будет начать бета-тестирование.

В Каллисто 0.5а добавились три слова J EKEY и ?EKEY

J позволяет узнать значение счётчика внешнего цикла, очень полезно для популярной конструкции «цикл в цикле»

EKEY ожидает нажатия клавиши и кладёт в стек её код (число от 0 до 37), без трансляции его в код символа.

?EKEY даёт код нажатой клавиши или же −1, если никакая клавиша не нажата. Это позволяет проверять клавиатуру, не останавливая программу — то, что мы так хотели на Б3-34 и МК-61.

Слово INDEX перестало выводить пробел после номера экрана, для экономии места на индикаторе.

Каллисто 0.5.1a:
http://the-hacker.ru/2015/Callisto-0.5.1a.zip

Слово ?EKEY получило более известное в России название INKEY

Убрано слово FENCE, всё равно в стандартной поставке Каллисто не будет FORGET

Удалены ошмётки переменных WIDTH, LIMIT и FENCE, что сделало код короче. Проведена и другая оптимизация.

Добавлено слово ATR для доступа к атрибуту выводимых символов. Каллисто либо начнёт использовать эти атрибуты, либо мы его удалим из языка.

На вики добавлены описания слов 0 1 2 3 π BL

Осталось 275 слов.

Каллисто 0.5.2a:
http://the-hacker.ru/2015/Callisto-0.5.2a.zip

Исправлена ошибка с переменными RX RY RZ RT

Оптимизировано «пустое» слово TASK

На вики добавлены описания слов B/BUF C/L

Осталось 273 слова.

Добавлены стековые диаграммы и описания слов BASE DECIMAL HEX STATE [ ]

До выпуска бета-версии осталось задокументировать 267 слов.

Каллисто 0.5.3a:
http://the-hacker.ru/2015/Callisto-0.5.3a.zip

В новой альфа-версии оптимизирована область переменных и программисту доступно на 10 байт больше. Убрано слово ATR и введено слово KBDFLG для проверки и изменения состояния клавиатуры.

Каллисто 0.6a:
http://the-hacker.ru/2015/Callisto-0.6a.zip

Изменена семантика KBDFLG
Восстановлена работа комбинации клавиш K C/П (^C) при выводе WORDS LIST
Проведено новое измерение быстродействия Каллисто.