Слова Каллисто по категориям: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
(не показано 65 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Следующие слова реализованы в ядре [[Каллисто]] | Следующие слова реализованы в ядре [[Каллисто]] Классик v1.0rc2 и включены в стандартную поставку: | ||
== Математика == | == Математика == | ||
Строка 10: | Строка 10: | ||
=== Целочисленное деление === | === Целочисленное деление === | ||
* [[Слово /|/]] — Целочисленное деление | * [[Слово /|/]] — Целочисленное деление y на x, помещение частного в [[Стек данных|стек]]. | ||
* [[MOD]] — Получение остатка от деления | * [[MOD]] — Получение остатка от деления y на x. | ||
* [[Слово /MOD|/MOD]] — Деление с остатком | * [[Слово /MOD|/MOD]] — Деление с остатком y на x. | ||
* [[2/]] — Целочисленное деление на 2 (двоичный сдвиг вправо). | * [[2/]] — Целочисленное деление на 2 (двоичный сдвиг вправо). | ||
* [[×/]] — Операция масштабирования | * [[×/]] — Операция масштабирования: умножение z на y с последующим делением на x. | ||
* [[×/MOD]] — Остаток и частное от деления произведения | * [[×/MOD]] — Остаток и частное от деления произведения z×y на x. | ||
=== | === Сравнения === | ||
* [[Слово =|=]] [[ | * [[Слово =|=]] [[⟨|<]] [[⟩|>]] — сравнение двух чисел на вершине [[Стек данных|стека]]. | ||
* [[0=]] [[0⟨|0<]] [[0⟩|0>]] — сравнение числа на вершине [[Стек данных|стека]] с нулём. | * [[0=]] [[0⟨|0<]] [[0⟩|0>]] — сравнение числа на вершине [[Стек данных|стека]] с нулём. | ||
=== Константы === | === Константы === | ||
* [[FALSE]] [[TRUE]] — Значения «ложь» и «истина» (константы нуль и -1). | * [[FALSE]] [[TRUE]] — Значения «ложь» и «истина» (константы нуль и -1). | ||
* [[Слово 1|1]] [[Слово 2|2]] — | * [[Слово 1|1]] [[Слово 2|2]] — Числа один и два. | ||
* [[Слово Π| | * [[Слово Π| \(\pi\)]] — Число пи (3,14159265359). | ||
* [[BL]] — | * [[BL]] — Код литеры [[пробел]]а, число 32. | ||
=== Алгебраические функции === | === Алгебраические функции === | ||
Строка 40: | Строка 40: | ||
=== Побитовые логические операции === | === Побитовые логические операции === | ||
* [[ | * [[AND]] [[OR]] [[XOR]] — 32-битные поразрядные логические И, ИЛИ, исключающее ИЛИ | ||
* [[ | * [[NOT]] — 32-битное поразрядное логическое отрицание (НЕ). | ||
=== Остальная математика === | === Остальная математика === | ||
* [[⟩⟨|><]] — Поменять местами байты в двухбайтном значении. | * [[⟩⟨|><]] — Поменять местами байты в двухбайтном значении. | ||
* [[S⟩D|S>D]] | * [[S⟩D|S>D]] — Преобразовывает 32−битное число n в пару 16−битных чисел u2 u1. | ||
* [[¦X¦||X|]] — Абсолютное значение (модуль числа). | * [[¦X¦||X|]] — Абсолютное значение (модуль числа). | ||
* [[MIN]] [[MAX]] — Нахождение минимума, максимума из двух чисел. | * [[MIN]] [[MAX]] — Нахождение минимума, максимума из двух чисел. | ||
Строка 78: | Строка 78: | ||
* [[Слово R0|R0]] — Переменная, адрес дна [[Стек возвратов Каллисто|стека возвратов]]. | * [[Слово R0|R0]] — Переменная, адрес дна [[Стек возвратов Каллисто|стека возвратов]]. | ||
=== Обращение к | === Обращение к памяти === | ||
* [[Слово @|@]] — | * [[Слово @|@]] — Заместить адрес в [[Стек данных|стеке]] его содержимым, ячейка содержит число со знаком. | ||
* [[U@]] — | * [[U@]] — Считать 2-х байтовое целое без знака. | ||
* [[C@]] — | * [[C@]] — Извлечь байт. | ||
* [[Слово !|!]] — | * [[Слово !|!]] — Записать число в ячейку. | ||
* [[0!]] — Обнулить ячейку | * [[0!]] — Обнулить ячейку. | ||
* [[C!]] — | * [[C!]] — Записать байт. | ||
* [[+!]] — | * [[+!]] — Добавить число к содержимому ячейки. | ||
* [[TOGGLE]] | * [[TOGGLE]] — Изменить байт памяти по маске XOR. | ||
* [[++!]] [[−−!]] [[++@]] [[−−@]] — Косвенная адресация с предварительным уменьшением или увеличением указателя. | |||
=== Работа с областями памяти === | === Работа с областями памяти === | ||
* [[CMOVE]] — | * [[CMOVE]] — Копировать область памяти побайтно. | ||
* [[CMOVE〉|CMOVE>]] | * [[CMOVE〉|CMOVE>]] — Копировать область памяти, начиная с больших адресов. | ||
* [[FILL]] — | * [[FILL]] — Записать байт в область памяти. | ||
* [[ERASE]] — | * [[ERASE]] — Обнулить область памяти. | ||
* [[BLANK]] — | * [[BLANK]] — Записать в память [[пробел]]ы (32). | ||
=== Работа со строками символов === | === Работа со строками символов === | ||
Строка 119: | Строка 120: | ||
* [[CONSTANT]] — Определить следующее слово, как 16-битную целую константу со значением, взятым из стека. | * [[CONSTANT]] — Определить следующее слово, как 16-битную целую константу со значением, взятым из стека. | ||
* [[VARIABLE]] — Определить следующее слово, как 16-битную целую переменную с начальным значением нуль. | * [[VARIABLE]] — Определить следующее слово, как 16-битную целую переменную с начальным значением нуль. | ||
* [[FVARIABLE]] — Определить следующее слово, как десятичную переменную с начальным значением нуль. | |||
* [[VALUE]] — Определить следующее слово, как десятичную величину с начальным значением, взятым из стека. | * [[VALUE]] — Определить следующее слово, как десятичную величину с начальным значением, взятым из стека. | ||
* [[TO]] — Запись [[Десятичное число|десятичного числа]] в [[VALUE|десятичную величину]] или [[CFA|токена]] в [[DEFER|переменную действия]]. | * [[TO]] — Запись [[Десятичное число|десятичного числа]] в [[VALUE|десятичную величину]] или [[CFA|токена]] в [[DEFER|переменную действия]]. | ||
Строка 132: | Строка 134: | ||
* [[[COMPILE]|[COMPILE]]] — Скомпилировать следующее слово, независимо от его [[IMMEDIATE|признака немедленного исполнения]]. | * [[[COMPILE]|[COMPILE]]] — Скомпилировать следующее слово, независимо от его [[IMMEDIATE|признака немедленного исполнения]]. | ||
* [[[']|[']]] — Скомпилировать [[CFA]] следующего слова как [[LITERAL|числовой литерал]]. | * [[[']|[']]] — Скомпилировать [[CFA]] следующего слова как [[LITERAL|числовой литерал]]. | ||
* [[LITERAL]] [[FLITERAL]] — Обработка литералов, целочисленных и | * [[LITERAL]] [[FLITERAL]] — Обработка литералов, целочисленных и десятичных. | ||
* [[(LITERAL)]] [[(ИП)]] — Код периода выполнения для литералов, целочисленных и | * [[(LITERAL)]] [[(ИП)]] — Код периода выполнения для литералов, целочисленных и десятичных. | ||
=== Условный оператор === | === Условный оператор === | ||
Строка 151: | Строка 153: | ||
* [[UNLOOP]] — Обеспечивает досрочный выход из цикла [[FOR]] … [[NEXT]]. | * [[UNLOOP]] — Обеспечивает досрочный выход из цикла [[FOR]] … [[NEXT]]. | ||
=== | === Разработка структур управления === | ||
* [[BRANCH]] [[?BRANCH]] — Безусловный и условный переходы в шитом коде. | * [[BRANCH]] [[?BRANCH]] — Безусловный и условный переходы в шитом коде. | ||
* [[⟩MARK|>MARK]] [[⟩RESOLVE|>RESOLVE]] — Отметить, разрешить в шитом коде ссылку вперёд. | * [[⟩MARK|>MARK]] [[⟩RESOLVE|>RESOLVE]] — Отметить, разрешить в шитом коде ссылку вперёд. | ||
Строка 160: | Строка 162: | ||
=== Слова, лишённые заголовка (внутренние) === | === Слова, лишённые заголовка (внутренние) === | ||
* [[(;CODE)]] — Записать в поле кода последней статьи следующий адрес и выйти из определения. | * [[(;CODE)]] — Записать в [[поле кода]] [[LAST|последней статьи]] следующий адрес и [[EXIT|выйти из определения]]. | ||
* [[USER]] — | * [[USER]] — Обработчик переменной типа USER | ||
* [[(FOR)]] [[(NEXT)]] — Начало, конец цикла со счётчиком в шитом коде. | * [[(FOR)]] [[(NEXT)]] — Начало, конец цикла со счётчиком в [[Шитый код|шитом коде]]. | ||
== Ввод-вывод == | == Ввод-вывод == | ||
=== Ввод с клавиатуры === | === Ввод с клавиатуры === | ||
* [[KEY]] — Ожидает ввод | * [[KEY]] — Ожидает ввод литеры с клавиатуры, после ввода посылает [[Знакогенератор|её код]] в [[Стек данных|стек]]. | ||
* [[EKEY]] — Ожидает нажатия клавиши. После нажатия посылает [[Код клавиши|код нажатой клавиши]] в [[Стек данных|стек]]. | * [[EKEY]] — Ожидает нажатия клавиши. После нажатия посылает [[Код клавиши|код нажатой клавиши]] в [[Стек данных|стек]]. | ||
* [[INKEY]] — Опрашивает состояние клавиатуры. Посылает в [[Стек данных|стек]] [[Код клавиши|код нажатой клавиши]] или −1, если нет нажатой клавиши. | * [[INKEY]] — Опрашивает состояние [[Клавиатура|клавиатуры]]. Посылает в [[Стек данных|стек]] [[Код клавиши|код нажатой клавиши]] или −1, если нет нажатой клавиши. | ||
* [[ACCEPT]] — Ввод строки с клавиатуры. | * [[ACCEPT]] — Ввод строки с клавиатуры. | ||
* [[KBDFLG]] — Переменная, содержащая состояние алфавитно-цифровой клавиатуры. | * [[KBDFLG]] — Переменная, содержащая состояние алфавитно-цифровой клавиатуры. | ||
=== Вывод на | === Вывод на [[Графический экран|экран]] === | ||
* [[EMIT]] — Отображает на [[ | * [[EMIT]] — Отображает на [[Графический экран|экран]]е [[Знакогенератор|литеру]], код которой находится в [[Стек данных|стеке]]. | ||
* [[EMI]] | * [[EMI]] — Вывод нескольких литер на [[Графический экран|экран]]. | ||
* [[C.]] — Выводит [[Знакогенератор| | * [[C.]] — Выводит [[Знакогенератор|литеру]] как в дампе, непечатные символы заменяются на "." | ||
* [[Слово TYPE|TYPE]] — Передаёт u [[Знакогенератор| | * [[Слово TYPE|TYPE]] — Передаёт u [[Знакогенератор|литер]], начиная с адреса a на выходное устройство. | ||
* [[TYPE1]] — Вывести строку из памяти данных, заменяя управляющие коды и строго в одну строчку, до конца [[ | * [[TYPE1]] — Вывести строку из памяти данных, заменяя управляющие коды и строго в одну строчку, до конца [[Графический экран|экран]]а. | ||
* [[AT]] — Позиционирование текстового курсора: колонка ряд AT | * [[AT]] — Позиционирование текстового курсора: колонка ряд AT | ||
* [[Слово ↖|↖]] — Очищаем [[ | * [[Слово ↖|↖]] — Очищаем [[Графический экран|экран]], курсор в левый верхний угол | ||
* [[Слово ↵|↵]] — Вывести на терминал [[возврат каретки]] и [[перевод строки]]. | * [[Слово ↵|↵]] — Вывести на терминал [[возврат каретки]] и [[перевод строки]]. | ||
* [[SPACE]] — Вывод одного [[пробел]]а. | * [[SPACE]] — Вывод одного [[пробел]]а. | ||
* [[SPACES]] — Вывод заданного числа [[Символ с кодом 31|"цифровых" (шириной в цифру) пробелов | * [[SPACES]] — Вывод на [[Графический экран|экран]] заданного числа [[Символ с кодом 31|"цифровых" (шириной в цифру) пробелов]]. | ||
* [[I.]] — Вывод целого числа, за которым следует один пробел. | * [[I.]] — Вывод целого числа, за которым следует один пробел. | ||
* [[Слово .|.]] — Вывод числа, за которым следует один пробел. | * [[Слово .|.]] — Вывод числа, за которым следует один пробел. | ||
Строка 190: | Строка 192: | ||
* [[(.")]] — Слово, компилируемое [[."]] | * [[(.")]] — Слово, компилируемое [[."]] | ||
* [[FONT!]] — Установить [[Номер шрифта|шрифт]] для терминала [[Каллисто]]. | * [[FONT!]] — Установить [[Номер шрифта|шрифт]] для терминала [[Каллисто]]. | ||
* [[‗FONT|_FONT]] | * [[‗FONT|_FONT]] — Адрес структуры терминала из 5 байт, описывающей активный шрифт. | ||
=== Машинная графика === | === Машинная графика === | ||
Строка 198: | Строка 200: | ||
* [[ГРФ]] — Вывод графической информации (обновление экрана) | * [[ГРФ]] — Вывод графической информации (обновление экрана) | ||
* [[DARK]] [[LIGHT]] — Установить вывод тёмным цветом по светлому фону, светлым цветом по тёмному фону | * [[DARK]] [[LIGHT]] — Установить вывод тёмным цветом по светлому фону, светлым цветом по тёмному фону | ||
* [[ATR]] — | * [[ATR!]] — Установить [[атрибуты вывода]] на [[индикатор]] | ||
=== Звук и электронная музыка === | === Звук и электронная музыка === | ||
* [[BELL]] — гудок терминала. | * [[BELL]] — гудок терминала. | ||
* [[BEEP]] — издать звук заданной частоты и длительности. | * [[BEEP]] — издать звук заданной частоты и длительности. | ||
* [[(PLAY)]] | * [[(PLAY)]] — Сыграть мелодию. | ||
=== Работа с [[блок]]ами === | === Работа с [[блок]]ами === | ||
* [[SCR]] — Служит для хранения текущего значения номера редактируемого [[экран]]а. | * [[SCR]] — Служит для хранения текущего значения номера редактируемого [[экран]]а. | ||
* [[R♯|R#]] — Позиция курсора при редактировании [[экран]]а. | * [[R♯|R#]] — Позиция курсора при редактировании [[экран]]а. | ||
* [[C/L]] — Константа, количество [[Знакогенератор| | * [[C/L]] — Константа, количество [[Знакогенератор|литер]] в одной строке [[Экран|экрана Каллисто]] (64). | ||
* [[B/BUF]] — Константа, число байт в [[Буфер|блочном буфере]] (3072). | * [[B/BUF]] — Константа, число байт в [[Буфер|блочном буфере]] (3072). | ||
* [[APP]] — Слово, [[xt]] которого хранится в переменной [[APP]], будет выполнено после загрузки сохранения по [[LOAD"]] | * [[APP]] — Слово, [[xt]] которого хранится в переменной [[APP]], будет выполнено после загрузки сохранения по [[LOAD"]] | ||
Строка 219: | Строка 221: | ||
* [[BLOCK]] — Записывает в [[Стек данных|стек]] адрес первого байта в [[буфер]]е с [[блок]]ом, номером которого u. | * [[BLOCK]] — Записывает в [[Стек данных|стек]] адрес первого байта в [[буфер]]е с [[блок]]ом, номером которого u. | ||
* [[(LINE)]] — Выдаёт адрес a и длину u строки L с [[экран]]а S. | * [[(LINE)]] — Выдаёт адрес a и длину u строки L с [[экран]]а S. | ||
* [[MESSAGE]] | * [[MESSAGE]] — Сохранить [[⟩IN|>IN]] в [[R#]] и вывести сообщение номер c. | ||
* [[LOAD]] — Загружает [[экран]] с номером u (исполняет, компилирует) | * [[LOAD]] — Загружает [[экран]] с номером u (исполняет, компилирует) | ||
* [[\S]] — Закончить интерпретацию [[экран]]а. | * [[\S]] — Закончить интерпретацию [[экран]]а. | ||
=== Работа с | === Работа с электронным диском (низкий уровень) === | ||
* [[‗RW|_RW]] — Низкоуровневые чтение/запись файла | * [[‗RW|_RW]] — Низкоуровневые чтение/запись файла | ||
* [[КАТ]] — Поиск на электронном диске каталога [[Каллисто]] и переход в него. Если каталога нет, он создаётся. | * [[КАТ]] — Поиск на электронном диске каталога [[Каллисто]] и переход в него. Если каталога нет, он создаётся. | ||
* [[RGRW]] — Чтение/запись файла регистров (словаря) в загруженном каталоге. | * [[RGRW]] — Чтение/запись файла регистров (словаря) в загруженном каталоге. | ||
* [[LORW]] — Чтение/запись [[блок]]а из файла в загруженном каталоге. | * [[LORW]] — Чтение/запись [[блок]]а из файла текста в загруженном каталоге. | ||
* [[DISKOFF]] | * [[DISKOFF]] — Запрет дисковых операций. | ||
== Остальные слова == | == Остальные слова == | ||
Строка 251: | Строка 252: | ||
* [[DIGIT]] — ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE | * [[DIGIT]] — ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE | ||
* [[NUMBER]] — Преобразует в число последовательность символов, начиная с a+1 с учётом [[BASE]], | * [[NUMBER]] — Преобразует в число последовательность символов, начиная с a+1 с учётом [[BASE]], | ||
* [[ | * [[UCONVERT]] — Преобразовать последовательность цифр в целое, с учётом [[BASE]]. | ||
* [[Слово EE|EE]] — Значение порядка вводимого числа | * [[Слово EE|EE]] — Значение порядка вводимого числа | ||
* [[DPL]] — Переменная, позиция последней запятой в последнем введённом числе от конца. | * [[DPL]] — Переменная, позиция последней запятой в последнем введённом числе от конца. | ||
* [[FL]] | * [[FL]] — Преобразовать возвращённое NUMBER целое в [[десятичное число]]. | ||
=== Диалог с оператором и отладка === | === Диалог с оператором и отладка === | ||
* [[LOAD"]] — Считать из файлов [[Словарь|словарь Форта]] и [[десятичный словарь]], они должны быть от той же версии [[Каллисто]]. | * [[LOAD"]] — Считать из файлов [[Словарь|словарь Форта]] и [[десятичный словарь]], они должны быть от той же версии [[Каллисто]]. | ||
* [[SAVE"]] — Сохранить в файлы [[Словарь|словарь Форта]] и [[десятичный словарь]]. | * [[SAVE"]] — Сохранить в файлы [[Словарь|словарь Форта]] и [[десятичный словарь]]. | ||
* [[WORDS]] — Просмотр полного списка слов, хранящихся в данный момент в [[ | * [[THRU]] — [[LOAD|Загрузить]] несколько [[экран]]ов. | ||
* [[WORDS]] — Просмотр полного списка слов, хранящихся в данный момент в [[CONTEXT|контекстном наборе слов]] | |||
* [[BYE]] — Выход из [[Каллисто]] в [[Режим автоматической работы|режим автоматической работы]] калькулятора ЭКВМ. | * [[BYE]] — Выход из [[Каллисто]] в [[Режим автоматической работы|режим автоматической работы]] калькулятора ЭКВМ. | ||
* [[ | * [[UNUSED]] — Оценить количество свободных байт памяти. | ||
* [[DUMP]] — Отображает u байт памяти начиная с адреса a | * [[DUMP]] — Отображает u байт памяти начиная с адреса a | ||
* [[.S]] — Распечатка всего содержимого [[Стек данных|стека]], оставляющая [[Стек данных|стек]] без изменений. | * [[.S]] — Распечатка всего содержимого [[Стек данных|стека]], оставляющая [[Стек данных|стек]] без изменений. | ||
Строка 269: | Строка 271: | ||
* [[COPY]] — Копирует [[экран]] n на [[экран]] m | * [[COPY]] — Копирует [[экран]] n на [[экран]] m | ||
* [[Слово \|\]] — Закончить интерпретацию строки. | * [[Слово \|\]] — Закончить интерпретацию строки. | ||
* [[(]] — Комментарий | * [[(]] — Комментарий — пропустить следующий текст до закрывающей круглой скобки. | ||
* [[.(]] — Напечатать следующие литеры до закрывающей скобки исключительно. | * [[.(]] — Напечатать следующие литеры до закрывающей скобки исключительно. | ||
* [[?BREAK]] — Проверяем клавиатуру на паузу и аварийную остановку. | * [[?BREAK]] — Проверяем клавиатуру на паузу и аварийную остановку. | ||
Строка 275: | Строка 277: | ||
* [[COLD]] — Первая словарная статья, «холодная» перезагрузка с урезанием [[Словарь|словаря]] в начальное состояние. | * [[COLD]] — Первая словарная статья, «холодная» перезагрузка с урезанием [[Словарь|словаря]] в начальное состояние. | ||
* [[WARM]] — «Тёплая» перезагрузка, сохраняющая [[словарь]]. | * [[WARM]] — «Тёплая» перезагрузка, сохраняющая [[словарь]]. | ||
* [[ВЫКЛ]] — Сохранить состояние [[Каллисто]] в энергонезависимую память и подготовить ЭКВМ к выключению. | |||
=== Интерпретатор входного текста (внешний) === | === Интерпретатор входного текста (внешний) === | ||
Строка 280: | Строка 283: | ||
* [[TIB]] — Занесение в [[Стек данных|стек]] начального адреса [[Входной буфер терминала|входного буфера терминала (Terminal Input Buffer)]]. | * [[TIB]] — Занесение в [[Стек данных|стек]] начального адреса [[Входной буфер терминала|входного буфера терминала (Terminal Input Buffer)]]. | ||
* [[⟩IN|>IN]] — Переменная, смещение очередной литеры во [[Входной буфер терминала|входном текстовом буфере]] или [[экран]]е. | * [[⟩IN|>IN]] — Переменная, смещение очередной литеры во [[Входной буфер терминала|входном текстовом буфере]] или [[экран]]е. | ||
* [[ENCLOSE]] | * [[ENCLOSE]] — Окружить. Выделить лексему с адреса a1 и ограничительным символом c. | ||
* [[WORD]] — Считывает одно слово из [[Входной буфер терминала|входного]] или [[Буфер|экранного]] буфера и размещает его, начиная с адреса [[HERE]] | * [[WORD]] — Считывает одно слово из [[Входной буфер терминала|входного]] или [[Буфер|экранного]] буфера и размещает его, начиная с адреса [[HERE]] | ||
* [[QUERY]] — Осуществляет ввод строки символов с клавиатуры. | * [[QUERY]] — Осуществляет ввод строки символов с клавиатуры. | ||
Строка 286: | Строка 289: | ||
* [[QUIT]] — Очищает [[Стек возвратов Каллисто|стек возвратов]], устанавливает режим исполнения и возвращает управление терминалу. | * [[QUIT]] — Очищает [[Стек возвратов Каллисто|стек возвратов]], устанавливает режим исполнения и возвращает управление терминалу. | ||
* [[ABORT]] — Прерывает исполнение, делает список слов [[FORTH]] контекстным, исполняет [[QUIT]] | * [[ABORT]] — Прерывает исполнение, делает список слов [[FORTH]] контекстным, исполняет [[QUIT]] | ||
* [[SAVIN]] — Сохраняем [[ | * [[SAVIN]] — Сохраняем литеру в [[INTERPRET]] для [[NUMBER]] и [[BASE]] для [[FL]] | ||
* [[Пустое слово|\0]] (пустое слово) — закончить [[INTERPRET|интерпретацию]]. | * [[Пустое слово|\0]] (пустое слово) — закончить [[INTERPRET|интерпретацию]]. | ||
Строка 297: | Строка 300: | ||
=== Списки слов и поиск === | === Списки слов и поиск === | ||
* [[VOC-LINK]] | * [[VOC-LINK]] — Переменная связи [[VOCABULARY|наборов слов]]. | ||
* [[CONTEXT]] — Переменная указывает на список [[VOCABULARY]], в котором происходит поиск слов во время интерпретации входного потока. | * [[CONTEXT]] — Переменная указывает на список [[VOCABULARY]], в котором происходит поиск слов во время интерпретации входного потока. | ||
* [[CURRENT]] — Переменная указывает список [[VOCABULARY]], в который вводятся определения новых слов. | * [[CURRENT]] — Переменная указывает список [[VOCABULARY]], в который вводятся определения новых слов. | ||
Строка 303: | Строка 306: | ||
* [[FINDN]] — Поиск слова в активных списках слов | * [[FINDN]] — Поиск слова в активных списках слов | ||
* [[VOCABULARY]] — Слово-описатель, которое создаёт новый список слов. | * [[VOCABULARY]] — Слово-описатель, которое создаёт новый список слов. | ||
* [[Слово '|']] — Дать [[CFA|токен]] следующего слова. | |||
* [['N]] — Ищет слово с именем XXX (из [[Входной буфер терминала|входного]] или [[Буфер|экранного]] буфера) в [[Словарь|словаре Форта]]. | * [['N]] — Ищет слово с именем XXX (из [[Входной буфер терминала|входного]] или [[Буфер|экранного]] буфера) в [[Словарь|словаре Форта]]. | ||
* [[FORTH]] — Делает список [[FORTH]] контекстным. | * [[FORTH]] — Делает список [[FORTH]] контекстным. | ||
Строка 310: | Строка 314: | ||
=== Работа с полями словарной статьи === | === Работа с полями словарной статьи === | ||
* [[⟩BODY|>BODY]] — [[CFA]] | * [[⟩BODY|>BODY]] — [[CFA]] → [[PFA]] | ||
* [[BODY⟩|BODY>]] — [[PFA]] | * [[BODY⟩|BODY>]] — [[PFA]] → [[CFA]] | ||
* [[N⟩LINK|N>LINK]] — [[NFA]] | * [[N⟩LINK|N>LINK]] — [[NFA]] → [[LFA]] | ||
* [[NAME⟩|NAME>]] — [[NFA]] | * [[NAME⟩|NAME>]] — [[NFA]] → [[CFA]] | ||
* [[N⟩BODY|N>BODY]] — [[NFA]] | * [[N⟩BODY|N>BODY]] — [[NFA]] → [[PFA]] | ||
* [[EXECUTE]] — Исполняет слово, [[CFA|токен (CFA)]] которого хранится в [[Стек данных|стеке]]. | * [[EXECUTE]] — Исполняет слово, [[CFA|токен (CFA)]] которого хранится в [[Стек данных|стеке]]. | ||
* [[ID.]] — Печатает имя слова, записанное в соответствии с требованиями [[Словарь|словаря Форта]] | * [[ID.]] — Печатает имя слова, записанное в соответствии с требованиями [[Словарь|словаря Форта]] | ||
Строка 320: | Строка 324: | ||
=== Диагностика и обработка ошибок === | === Диагностика и обработка ошибок === | ||
* [[ERROR | * [[Слово ERROR|ERROR]] — Вывести сообщение об ошибке c и уйти в QUIT если ERB=0. | ||
* [[?ERROR]] — | * [[?ERROR]] — Сгенерировать ошибку номер c, если флаг ф истинен (ф<>0). | ||
* [[?COMP]] — проверить, что текущий режим — компиляция. | * [[?COMP]] — проверить, что текущий режим — компиляция. | ||
* [[?EXEC]] | * [[?EXEC]] — Проверка состояния исполнения. | ||
* [[?PAIRS]] | * [[?PAIRS]] — Проверка парности. | ||
* [[CSP]] — Переменная для хранения контрольного значения указателя [[Стек данных|стека]]. | * [[CSP]] — Переменная для хранения контрольного значения указателя [[Стек данных|стека]]. | ||
* [[!CSP]] — Запомнить адрес вершины [[Стек данных|стека]] в [[CSP]]. | * [[!CSP]] — Запомнить адрес вершины [[Стек данных|стека]] в [[CSP]]. | ||
* [[?CSP]] — Выдать ошибку "сбился указатель [[Стек данных|стека]]" если он не равен значению в [[CSP]] | * [[?CSP]] — Выдать ошибку "сбился указатель [[Стек данных|стека]]" если он не равен значению в [[CSP]] | ||
* [[?LOADING]] | * [[?LOADING]] — Проверка режима [[экран]]а. | ||
* [[?STACK]] — Выдать ошибку «Исчерпание [[Стек данных|стека]]», если он менее, чем пуст и «Исчерпание памяти» при зазоре, меньшем 5(?) элементов. | * [[?STACK]] — Выдать ошибку «Исчерпание [[Стек данных|стека]]», если он менее, чем пуст и «Исчерпание памяти» при зазоре, меньшем 5(?) элементов. | ||
* [[ERB]] — Флаг блокировки выхода в [[QUIT]] при ошибке [[ERROR | * [[ERB]] — Флаг блокировки выхода в [[QUIT]] при ошибке [[Слово ERROR|ERROR]] | ||
== Ссылки == | == Ссылки == | ||
* См. [[Список встроенных слов Каллисто]] | * См. [[Список встроенных слов Каллисто]] | ||
* [http://the-hacker.ru/ | * [http://the-hacker.ru/2017/Callisto-1.zip Каллисто Классик 1.0], последняя актуальная версия [[Каллисто]] и [http://the-hacker.ru/Callisto.html её исходный текст] | ||
* [[Палитра Каллисто]] — исходные тексты слов, не включённых в ядро Каллисто | * [[Палитра Каллисто]] — исходные тексты слов, не включённых в ядро Каллисто | ||
* [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C_Forth Стандартный словарь Forth] в Википедии | * [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C_Forth Стандартный словарь Forth] в Википедии | ||
Строка 340: | Строка 344: | ||
* [http://www.forth200x.org/documents/html/alpha.html Annex H: Alphabetic list of words к готовящемуся стандарту Forth 200x] ''(англ.)'' | * [http://www.forth200x.org/documents/html/alpha.html Annex H: Alphabetic list of words к готовящемуся стандарту Forth 200x] ''(англ.)'' | ||
* Языки [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%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://tinyurl.com/Words2-161 tinyurl.com/Words2-161] — короткий адрес этой страницы (через зарубежный сайт) | |||
Текущая версия от 12:06, 3 ноября 2020
Следующие слова реализованы в ядре Каллисто Классик v1.0rc2 и включены в стандартную поставку:
Математика[править]
Арифметика[править]
- + − × ÷ — Сложение, вычитание, умножение, деление двух верхних чисел в стеке.
- 1+ 1− — Прибавление, вычитание 1.
- 2+ 2− 2× — Прибавление, вычитание и умножение на 2.
- /−/ — Смена знака числа в стеке.
Целочисленное деление[править]
- / — Целочисленное деление y на x, помещение частного в стек.
- MOD — Получение остатка от деления y на x.
- /MOD — Деление с остатком y на x.
- 2/ — Целочисленное деление на 2 (двоичный сдвиг вправо).
- ×/ — Операция масштабирования: умножение z на y с последующим делением на x.
- ×/MOD — Остаток и частное от деления произведения z×y на x.
Сравнения[править]
Константы[править]
- FALSE TRUE — Значения «ложь» и «истина» (константы нуль и -1).
- 1 2 — Числа один и два.
- \(\pi\) — Число пи (3,14159265359).
- BL — Код литеры пробела, число 32.
Алгебраические функции[править]
- 10x Ex — Десятичный антилогарифм, экспонента.
- LG LN — Десятичный, натуральный логарифмы.
- X2 √ — Возведение в квадрат, квадратный корень.
- 1/X — Обратная величина.
- Yx — Степенная функция.
Тригонометрия[править]
- DEGREES RADIANS — Даёт указание Каллисто (и ЭКВМ) принимать углы в градусах, радианах
- SIN COS TG — Тригонометрические функции: синус, косинус, тангенс.
- ARCSIN ARCCOS ARCTG — Обратные тригонометрические функции: арксинус, арккосинус, арктангенс.
Побитовые логические операции[править]
- AND OR XOR — 32-битные поразрядные логические И, ИЛИ, исключающее ИЛИ
- NOT — 32-битное поразрядное логическое отрицание (НЕ).
Остальная математика[править]
- >< — Поменять местами байты в двухбайтном значении.
- S>D — Преобразовывает 32−битное число n в пару 16−битных чисел u2 u1.
- |X| — Абсолютное значение (модуль числа).
- MIN MAX — Нахождение минимума, максимума из двух чисел.
- СЧ — Случайное число от 0 до 1.
- ЗН — Знак числа.
- [X] {X} — Целая, дробная часть числа.
Работа с памятью разного типа[править]
Управление стеком[править]
- ↑ — Дублирует верхний элемент стека.
- ↔ — Меняет местами два верхних элемента стека.
- DROP — Удаляет верхний элемент стека.
- OVER — Копирует 2-й элемент стека и заносит его наверх.
- ROT — Переносит 3-й элемент стека наверх.
- PICK — Копирует элемент стека с номером u и записывает его наверх стека.
- ?DUP — Осуществляет операцию ↑ если x≠0
- 2DUP — Дублирует верхнюю пару чисел в стеке.
- 2DROP — Удаляет из стека число двойной длины.
- 2SWAP — Меняет местами верхние две пары чисел в стеке.
- SP@ — Записывает в стек адрес вершины стека, до исполнения команды SP@
- !SP — Устанавливает указатель стека в исходное состояние из переменной S0.
- S0 — Переменная, содержит адрес дна стека данных.
Управление стеком возвратов[править]
- >R — Переносит 16-битное число из стека данных в стек возвратов.
- R> — Переносит 16-битное число со знаком из стека возвратов в стек данных.
- R@ — Копирует верхнее 16-битное число со знаком из стека возвратов в стек данных.
- RDROP — Убирает верхнее 16-битное число со стека возвратов.
- RP@ — Адрес текущей вершины стека возвратов.
- !RP — Присваивает указателю стека возвратов исходное (базовое) значение из переменной R0.
- R0 — Переменная, адрес дна стека возвратов.
Обращение к памяти[править]
- @ — Заместить адрес в стеке его содержимым, ячейка содержит число со знаком.
- U@ — Считать 2-х байтовое целое без знака.
- C@ — Извлечь байт.
- ! — Записать число в ячейку.
- 0! — Обнулить ячейку.
- C! — Записать байт.
- +! — Добавить число к содержимому ячейки.
- TOGGLE — Изменить байт памяти по маске XOR.
- ++! −−! ++@ −−@ — Косвенная адресация с предварительным уменьшением или увеличением указателя.
Работа с областями памяти[править]
- CMOVE — Копировать область памяти побайтно.
- CMOVE> — Копировать область памяти, начиная с больших адресов.
- FILL — Записать байт в область памяти.
- ERASE — Обнулить область памяти.
- BLANK — Записать в память пробелы (32).
Работа со строками символов[править]
- COUNT — Дать адрес первой литеры и число литер N строки со счётчиком T.
- −TRAILING — Отсечь конечные пробелы.
- UPPER — Перевести строку символов в верхний регистр.
Работа со словарём[править]
- H — Переменная, указатель словаря
- HERE — Выдаёт адрес первой свободной ячейки в словаре.
- ALLOT — Добавляет n байт к полю параметров слова, описанного последним.
- , — Компилирует число n в первую свободную ячейку словаря.
- C, — Компилирует байт c в очередной свободный байт словаря.
- COMPILE — Компиляция 16-битного слова, следующего за оператором.
Работа с десятичным словарём[править]
- ДH — Переменная, указатель десятичного словаря.
- ДHERE — Выдаёт адрес первого свободного десятичного регистра в десятичном словаре.
- ДALLOT — Резервирует n десятичных регистров в десятичном словаре.
- Д, — Компилирует число x в первую свободную ячейку десятичного словаря.
Создание новых слов[править]
Определение новых слов[править]
- CONSTANT — Определить следующее слово, как 16-битную целую константу со значением, взятым из стека.
- VARIABLE — Определить следующее слово, как 16-битную целую переменную с начальным значением нуль.
- FVARIABLE — Определить следующее слово, как десятичную переменную с начальным значением нуль.
- VALUE — Определить следующее слово, как десятичную величину с начальным значением, взятым из стека.
- TO — Запись десятичного числа в десятичную величину или токена в переменную действия.
- DEFER — Определить следующее слово, как переменную действия с начальным значением НОП.
- : ; — Определение слова через двоеточие.
- EXIT — Закончить исполнение текущего определения.
- IMMEDIATE — Преобразует слово, за описанием которого следует, в оператор, исполняемый при компиляции.
- CREATE — Формирует слово с именем XXX (заголовок и CFA), оставляя его поле параметров пустым.
Управление процессом компиляции[править]
- STATE — Переменная с состоянием текстового интерпретатора: «Истина» — компиляция.
- [ ] — Переключить текстовый интерпретатор в режим интерпретации, компиляции.
- [COMPILE] — Скомпилировать следующее слово, независимо от его признака немедленного исполнения.
- ['] — Скомпилировать CFA следующего слова как числовой литерал.
- LITERAL FLITERAL — Обработка литералов, целочисленных и десятичных.
- (LITERAL) (ИП) — Код периода выполнения для литералов, целочисленных и десятичных.
Условный оператор[править]
Циклы[править]
- BEGIN — Начало циклов "BEGIN".
- UNTIL — Конец цикла "BEGIN UNTIL".
- WHILE — Ветвление "WHILE" в цикле "BEGIN WHILE REPEAT".
- REPEAT — Конец цикла "BEGIN WHILE REPEAT".
- AGAIN — Конец бесконечного цикла "BEGIN AGAIN".
Цикл со счётчиком[править]
- FOR NEXT — Цикл со счётчиком. Цикл исполнится ровно n раз.
- I J K — Помещает в стек данных значение счётчика цикла FOR…NEXT, двух внешних циклов.
- LEAVE — Досрочно прерывает цикл FOR .. NEXT
- UNLOOP — Обеспечивает досрочный выход из цикла FOR … NEXT.
Разработка структур управления[править]
- BRANCH ?BRANCH — Безусловный и условный переходы в шитом коде.
- >MARK >RESOLVE — Отметить, разрешить в шитом коде ссылку вперёд.
- <MARK <RESOLVE — Отметить, разрешить в шитом коде ссылку назад.
Разработка порождающих слов[править]
Слова, лишённые заголовка (внутренние)[править]
- (;CODE) — Записать в поле кода последней статьи следующий адрес и выйти из определения.
- USER — Обработчик переменной типа USER
- (FOR) (NEXT) — Начало, конец цикла со счётчиком в шитом коде.
Ввод-вывод[править]
Ввод с клавиатуры[править]
- KEY — Ожидает ввод литеры с клавиатуры, после ввода посылает её код в стек.
- EKEY — Ожидает нажатия клавиши. После нажатия посылает код нажатой клавиши в стек.
- INKEY — Опрашивает состояние клавиатуры. Посылает в стек код нажатой клавиши или −1, если нет нажатой клавиши.
- ACCEPT — Ввод строки с клавиатуры.
- KBDFLG — Переменная, содержащая состояние алфавитно-цифровой клавиатуры.
Вывод на экран[править]
- EMIT — Отображает на экране литеру, код которой находится в стеке.
- EMI — Вывод нескольких литер на экран.
- C. — Выводит литеру как в дампе, непечатные символы заменяются на "."
- TYPE — Передаёт u литер, начиная с адреса a на выходное устройство.
- TYPE1 — Вывести строку из памяти данных, заменяя управляющие коды и строго в одну строчку, до конца экрана.
- AT — Позиционирование текстового курсора: колонка ряд AT
- ↖ — Очищаем экран, курсор в левый верхний угол
- ↵ — Вывести на терминал возврат каретки и перевод строки.
- SPACE — Вывод одного пробела.
- SPACES — Вывод на экран заданного числа "цифровых" (шириной в цифру) пробелов.
- I. — Вывод целого числа, за которым следует один пробел.
- . — Вывод числа, за которым следует один пробел.
- I.R — Напечатать целое число n на терминале в поле длиной p справа.
- ." — При исполнении напечатать на терминале следующие литеры до кавычки исключительно.
- (.") — Слово, компилируемое ."
- FONT! — Установить шрифт для терминала Каллисто.
- _FONT — Адрес структуры терминала из 5 байт, описывающей активный шрифт.
Машинная графика[править]
- DOT! — Отображение точки на индикаторе
- BAR — Рисует прямые линии, X и Y - координаты конца линии
- +BOX +FRAME — Рисование прямоугольника, рамки
- ГРФ — Вывод графической информации (обновление экрана)
- DARK LIGHT — Установить вывод тёмным цветом по светлому фону, светлым цветом по тёмному фону
- ATR! — Установить атрибуты вывода на индикатор
Звук и электронная музыка[править]
- BELL — гудок терминала.
- BEEP — издать звук заданной частоты и длительности.
- (PLAY) — Сыграть мелодию.
Работа с блоками[править]
- SCR — Служит для хранения текущего значения номера редактируемого экрана.
- R# — Позиция курсора при редактировании экрана.
- C/L — Константа, количество литер в одной строке экрана Каллисто (64).
- B/BUF — Константа, число байт в блочном буфере (3072).
- APP — Слово, xt которого хранится в переменной APP, будет выполнено после загрузки сохранения по LOAD"
- UPDATE — Устанавливает «флаг спасения» буфера.
- BUFBLK — Переменная, номер загруженного блока.
- EMPTY-BUFFERS — Буфер отмечается как пустой, независимо от содержания. Обновлённый блок на диск не записывается.
- SAVE-BUFFERS — Если находящийся в буфере экран был изменён, скидывает его на диск.
- FLUSH — Если экран изменён, скидывает его на диск и выкидывает его из памяти.
- BUFFER — Резервирует блок в памяти и приписывает ему номер u (как и BLOCK ), но сам блок с диска не считывается.
- BLOCK — Записывает в стек адрес первого байта в буфере с блоком, номером которого u.
- (LINE) — Выдаёт адрес a и длину u строки L с экрана S.
- MESSAGE — Сохранить >IN в R# и вывести сообщение номер c.
- LOAD — Загружает экран с номером u (исполняет, компилирует)
- \S — Закончить интерпретацию экрана.
Работа с электронным диском (низкий уровень)[править]
- _RW — Низкоуровневые чтение/запись файла
- КАТ — Поиск на электронном диске каталога Каллисто и переход в него. Если каталога нет, он создаётся.
- RGRW — Чтение/запись файла регистров (словаря) в загруженном каталоге.
- LORW — Чтение/запись блока из файла текста в загруженном каталоге.
- DISKOFF — Запрет дисковых операций.
Остальные слова[править]
Форматные преобразования чисел[править]
- BASE — Переменная, текущее основание системы счисления при вводе-выводе чисел.
- HEX — Устанавливает шестнадцатеричную систему счисления для ввода-вывода.
- DECIMAL — Устанавливает десятичную систему счисления для ввода-вывода.
- PAD — Выдаёт адрес буфера для промежуточного хранения последовательностей символов
- HLD — Переменная — позиция последней литеры, перенесённой в буфер PAD по HOLD.
- <# — Начинает процесс преобразования целого числа в последовательность кодов символов.
- HOLD — Вводит в текущую ячейку выходного буфера PAD символ, код которого в стеке
- SIGN — Вводит знак "минус" в выходной буфер PAD, если n<0
- U# — Преобразует одну цифру целого числа и записывает её в выходной буфер PAD
- U#S — Преобразует целое число до тех пор, пока не будет получен 0
- U#> — Завершает преобразование целого числа
- (.) — Как I. -- только не выводит число на индикатор, а возвращает адрес и длину строки.
- <F# — Начинает преобразования чисел с плавающей запятой.
- F#S — Преобразовывает число с плавающей запятой в строку символов.
- F#> — Размещает преобразованную строку сразу после словаря, возвращает адрес и число символов.
- DIGIT — ASCII-DIGIT BASE => DIGIT-VALUE TRUE / FALSE
- NUMBER — Преобразует в число последовательность символов, начиная с a+1 с учётом BASE,
- UCONVERT — Преобразовать последовательность цифр в целое, с учётом BASE.
- EE — Значение порядка вводимого числа
- DPL — Переменная, позиция последней запятой в последнем введённом числе от конца.
- FL — Преобразовать возвращённое NUMBER целое в десятичное число.
Диалог с оператором и отладка[править]
- LOAD" — Считать из файлов словарь Форта и десятичный словарь, они должны быть от той же версии Каллисто.
- SAVE" — Сохранить в файлы словарь Форта и десятичный словарь.
- THRU — Загрузить несколько экранов.
- WORDS — Просмотр полного списка слов, хранящихся в данный момент в контекстном наборе слов
- BYE — Выход из Каллисто в режим автоматической работы калькулятора ЭКВМ.
- UNUSED — Оценить количество свободных байт памяти.
- DUMP — Отображает u байт памяти начиная с адреса a
- .S — Распечатка всего содержимого стека, оставляющая стек без изменений.
- DEPTH — Выдаёт в стек полное количество чисел, хранившихся в стеке до исполнения этой команды.
- LIST — Распечатывает экран с номером u и записывает его номер в переменную SCR
- INDEX — Выводит на индикатор верхние строчки экранов, номера блоков которых входят в диапазон от нач до кон.
- COPY — Копирует экран n на экран m
- \ — Закончить интерпретацию строки.
- ( — Комментарий — пропустить следующий текст до закрывающей круглой скобки.
- .( — Напечатать следующие литеры до закрывающей скобки исключительно.
- ?BREAK — Проверяем клавиатуру на паузу и аварийную остановку.
- VERSION — Кладёт в стек номер версии Каллисто.
- COLD — Первая словарная статья, «холодная» перезагрузка с урезанием словаря в начальное состояние.
- WARM — «Тёплая» перезагрузка, сохраняющая словарь.
- ВЫКЛ — Сохранить состояние Каллисто в энергонезависимую память и подготовить ЭКВМ к выключению.
Интерпретатор входного текста (внешний)[править]
- BLK — Переменная, номер входного блока-экрана.
- TIB — Занесение в стек начального адреса входного буфера терминала (Terminal Input Buffer).
- >IN — Переменная, смещение очередной литеры во входном текстовом буфере или экране.
- ENCLOSE — Окружить. Выделить лексему с адреса a1 и ограничительным символом c.
- WORD — Считывает одно слово из входного или экранного буфера и размещает его, начиная с адреса HERE
- QUERY — Осуществляет ввод строки символов с клавиатуры.
- INTERPRET — Интерпретирует последовательность слов, пока там что-то есть.
- QUIT — Очищает стек возвратов, устанавливает режим исполнения и возвращает управление терминалу.
- ABORT — Прерывает исполнение, делает список слов FORTH контекстным, исполняет QUIT
- SAVIN — Сохраняем литеру в INTERPRET для NUMBER и BASE для FL
- \0 (пустое слово) — закончить интерпретацию.
Системные слова «Электроники МК»[править]
- П — Запись в регистр ЭКВМ при стеке ЭКВМ, заполненном четырьмя верхними числами из стека данных.
- ИП — Чтение из регистра ЭКВМ с сохранением стека ЭКВМ в переменных RX RY RZ RT
- RX RY RZ RT — Переменные, содержат регистры RX RY RZ RT ЭКВМ после чтения из регистра словом ИП.
- ИПРГ — считать содержимое шага из памяти программ
- SAVE-TEXT — Сохранить область текста в энергонезависимую память.
Списки слов и поиск[править]
- VOC-LINK — Переменная связи наборов слов.
- CONTEXT — Переменная указывает на список VOCABULARY, в котором происходит поиск слов во время интерпретации входного потока.
- CURRENT — Переменная указывает список VOCABULARY, в который вводятся определения новых слов.
- LAST — Дать NFA последней созданной статьи.
- FINDN — Поиск слова в активных списках слов
- VOCABULARY — Слово-описатель, которое создаёт новый список слов.
- ' — Дать токен следующего слова.
- 'N — Ищет слово с именем XXX (из входного или экранного буфера) в словаре Форта.
- FORTH — Делает список FORTH контекстным.
- TASK — Последнее стандартное слово в словаре.
- DEFINITIONS — Контекстный список становится текущим, все последующие описания связаны с этим списком.
- (FIND) — Искать слово a1 в списке a2. При успехе дать NFA его статьи и c - байт длины с флагами.
Работа с полями словарной статьи[править]
- >BODY — CFA → PFA
- BODY> — PFA → CFA
- N>LINK — NFA → LFA
- NAME> — NFA → CFA
- N>BODY — NFA → PFA
- EXECUTE — Исполняет слово, токен (CFA) которого хранится в стеке.
- ID. — Печатает имя слова, записанное в соответствии с требованиями словаря Форта
- SMUDGE — Изменить флаг видимости последней созданной статьи.
Диагностика и обработка ошибок[править]
- ERROR — Вывести сообщение об ошибке c и уйти в QUIT если ERB=0.
- ?ERROR — Сгенерировать ошибку номер c, если флаг ф истинен (ф<>0).
- ?COMP — проверить, что текущий режим — компиляция.
- ?EXEC — Проверка состояния исполнения.
- ?PAIRS — Проверка парности.
- CSP — Переменная для хранения контрольного значения указателя стека.
- !CSP — Запомнить адрес вершины стека в CSP.
- ?CSP — Выдать ошибку "сбился указатель стека" если он не равен значению в CSP
- ?LOADING — Проверка режима экрана.
- ?STACK — Выдать ошибку «Исчерпание стека», если он менее, чем пуст и «Исчерпание памяти» при зазоре, меньшем 5(?) элементов.
- ERB — Флаг блокировки выхода в QUIT при ошибке ERROR
Ссылки[править]
- См. Список встроенных слов Каллисто
- Каллисто Классик 1.0, последняя актуальная версия Каллисто и её исходный текст
- Палитра Каллисто — исходные тексты слов, не включённых в ядро Каллисто
- Стандартный словарь Forth в Википедии
- Приложение F. Alphabetic list of words (informative annex) к действующему стандарту ANS FORTH (англ.)
- Annex H: Alphabetic list of words к готовящемуся стандарту Forth 200x (англ.)
- Языки Форт и colorFORTH в Википедии
- tinyurl.com/Words2-161 — короткий адрес этой страницы (через зарубежный сайт)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |