Редактирование: Каллисто

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
[[Файл:Callisto-161.JPG|thumb|right|360px|''Каллисто'', запущенная на «Электронике МК-161» с накладной клавиатурой.]]
'''Каллисто''' — компактный диалект языка Форт с элементами colorFORTH, написанный для [[Электроника МК-161|«Электроники МК-161»]] на [[РЯМК]] и предназначенный для программирования «на борту». Пока существует в альфа-версии, но уже позволяет определять новые слова, редактировать и компилировать экраны, успешно переносить на МК-161 старые программы, написанные на языке Форт. Актуальная версия — 0.3.5a.


'''Каллисто''' — хэкерское<ref>Не имеющее отношение к [[НПП «СЕМИКО»|производителю]] [[Электроника МК-161|«Электроники МК-161»]]. Русское слово хэкер происходит от английского слова [https://en.wikipedia.org/wiki/Hacker_(expert) hacker], но исключает паразитное значение «компьютерный преступник».</ref> расширение входного языка [[Электроника МК-161|«Электроники МК-161»]], предназначенное для разработки приложений «на борту» (без использования компьютера). '''Простые вычисления для [[«Электроники МК-61»]] и [[«Электроники МК-161»]] можно набивать и выполнять в строке ''Каллисто'' без изменений''', только добавьте пробел и [[Слово .|точку]] в конце для вывода результата.
Вместо фортовского цикла LOOP Каллисто использует более простой и быстрый цикл [[FOR]] из colorFORTH, а «бесконечный» стек содержит 12-разрядные десятичные числа ЭКВМ с плавающей запятой. Помимо обычной (для Форта) целочисленной операций деления, Каллисто использует традиционное для ПМК деление с плавающей запятой. Сохранены традиционные для ПМК обозначения операций умножения, подъёма стека, а также русскоязычные операции ПМК — [[ЗН]] , [[СЧ]] и т.д.


Среда ''Каллисто'' написана для [[Электроника МК-161|«Электроники МК-161»]] на [[РЯМК|расширенном языке МК]] и является компактным диалектом Форта с элементами {{colorForth}}. Распространяется под свободной лицензией с авторским левом ([https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BB%D0%B5%D1%84%D1%82 copyleft]), за другой формой лицензирования обращайтесь к правообладателю.
В отличии от ранних диалектов Форт экран Каллисто содержит 48 строк и занимает 3 Кб. Из-за того, что строка экрана занимает традиционные 64 символа, использование встроенного в ЭКВМ редактора является затруднительным. Программистам Каллисто предлагает строковый редактор, а также возможность написать собственный редактор экранов. Каллисто использует накладную алфавитно-цифровую клавиатуру для быстрого посимвольного ввода команд и данных.


Транслятор ''Каллисто Классик'' (версия 1.0) выпущен 7 ноября 2017 года.
Вводимые слова компилируются в словарь, находящийся в области двоичных данных. В этой же области располагается стек возвратов. Стек данных располагается в области десятичных регистров. Там же располагается «десятичный словарь», где хранятся десятичные переменные типа [[VALUE]]


Подробное описание слов ''Каллисто'' с использованием [[Стековая нотация|стековой нотации]] см. в статье [[Слова Каллисто по категориям]]. Также см. статью [[Архитектура Каллисто]] и официальное Руководство по эксплуатации ([http://the-hacker.ru/2017/Callisto.pdf pdf], 40 стр.).
В Каллисто используется единое адресное пространство, при этом размер ячейки памяти зависит от адреса и может колебаться от 1 байта до 12-разрядного десятичного числа с плавающей запятой.


== Краткая история Форта (1958-2016) ==
== Словарь Каллисто ==
Интересно, что разработка Форта началась в 1958 году, когда [https://ru.wikipedia.org/wiki/%D0%A1%D0%BC%D0%B8%D1%82%D1%81%D0%BE%D0%BD%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%81%D1%82%D1%80%D0%BE%D1%84%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BE%D0%B1%D1%81%D0%B5%D1%80%D0%B2%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F Смитсоновская астрофизическая обсерватория] наняла [https://ru.wikipedia.org/wiki/%D0%9C%D1%83%D1%80,_%D0%A7%D0%B0%D1%80%D0%BB%D1%8C%D0%B7_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%29 Чака Мура], студента [https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D1%81%D0%B0%D1%87%D1%83%D1%81%D0%B5%D1%82%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B8%D0%BD%D1%81%D1%82%D0%B8%D1%82%D1%83%D1%82 МТИ], для расчёта на [https://ru.wikipedia.org/wiki/IBM_704 IBM EDPM 704] орбиты и оптического отслеживания советского [https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA-1 Спутника], запущенного 4 октября 1957 года абсолютно неожиданно для США.<ref>[http://www.colorforth.com/HOPL.html «Forth - The Early Years» Chuck Moore, 1991] ''(англ.)''</ref>
* [[COLD]] — Первая словарная статья
 
* [[WARM]]
Имя FORTH язык обрёл в 1968 году, когда интерпретатор заработал на миникомпьютере IBM 1130 с графическим дисплеем IBM 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Говорят, что язык должен был называться FOURTH («четвёртое» поколение языков программирования), но ограничения операционной системы позволили дать файлу только пятибуквенное имя. Тогда Чак Мур работал в Mohasco Industries, Inc ([https://en.wikipedia.org/wiki/Amsterdam_%28city%29,_New_York Amsterdam NY], ''англ.'').
* [[BYE]] — Выход из системы может использоваться как временный, отладочный останов.
 
* [[VERSION]] — Кладёт в стек номер версии Каллисто.
Уже в 1976 году Форт был принят [https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%BD%D0%BE%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%BE%D1%8E%D0%B7 Международным Астрономическим Союзом], как стандартный язык. Первые влиятельные стандарты Форта появились в 1979 и 1983 годах. В 1980-90'ых годах Форт начал широко распространяться в СССР — чуть позже [[ПМК]] и независимо от них.
* [[EXECUTE]] — Исполняет слово, [[CFA]] которого хранится в стеке.
 
* [[?BREAK]] — Проверяем клавиатуру на паузу и аварийную остановку.
Тогда же появились первые советские реализации Форта, из которых на ''Каллисто'' сильнее всего повлияли ФОРТ-ЕС (Ленинград, 1986) и FORTH ИТЭФ (Москва, 1988), чьи исходные тексты были опубликованы в СССР их авторами. Эти «исходники» выложены на вики в качестве исторических примеров отечественной реализации слов ''Каллисто''.
* [[(LITERAL)]] — Код периода выполнения для литерала.
 
* [[TYPE (Каллисто)|TYPE]] — Передаёт u символов начиная с адреса a на выходное устройство.
Последние 20 лет общепризнанным в России и зарубежом является международный стандарт Форта ([http://www.iso.org/iso/ru/home/store/catalogue_tc/catalogue_detail.htm?csnumber=26479 ISO/IEC 15145:1997]), созданный на основе американского стандарта [http://forth.sourceforge.net/standard/dpans/dpans.htm ANS Forth] 1994 года. Ему на смену неторопливо готовится [http://www.forth200x.org/forth200x.html новый стандарт Форта] (условно называемый Форт-2012), черновики которого были учтены при разработке ''Каллисто'' наряду с критикой стандарта ANS. Например, с помощью [[Префиксы чисел|стандартных префиксов Форта]] для каждого числа можно индивидуально задавать систему счисления.
* [[TYPE1]] — Вывести строку из памяти данных, заменяя управляющие коды и строго в одну строчку, до конца индикатора.
 
* [[?BRANCH]] — Условный переход в шитом коде.
Продолжателем Форта, повлиявшим на ''Каллисто'', является и язык {{colorForth}}, развиваемый Чаком Муром в одиночку. Несмотря на явное влияние зарубежных стандартов языка Форт, при разработке ''Каллисто'' приоритет отдавался совместимости с отечественными [[ПМК]], а также удобству и скорости работы на [[Электроника МК-161|«Электронике МК-161»]] — вообще говоря, не предназначенной [[НПП «СЕМИКО»|разработчиками из Новосибирска]] для алгоритмических языков высокого уровня.
* [[BRANCH]] — Безусловный переход в шитом коде.
 
* [[(FOR)]]
== Основные отличия ''Каллисто'' от Форта ==
* [[(NEXT)]]
Вместо фортовского цикла DO…LOOP ''Каллисто'' использует более простой и быстрый цикл [[FOR]][[NEXT]] из {{colorForth}}, а [[стек данных]] содержит привычные 12-разрядные [[десятичные числа]] ЭКВМ. Для отделения дробной части числа от целой служит десятичная запятая, как в ПМК и ЭКВМ.
* [[(FIND)]] — Искать слово a1 в списке a2. При успехе дать NFA его статьи и c - байт длины с флагами.
 
* [[DIGIT]] — ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE
[[Файл:CallistoMag.png|left||264px|]]Помимо стандартных для Форта операций деления с остатком, ''Каллисто'' использует [[÷|традиционное для ПМК]] [[Слово ÷|деление с десятичной плавающей запятой]]. Сохранены традиционные для ПМК обозначения операций [[Слово ×|умножения]], [[Слово ↑|подъёма стека]], [[Слово ↔|обмена двух чисел на вершине стека]], математических функций, а также русскоязычные операции ПМК — [[ЗН]] , [[СЧ]] и т.д.
* [[РЕГ!]] — Запись в регистр ЭКВМ Rn при стеке ЭКВМ, заполненном на основе стека Форта.
 
* [[РЕГ@]] — Чтение из регистра ЭКВМ Rn с сохранением стека ЭКВМ в переменных RX RY RZ RT
Предусмотрены слова [[Слово ИП|ИП]] и [[Слово П|П]] для обращения к [[Регистры функций МК|функциональным]] и другим [[Регистр памяти данных|регистрам ЭКВМ]] по их привычным номерам. В названиях слов ''Каллисто'' русские буквы можно использовать наряду с английскими, причём заглавные и строчные буквы считаются одинаковыми.
* [[0=]]
 
* [[0-больше (Каллисто)|0&gt;]]
В Каллисто 1.0 используется [[единое адресное пространство|единая адресация]], объединяющая разрозненные адресные пространства ЭКВМ. При этом размер ''адресуемой единицы'' памяти зависит от адреса и может колебаться от 1 байта до восьми (12-разрядные [[десятичные числа]]). Беззнаковые 16-битные целые считываются в [[Стек данных|стек]] из двух последовательных регистров памяти с помощью слова [[U@]]. Как принято в ЭКВМ, старший байт идёт по младшему адресу. Первые 10000 адресов памяти представляют из себя [[память программ]], в которой находится исполняемый код ''Каллисто'' на [[ЯМК|входном языке МК-161]]. По каждому из этих 10 тысячи адресов содержится 1 байт, доступный только для чтения.
* [[0-меньше (Каллисто)|0&lt;]]
 
* [[= (Каллисто)|=]]
Из-за невозможности исполнять [[Система команд ЭКВМ|код МК-161]] из [[Память двоичных данных|области данных]] при написании порождающих слов вместо современной конструкции CREATE…DOES> используется устаревший, но не менее мощный механизм [[⟨BUILDS|&lt;BUILDS]] [[DOES⟩|DOES&gt;]]
* [[меньше (Каллисто)|&lt;]]
 
* [[больше (Каллисто)|&gt;]]
После нажатия [[Клавиша Ввод|клавиши {{Синяя клавиша|Ввод}}]] введённые слова либо исполняются сразу, либо компилируются в [[словарь]], находящийся в [[Память двоичных данных|области двоичных данных]] ([[Единое адресное пространство|адреса]] 11000…15095). В этой же области располагается [[Стек возвратов Каллисто|стек возвратов]] — растущий «вниз», навстречу [[Словарь|словарю]]. [[Стек данных|«Бесконечный» стек данных]] располагается в области [[Регистр десятичных данных|десятичных регистров]] ([[Единое адресное пространство|адреса]] 10000…10999). Навстречу [[Стек данных|десятичному стеку]] растёт [[десятичный словарь]], где хранятся значения десятичных литералов и удобных переменных типа [[VALUE]].
* [[ENCL]]
 
* [[EMI]]
Из-за ограничений платформы [[буфер]] в ''Каллисто'' только один ([[Единое адресное пространство|адреса]] 15096…18167), а размер загружаемого в него [[блок]]а составляет 3 Кбайта.
* [[EMIT]] — Отображает на экране символ, код которого находится в стеке.
 
* [[C.]] — Выводит символ как в дампе, управляющие символы заменяются на "."
== Приложения и их распространение ==
* [[↵ (Каллисто)|↵]]
Разработанные пользователем программы на ''Каллисто'' называются ''приложениями'' и могут распространяться со средой ''Каллисто'' в форме ''пакета'' набора файлов для «Электроники МК-161», объединённых общим именем. Приложения могут запускаться сразу же после запуска ''Каллисто'' (см. слово [[APP]]) и возвращаться в [[Режим автоматической работы|автоматический режим]] после своего выполнения (см. слово [[BYE]]).
* [[BELL]]
 
* [[BEEP]]
Продвинутые разработчики могут использовать в своих приложениях программы для «Электроники МК-161» (расположенные в [[Память программ|памяти программ]]), изменяя исходный текст среды ''Каллисто''.
* [[(PLAY)]]
 
* [[PLOT]] — Отображение точки на экране
=== Исходный текст ===
* [[DRAW]] — Рисует прямые линии, X и Y - координаты конца линии; L - код цвета/яркости, как и в случае PLOT
Помимо ввода с клавиатуры, исходный текст приложений может располагаться на внутреннем диске МК-161 в виде [[экран]]а — в пронумерованном [[блок]]е (файле текста), откуда этот исходный текст загружается командой [[LOAD]]
* [[ГРФ]] — Вывод графической информации.
 
* [[↖ (Каллисто)|]] — Очищаем экран, оба курсора в левый верхний угол
В отличии от ранних диалектов Форта [[Экран|экран Каллисто]] содержит 48 строк, занимает 3 Кб и при интерпретации считывается из [[буфер]]а, расположенного в [[текст|области текста]]. Из-за того, что строка [[экран]]а занимает традиционные 64 символа, использование [[Редактор текста|встроенного в ЭКВМ редактора]] является затруднительным. Разработчикам ''Каллисто'' предлагает перенесённый с Форта строковый редактор EDIT, а также возможность написать собственный редактор [[экран]]ов. Удобней всего использовать ''Каллисто'' с алфавитно-цифровой накладкой на клавиатуру («оверлеем») для быстрого посимвольного ввода команд и данных.
* [[AT-XY]] — Позиционирование курсора: COL ROW AT-XY
 
* [[DISKOFF]]
[[Экран]]ы ''Каллисто'' можно передавать на компьютер и распространять в файлах с расширением mkt. В дистрибутиве ''Каллисто'' есть исходный текст компьютерной программы listmkt. Эта программа позволяет преобразовывать файлы mkt в текстовые, которые человеку легко читать и редактировать.
* [[KEY]] — Ожидает ввод символа с клавиатуры, при вводе посылает его код в стек.
 
* [[ACCEPT]]
Несмотря на техническую возможность передавать [[экран]]ы с исходным текстом на компьютер и обратно, ''Каллисто'' рассчитана на то, чтобы вести разработку прямо на борту [[Электроника МК-161|«Электроники МК-161»]], без использования иностранных программ и зарубежного оборудования.
* [[1+]] — Прибавление 1.
 
* [[2+]] — Прибавление 2.
=== Исполняемый код ===
* [[1-]] — Вычитание 1.
Откомпилированные приложения хранятся в памяти «Электроники МК-161», откуда слово [[SAVE"]] сохраняет их на внутренний диск. Слово [[LOAD"]] позволяет быстро (за несколько секунд) загрузить и выполнить приложение.
* [[]] — Умножение на 2 (двоичный сдвиг влево).
 
* [[2/]] — Целочисленное деление на 2 (двоичный сдвиг вправо).
Исполняемый код представляет собой два файла, содержащих образы двоичных (mkb) и десятичных (mkd) регистров сразу после компиляции вашего приложения. Для запуска такого приложения потребуется в точности та исполняемая версия ''Каллисто'', которой приложение было откомпилировано. Поэтому удобней всего хранить исполняемый код в виде ''пакета'' из трёх файлов под одним именем, среди которых есть переименованный исполняемый файл ''Каллисто'' (Callisto.mkp). Переменная [[APP]] обеспечит, при необходимости, автозапуск вашего приложения.
* [[]] — Деление на 2 чисел с десятичной плавающей запятой.
 
* [[+ (Каллисто)|+]] — Сложение.
Свободная лицензия ''Каллисто'' запрещает закрытие исходного текста транслятора. Для соблюдения этой лицензии при распространении вашего исполняемого кода предлагается включить в дистрибутив (их можно вынести в отдельный подкаталог) два дополнительных файла, технически не требующихся для запуска вашей программы на «Электронике»:
* [[- (Каллисто)|-]] — Вычитание b из a.
* исходный текст использованной версии ''Каллисто'', содержащий все внесённые в него изменения (Callisto.mkl)
* [[× (Каллисто)|×]] — Умножение.
* текст свободной лицензии, по которой распространяется эта (стандартная или изменённая вами) версия ''Каллисто'', например PRAVO.TXT
* [[÷ (Каллисто)|÷]] — Деление с десятичной плавающей запятой.
 
* [[/ (Каллисто)|/]] — Целочисленное деление a на b, помещение частного в стек.
Всего получается пять обязательных файлов, которые для удобства предлагается упаковать в один архив дистрибутива словно пять пальцев одной ладони складываются в кулак. В этот же архив можно добавить документацию на ваше приложение и остальные файлы, которые вы сочтёте полезными для ваших пользователей.
* [[MOD]] — Получение остатка от деления a на b.
 
* [[/MOD]] — Деление с остатком a на b.
'''Включать в дистрибутив исходный текст ваших программ не обязательно вы сами свободно выбираете лицензию для распространения своих авторских материалов.''' Защита от закрытия исходного кода ([https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BB%D0%B5%D1%84%D1%82 «авторское лево»], ''англ.'' copyleft) распространяется только на сам транслятор ''Каллисто'', защищённый законами об авторском праве (и на любые программы, использующие его код).
* [[×/]] — Операция масштабирования -- умножение n1 на n2 с последующим делением на n3.
 
* [[×/MOD]] — Остаток и частное от деления произведения n1*n2 на n3.
Приложения, написанные вами на ''Каллисто'', вы вправе распространять под любой лицензией.
* [[NEGATE]] — Смена знака числа в стеке.
 
* [[Больше-меньше (Каллисто)|&gt;&lt;]]
== Примечания ==
* [[S-больше-D (Каллисто)|S&gt;D]]
<references />
* [[Bar-X-bar (Каллисто)|&#124;X&#124;]] — Получение абсолютного значения.
* [[AND]] — 32-битное побитовое логическое умножение (И).
* [[OR]] — 32-битное побитовое логическое сложение (ИЛИ).
* [[XOR]] — 32-битное побитовое логическое исключающее ИЛИ (XOR).
* [[INVERT]] — 32-битное побитовое логическое отрицание (НЕ).
* [[MIN]] — Выделение минимума.
* [[MAX]] — Выделение максимума.
* [[10ˣ|10<sup>x</sup>]] — Десятичный антилогарифм.
* [[Eˣ|E<sup>x</sup>]] — Экспонента.
* [[LG]] — Десятичный логарифм.
* [[LN]] — Натуральный логарифм.
* [[X²|X<sup>2</sup>]] — Возведение в квадрат.
* [[√ (Каллисто)|√]] Квадратный корень.
* [[1/X (Каллисто)|1/X]] — Обратная величина.
* [[Yˣ|Y<sup>x</sup>]] — Степенная функция.
* [[СЧ]] — Случайное число.
* [[ЗН]] — Знак числа.
* [[lbr-X-rbr (Каллисто)|&#91;X&#93;]] — Целая часть числа.
* [[lbc-X-rbc (Каллисто)|&#123;X&#125;]] — Дробная часть числа.
* [[DEGREES]] — Даёт указание Форту (и ЭКВМ) принимать углы в градусах
* [[RADIANS]] — Даёт указание Форту (и ЭКВМ) принимать углы в радианах
* [[ARCSIN]]
* [[ARCCOS]]
* [[ARCTG]]
* [[SIN]]
* [[COS]]
* [[TG]]
* [[SP@]] — Записывает в стек адрес вершины стека, до исполнения команды SP@
* [[!SP]] — Устанавливает указатель стека в исходное состояние из переменной S0.
* [[RP@]]
* [[!RP]] — Присваивает указателю стека возвратов исходное (базовое) значение из переменной R0.
* [[EXIT]]
* [[LEAVE]] — Досрочно прерывает цикл FOR .. NEXT (только для области данных)
* [[UNLOOP]]
* [[больше-R (Каллисто)|&gt;R]] — Переносит 16-битное число из стека данных в стек возвратов.
* [[R-больше (Каллисто)|R&gt;]] — Переносит 16-битное число из стека возвратов в стек данных.
* [[I (Каллисто)|I]] — Копирует верхнее 16-битное число из стека возвратов в стек данных.
* [[LEV]]
* [[PICK]] — Копирует элемент стека с номером u и записывает его наверх стека.
* [[OVER]] — Копирует 2-й элемент стека и заносит его наверх.
* [[↔ (Каллисто)|↔]] — Меняет местами два верхних элемента стека.
* [[2SWAP]] — Меняет местами верхние две пары чисел в стеке.
* [[↑ (Каллисто)|↑]] — Дублирует верхний элемент стека.
* [[?DUP]] — Осуществляет операцию ↑ если x<>0
* [[2DUP]] Дублирует верхнюю пару чисел в стеке.
* [[ROT]] Переносит 3-й элемент стека наверх.
* [[2DROP]] — Удаляет из стека число двойной длины.
* [[DROP]] — Удаляет верхний элемент стека.
* [[CMOVE]] — Копирует побайтно область памяти размером u байт начиная с a1 и записывает её начиная с a2.
* [[CMOVE-больше (Каллисто)|CMOVE&gt;]]
* [[FILL]] — Записывает u байт c в память начиная с адреса a
* [[ERASE]] — Записывает u нулевых байтов в память начиная с адреса a.
* [[BLANK]] — Записывает n кодов пробела (32) в память, начиная с адреса a.
* [[HOLD]] — Вводит в текущую ячейку выходного буфера PAD символ, код которого в стеке
* [[TIB]] — Занесение в стек начального адреса входного буфера терминала (Terminal Input Buffer).
* [[+!]] — Добавляет к содержимому ячейки с адресом a число n
* [[TOGGLE]]
* [[@ (Каллисто)|@]] — Замещает адрес в стеке его содержимым, двухбайтовая ячейка содержит число со знаком.
* [[U@]] — Считываем в стек 2-х байтовое целое без знака.
* [[C@]] — Извлекает байт информации из ячейки, адрес которой находится в стеке.
* [[! (Каллисто)|!]] — Записывает число x в ячейку с адресом a.
* [[C!]] — Записывает байт c по адресу a.
* [[BODY-больше (Каллисто)|BODY&gt;]] — [[PFA]] ---> [[CFA]]
* [[!CSP]] — Запомнить адрес вершины стека в "CSP".
* [[HERE]] — Выдаёт адрес первой свободной ячейки в словаре.
* [[ALLOT]] — Добавляет n байт к полю параметров слова, описанного последним.
* [[ДHERE]] — Выдаёт адрес первого свободного десятичного регистра в десятичном словаре.
* [[ДALLOT]] — Резервирует n десятичных регистров в десятичном словаре.
* [[lbr (Каллисто)|&#91;]] — Переключить текстовый интерпретатор в режим исполнения
* [[rbr (Каллисто)|&#93;]] — Переключить текстовый интерпретатор в режим компиляции.
* [[HEX]] — Устанавливает шестнадцатеричную систему счисления.
* [[DECIMAL]] — Устанавливает десятичную систему счисления для ввода-вывода.
* [[-TRAILING]]
* [[UPPER]]
* [[DEFINITIONS]] — Контекстный словарь VOCABULARY становится текущим, все последующие описания связаны с этим словарём.
* [[UPDATE]] — Устанавливает в буфере флаг "спасения".
* [[X (Каллисто)|X]] — Даёт номер загруженного блока.
* [[Двоеточие (Каллисто)|:]]
* [[; (Каллисто)|;]]
* [[CONSTANT]]
* [[VARIABLE]]
* [[VALUE]]
* [[DOES-больше (Каллисто)|DOES&gt;]]
* [[F-решётка-больше (Каллисто)|F#&gt;]] — Размещает преобразованную строку сразу после словаря, возвращает адрес и число символов.
* [[F-решётка-S (Каллисто)|F#S]] — Преобразовывает число с плавающей запятой в строку символов.
* [[меньше-F-решётка (Каллисто)|&lt;F#]] — Начинает преобразования чисел с плавающей запятой.
* [[0 (Каллисто)|0]]
* [[1 (Каллисто)|1]]
* [[2 (Каллисто)|2]]
* [[3 (Каллисто)|3]]
* [[π (Каллисто)|$\pi$]] — Число пи.
* [[BL]]
* [[C/L]] — Количество символов в одной строке экрана Форта.
* [[B/BUF]]
* [[RT (Каллисто)|RT]]
* [[RZ (Каллисто)|RZ]]
* [[RY (Каллисто)|RY]]
* [[RX (Каллисто)|RX]]
* [[S0]] — Переменная, содержит адрес дна стека данных.
* [[R0 (Каллисто)|R0]]
* [[ДDP]] — Указатель десятичного словаря.
* [[WIDTH]]
* [[WARNING]]
* [[FENCE]] — Служит для защиты базового словаря от стирания с помощью оператора FORGET
* [[DP]]
* [[VOCL]]
* [[AUTOEXEC]] — Слово, [[xt]] которого хранится в переменной AUTOEXEC, будет выполнено после загрузки сохранения по [[LOAD"]]
* [[GRXY]] — Графический курсор
* [[BLK]]
* [[больше-IN (Каллисто)|&gt;IN]]
* [[SCR]] — Служит для хранения текущего значения номера редактируемого экрана.
* [[OFFSET]] — Переменная, содержащая смещение, добавляемое к номеру блоку на стеке словом [[BLOCK]] для получения физического номера блока.
* [[CONTEXT]] — Переменная указывает на словарь VOCABULARY, в котором происходит поиск слов во время интерпретации входного потока.
* [[CURRENT]] — Переменная указывает словарь VOCABULARY, в который вводятся определения новых слов.
* [[STATE]]
* [[BASE]]
* [[DPL]]
* [[CSP]] — Переменная для контрольного хранения значения указателя стека.
* [[R-решётка (Каллисто)|R#]] — Позиция курсора при редактировании экрана.
* [[HLD]]
* [[$EX]] — Десятичное значение порядка вводимого числа
* [[ERB]]
* [[SAVIN]] — Сохраняем >IN в INTERPRET для NUMBER
* [[, (Каллисто)|,]] — Компилирует число n в первую свободную ячейку словаря.
* [[C,]] — Компилирует байт c в очередной свободный байт словаря.
* [[Д,]] — Компилирует число x в первую свободную ячейку десятичного словаря.
* [[LATEST]]
* [[SPACE]] — Вывод одного пробела.
* [[N-больше-LINK (Каллисто)|N&gt;LINK]] — [[NFA]] ---> [[LFA]]
* [[NAME-больше|NAME&gt;]] — [[NFA]] ---> [[CFA]]
* [[N-больше-BODY|N&gt;BODY]] — [[NFA]] ---> [[PFA]]
* [[?ERROR]] — ?ERROR диагностика ошибок Форт ИТЭФ
* [[?COMP]]
* [[?EXEC]]
* [[?PAIR]]
* [[?CSP]] — Выдать ошибку "сбился указатель стека" если он не равен значению в [[CSP]]
* [[?LOAD]]
* [[COMPILE]] — Компиляция 16-битного слова, следующего за оператором.
* [[SMUDGE]] — Изменить флаг "SMUDGE" в последней созданной статье.
* [[(;CODE)]] — Записать в поле кода последней статьи следующий адрес и закончить определение.
* [[меньше-BUILDS|&lt;BUILDS]]
* [[COUNT]]
* [[(.")]] — Слово, компилируемое [[."]]
* [[."]] — При исполнении напечатать на терминале следующие литеры до кавычки исключительно.
* [[.(]] — Напечатать следующие литеры до закрывающей скобки исключительно.
* [[QUERY]] — Осуществляет ввод строки символов с клавиатуры.
* [[\0 (Каллисто)|\0]] — (Пустое слово) - закончить интерпретацию.
* [[PAD]] — Выдаёт адрес буфера для промежуточного хранения последовательностей символов
* [[WORD]] — Считывает одно слово из входного или экранного буфера и размещает его, начиная с адреса HERE
* [[CONVERT]]
* [[FINDN]] — Поиск слова в активных словарях
* [[NUMBER]] — Преобразует в число последовательность символов, начиная с a+1 с учётом BASE,
* [[FL]]
* [[ERROR (Каллисто)|ERROR]] — Диагностика ошибок Форт ИТЭФ
* [[ID.]] — Печатает имя слова, записанное в соответствии с требованиями словаря Форта
* [[CREATE]] — Формирует слово с именем XXX (заголовок и CFA), оставляя его поле параметров пустым.
* [[lbr-COMPILE-rbr (Каллисто)|&#91;COMPILE&#93;]] — Скомпилировать следующее слово, независимо от его признака IMMEDIATE.
* [[TO]]
* [[LITERAL]]
* [[FLITERAL]] — Тоже, что и LITERAL, но для плавучки.
* [[?STACK]]
* [[INTERPRET]] — Интерпретирует последовательность слов, пока там что-то есть.
* [[IMMEDIATE]] — Преобразует слово, за описанием которого следует, в оператор, исполняемый при компиляции.
* [[VOCABULARY]] — Слово-описатель, которое создаёт новый словарь.
* [[(]] — Комментарий -- пропустить следующий текст до закрывающей круглой скобки.
* [[QUIT]] — Очищает стек возвратов, устанавливает режим исполнения и возвращает управление терминалу.
* [[ABORT]] — Прерывает исполнение, делает словарь FORTH контекстным, исполняет QUIT
* [[EMPTY-BUFFERS]] — Буфер отмечается как пустой, независимо от содержания. Обновлённый блок на диск не записывается.
* [[SAVE-BUFFERS]] — Если находящийся в буфере экран был изменён, скидывает его на диск.
* [[FLUSH]] — Если экран изменён, скидывает его на диск и выкидывает его из памяти.
* [[BUFFER]] — Резервирует блок в памяти и приписывает ему номер u (как и BLOCK ), но сам блок с диска не считывается.
* [[BLOCK]] — Записывает в стек адрес первого байта в буфере с блоком, номером которого u.
* [[(LINE)]] — Выдаёт адрес a и длину u строки L с экрана S.
* [[MESSAGE]]
* [[LOAD]] — Загружает экран с номером u (компилирует или исполняет)
* [[\ (Каллисто)|\]] — Закончить интерпретацию строки.
* [[\S]] — Закончить интерпретацию экрана.
* [[---больше (Каллисто)|--&gt;]] — Даёт команду немедленно приступить к интерпретации следующего по порядку экрана.
* [['N]] — Ищет слово с именем XXX (из входного или экранного буфера) в словаре Форта.
* [[lbr-'-rbr (Каллисто)|&#91;'&#93;]] — Скомпилировать CFA следующего слова как числовой литерал.
* [[больше-MARK (Каллисто)|&gt;MARK]] — Отметить текущий адрес для ссылки вперёд.
* [[больше-RESOLVE (Каллисто)|&gt;RESOLVE]] — Разрешить ссылку вперёд в адресе a.
* [[меньше-MARK (Каллисто)|&lt;MARK]] — Отметить текущий адрес для ссылки назад.
* [[меньше-RESOLVE (Каллисто)|&lt;RESOLVE]] — Разрешить ссылку назад в адрес a.
* [[UNTIL]] — Конец цикла "BEGIN UNTIL".
* [[AGAIN]] — Конец бесконечного цикла "BEGIN AGAIN".
* [[BEGIN]] — Начало циклов "BEGIN".
* [[THEN]] — Конец ветвления "IF".
* [[ELSE]] — Начало 2-ой ветви ветвления "IF".
* [[IF]] — Начало ветвления "IF".
* [[WHILE]] — Ветвление "WHILE" в цикле "BEGIN WHILE REPEAT".
* [[REPEAT]] — Конец цикла "BEGIN WHILE REPEAT".
* [[FOR]] — Начало цикла со счётчиком. Цикл исполнится ровно n раз.
* [[NEXT]] — Конец цикла со счётчиком.
* [[SPACES]] — Вывод заданного числа "цифровых" (шириной в цифру) пробелов на экран.
* [[I-решётка-больше (Каллисто)|I#>]] — Завершает преобразование целого числа
* [[SIGN]] — Вводит знак "минус" в выходной буфер PAD, если n<0
* [[I-решётка (Каллисто)|I#]] — Преобразует одну цифру целого числа и записывает её в выходной буфер PAD
* [[I-решётка-S (Каллисто)|I#S]] — Преобразует целое число до тех пор, пока не будет получен 0
* [[меньше-I-решётка (Каллисто)|<I#]] — Начинает процесс преобразования целого числа в последовательность кодов символов.
* [[(.)]] — Как I. -- только не выводит число на экран, а возвращает нам адрес и длину строки.
* [[I.]] — Вывод целого числа, за которым следует один пробел.
* [[. (Каллисто)|.]] — Вывод числа, за которым следует один пробел.
* [[I.R]] — Напечатать n на терминале в поле длиной p справа.
* [[LIST]] — Распечатывает экран с номером u и записывает его номер в переменную SCR
* [[INDEX]] — Выводит на экран верхние строчки экранов, номера блоков которых входят в диапазон от нач до кон.
* [[WORDS]] — Просмотр полного списка операторов, хранящихся в данный момент в словаре
* [[COPY]] — Копирует экран n на экран m
* [[DEPTH]] — Выдаёт в стек полное количество чисел, хранившихся в стеке до исполнения этой команды.
* [[DUMP]] — Отображает u байт памяти начиная с адреса a
* [[.S]] — Распечатка всего содержимого стека, оставляющая стек без изменений.
* [[КАТ]] — Поиск каталога Форта и переход в него.  Если каталога нет, он создаётся.
* [[SAVE-TEXT]] — Сохранить область текста в энергонезависимую память.
* [[RGRW]] — Чтение/запись файла регистров (словаря) в загруженном каталоге.
* [[LORW]] — Чтение/запись блока из файла в загруженном каталоге.
* [[R/W]]
* [[SAVE"]] — Сохранить в файлы словарь Форта и десятичный словарь.
* [[LOAD"]] — Считать из файла словарь Форта и десятичный словарь.
* [[;CODE]]
* [[FORTH]] — Делает словарь FORTH контекстным.
* [[TASK]]


== Ссылки ==
== Ссылки ==
* См. [[Список встроенных слов Каллисто]], [[Слова Каллисто по категориям]] и [[Палитра Каллисто]]
* [https://vk.com/topic-10838600_30361028 Обсуждение Каллисто в Контакте] и [http://arbinada.com/pmk/ru/node/1195 на сайте Арбинады]
* См. также учебные статьи [[Первое знакомство с Каллисто]] и [[Простые программы на Каллисто]]
* [http://the-hacker.ru/2015/Callisto-0.3.5a.zip Каллисто v0.3.5a], последняя актуальная версия Каллисто
* [https://vk.com/topic-10838600_30361028 Обсуждение Каллисто в Контакте], [http://mk-152.livejournal.com/53935.html в живом журнале] и [http://arbinada.com/pmk/ru/node/1195 на сайте Арбинады]
* Языки [https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Форт] и [https://ru.wikipedia.org/wiki/ColorForth colorFORTH] в Википедии
* [http://the-hacker.ru/2017/Callisto-1.zip Каллисто Классик 1.0], последняя актуальная версия ''Каллисто'' и [http://the-hacker.ru/Callisto.html её исходный текст]
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%BE_%28%D1%81%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA%29 Каллисто в Википедии] — спутник Юпитера, в честь которого назван язык Каллисто
* [https://www.youtube.com/watch?v=YPBFf55AAD4 Видеообзор Каллисто v0.8б] на YouTube
* Языки [https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Форт] и [https://ru.wikipedia.org/wiki/ColorForth colorFORTH], а также [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C Обратная польская запись] в Википедии
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%BE_%28%D1%81%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA%29 Каллисто в Википедии] — спутник Юпитера, в честь которого назван ''язык Каллисто''
* [http://fforum.winglion.ru/ Форум по Форту] и более мелкий [http://www.balancer.ru/tech/forum/viewforum.php?id=29 форум на Авиабазе]
* [http://the-hacker.ru/dpans94_ru_upd.html Стандарт ANS Forth] ''(перевод на русский)'', также без исправленных ошибок: [http://fforum.winglion.ru/att/dpans94/dpans94ru1251.txt в виде текста] и исходный архив ([http://www.forth.org.ru/forth/dpans94_ru.rar rar, 265 Кб])
* [http://www.computer-museum.ru/histsoft/fortran_sorucom_2011.htm Баранов С.Н. «Язык Форт в СССР и России»]
* Статья Андрея Черезова [http://www.enet.ru/win/cherezov/forth_ideas.html «Идеи языка Форт»] (кодировка Windows)
* Статья [http://www.compiler.su/russkij-yazyk-i-programmirovanie.php «Русский язык и программирование»] на compiler.su
* [http://tinyurl.com/Callisto-161 tinyurl.com/Callisto-161] — короткий адрес этой страницы (через зарубежный сайт)
 
== Литература ==
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%BE_(%D1%80%D0%BE%D0%BC%D0%B0%D0%BD) Мартынов Г.С. Каллисто. — Л.: Детгиз, 1957] — Советская н/ф книга, принёсшая в русский язык прилагательное ''каллистянский''.
* '''Семёнов Ю.А. Программирование на языке ФОРТ. — М.: Радио и связь, 1991.''' — В этой московской книге [http://www.ict.edu.ru/persons/index.php?a=pers&c=getForm&r=persDesc&d=light&id_pers=1945 Юрий Алексеевич] опубликовал исходный текст Форта ИТЭФ на макроассемблере IBM PC, сильно повлиявший на разработку ''Каллисто''. Всем энтузиастам ''Каллисто'' рекомендую разыскать эту интересную книгу и использовать её в качестве учебника с «Электроникой МК-161» в руках.
* '''Баранов С.Н., Ноздрунов Н.Р. Язык Форт и его реализации. — Л.: «Машиностроение». Ленингр. отд-ние, 1988. (ЭВМ в производстве)''' ISBN 5-217-00324-3 ББК 32.973 — В этой ленинградской книге опубликован исходный текст ФОРТа-ЕС, который соответствует стандарту Форт-83. ''Каллисто'' во многом близка этой советской реализации Форта, которая получила широкую известность в СССР.
* [http://www.nncron.ru/book/sf/ Л.Броуди «Начальный курс программирования на языке Форт»], она же [http://www.nncron.ru/download/sf.chm в формате chm (1,5 Мб)] и в оригинале (''англ.'': Leo Brodie [https://www.forth.com/starting-forth/ Starting Forth])
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20THINKING%20FORTH Л.Броуди «Способ мышления — Форт»], в [https://www.arbinada.com/en/node/336 формате chm], в виде текста ([http://www.forth.org.ru/~cactus/files/brodie.rar rar, 205 Кб]) и в оригинале (''англ.'': Leo Brodie [http://thinking-forth.sourceforge.net Thinking Forth])
* [http://galileo.phys.virginia.edu/classes/551.jvn.fall01/primer.htm Julian Noble. A Beginner's Guide to Forth.] (''англ.'')
 
[[Категория:Программы для ЭКВМ]]
[[Категория:Языки программирования для ЭКВМ]]
[[Категория:Каллисто]]
[[Категория:Программные средства]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)

Шаблоны, используемые на этой странице: