You are here
Язык Форт для МК-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-битные целые со знаком. Деление и умножение производят слова ÷ × 2× и т.д. Для популярного в Форте целочисленного деления служат слова / 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 создают классические двухбайтовые константы (со знаком) и переменные. Можно создавать свои определяющие слова — по старинке, с помощью мощного механизма <BUILDS … DOES>.
При чтении переменной 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
Всё вместе выглядит вот так:
- AtH's blog
- Log in or register to post comments
- 35958 reads
Comments
Техработы
На хостинге ведутся технические работы. Форт станет доступным сегодня после 8 вечера по Москве.
Это самая крутая программа для МК
Тов. Арви побил все рекорды и выкатил вечную нетленку, чем доказал практическую значимость Форта для ЭКВМ. Ощущения от символьной манипуляции бьют даже могучие зарубежные модели. Остаётся пожелать развития этой версии и я очень надеюсь, что товарищи из СЕМИКО сменят гнев на милость и озаботятся созданием нативной прошивки Форта для своей платформы. Учитывая, что Форт - это метаязык, можно ожидать появления удобных проблемно ориентированных диалектов языка для управления всеми аспектами ЭКВМ и проблемных областей, где его можно применить. Мощности железа с избытком хватает. Желаю Семико создать свою новую машину на базе ARM11 процессора российского производства К1879ХБ1Я, который имеет вполне доступную цену, наверное кроме обычного Linux можно найти какую-нибудь Real Time версию, если уж СЕМИКО так печётся о надёжности и безглючности.
Обсуждение альфа-версии Форта
Обсуждение Форта, со времени написания самого первого кода (август 2014), ведётся в Контакте:
https://vk.com/topic-10838600_30361028
Там же выложено описание различных частей языка, по мере их появления.
Кроме ARM
Кроме 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
K1894 интересен. Можно подробней? Это наша разработка — или клон американской железки?
K1894
[quote=AtH]K1894 интересен. Можно подробней? Это наша разработка — или клон американской железки?[/quote]
Разработка ядра бывшей питерской компании 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, как отечественный ПМК будущего.
К этому K1894 подключить дисплейчик и клавиатуру от МК-161 — будет наибыстрейшая машинка!
Просто обернуть вокруг языка K1894 хорошую библиотеку «плавучки» и относительно простую надстройку, позволяющую легко общаться человеку с машиной.
Если разместить в таком ПМК достаточно ОЗУ, можно будет начинать программировать символьные вычисления. СКМ (или CAS, кто привык к английскому). Чем быстрее будет налажен массовый выпуск ПМК на К1894, тем быстрее он научится считать интегралы. :-)
K1894
Спецификации К1894ВГ1Т.pdf + 1894ВЦ1У.pdf http://dropmefiles.com/NVx6O
Презентация МИЭТ в PDF формате http://dropmefiles.com/Mt6VI
Презентация МИЭТ в PPT формате http://dropmefiles.com/GFabX
P.S. Какие спецификации сейчас можно уточнить у производителя
K1894
Интеграловский Форт процессор (Белмикросистемы ТУ 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 (для печати на принтере и распространения):
Каллисто на Вики по ПМК и ЭКВМ
[quote=AtH] Могу сделать дистанционным, если будут желающие. [/quote]
Хорошо бы снять видео уроков этого класса.
Видео-уроки
Видеоуроки это отдельный жанр, более дорогостоящий в подготовке и требующий неплохой команды поддержки. Он мало совместим с обычными, более интерактивными, дистанционными занятиями — разве что можно давать ученикам домашнее задание их просматривать.
В этот (шестой) период практики экспедиция на Каллисто будет состоять из одного разработчика. Остальным, видимо, либо не интересен проект. Либо предпочитают разбираться в нём самостоятельно.
Буду доводить транслятор до состояния бета-версии.
MineCraft Forth
[quote=AtH]Остальным, видимо, либо не интересен проект. Либо предпочитают разбираться в нём самостоятельно.[/quote]
Может быть что то подобное с видео сделать 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/Список_стандартных_слов_Каллисто
В бета-версии будет полная документация по Каллисто, включая введение для начинающих. Это основное, что осталось для выпуска беты.
Каллисто v0.3.8a
Вышла новая альфа-версия Каллисто. В ней реализована необходимая часть языка — литералы (числа-константы) с плавающей запятой. Теперь их можно использовать при определении слов через двоеточие, наряду с целыми числами. Занимают они в шитом коде всё те же 4 байта, что и целочисленные литералы (плюс один десятичный регистр, куда заносится значение константы).
Также теперь внутри определений через двоеточие можно заносить в стек числа меньше -32768 и больше 32767 (границы диапазона целых) — просто добавляйте к ним запятую, и они скомпилируются как плавучка.

Каллисто v0.5a
Версия 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
Каллисто 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
Каллисто 0.5.2a:
http://the-hacker.ru/2015/Callisto-0.5.2a.zip
Исправлена ошибка с переменными RX RY RZ RT
Оптимизировано «пустое» слово TASK
На вики добавлены описания слов B/BUF C/L
Осталось 273 слова.
Обновление вики pmk.the-hacker.ru
Добавлены стековые диаграммы и описания слов BASE DECIMAL HEX STATE [ ]
До выпуска бета-версии осталось задокументировать 267 слов.
Вышла Каллисто 0.5.3a
Каллисто 0.5.3a:
http://the-hacker.ru/2015/Callisto-0.5.3a.zip
В новой альфа-версии оптимизирована область переменных и программисту доступно на 10 байт больше. Убрано слово ATR и введено слово KBDFLG для проверки и изменения состояния клавиатуры.
Вышла Каллисто 0.6a
Каллисто 0.6a:
http://the-hacker.ru/2015/Callisto-0.6a.zip
Изменена семантика KBDFLG
Восстановлена работа комбинации клавиш K C/П (^C) при выводе WORDS LIST
Проведено новое измерение быстродействия Каллисто.