Слова Каллисто по категориям
Следующие слова реализованы в ядре Каллисто v0.9б и включены в стандартную поставку:
Математика
Арифметика
- + − × ÷ — Сложение, вычитание, умножение, деление двух верхних чисел в стеке.
- 1+ 1− — Прибавление, вычитание 1.
- 2+ 2− 2× — Прибавление, вычитание и умножение на 2.
- /−/ — Смена знака числа в стеке.
Целочисленное деление
- / — Целочисленное деление a на b, помещение частного в стек.
- MOD — Получение остатка от деления a на b.
- /MOD — Деление с остатком a на b.
- 2/ — Целочисленное деление на 2 (двоичный сдвиг вправо).
- ×/ — Операция масштабирования -- умножение n1 на n2 с последующим делением на n3.
- ×/MOD — Остаток и частное от деления произведения n1×n2 на n3.
Сравнение
Константы
- 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
- |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@ — Извлекает байт информации из ячейки, адрес которой находится в стеке.
- ! — Записывает число x в ячейку с адресом a.
- 0! — Обнулить ячейку по адресу a.
- C! — Записывает байт c по адресу a.
- +! — Добавляет к содержимому ячейки с адресом a число n
- TOGGLE
Работа с областями памяти
- CMOVE — Копирует побайтно область памяти размером u байт начиная с a1 и записывает её начиная с a2.
- CMOVE>
- FILL — Записывает u байт c в память начиная с адреса a
- ERASE — Записывает u нулевых байтов в память начиная с адреса a.
- BLANK — Записывает n кодов пробела (32) в память, начиная с адреса a.
Работа со строками символов
- COUNT — Дать адрес первой литеры и число литер N строки со счётчиком T.
- −TRAILING — Отсечь конечные пробелы.
- UPPER — Перевести строку символов в верхний регистр.
Работа со словарём
- H — Переменная, указатель словаря
- HERE — Выдаёт адрес первой свободной ячейки в словаре.
- ALLOT — Добавляет n байт к полю параметров слова, описанного последним.
- , — Компилирует число n в первую свободную ячейку словаря.
- C, — Компилирует байт c в очередной свободный байт словаря.
- COMPILE — Компиляция 16-битного слова, следующего за оператором.
Работа с десятичным словарём
- ДH — Переменная, указатель десятичного словаря.
- ДHERE — Выдаёт адрес первого свободного десятичного регистра в десятичном словаре.
- ДALLOT — Резервирует n десятичных регистров в десятичном словаре.
- Д, — Компилирует число x в первую свободную ячейку десятичного словаря.
Создание новых слов
Определение новых слов
- CONSTANT — Определить следующее слово, как 16-битную целую константу со значением, взятым из стека.
- VARIABLE — Определить следующее слово, как 16-битную целую переменную с начальным значением нуль.
- 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
Машинная графика
- 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
- 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,
- CONVERT
- EE — Значение порядка вводимого числа
- DPL — Переменная, позиция последней запятой в последнем введённом числе от конца.
- FL
Диалог с оператором и отладка
- LOAD" — Считать из файлов словарь Форта и десятичный словарь, они должны быть от той же версии Каллисто.
- SAVE" — Сохранить в файлы словарь Форта и десятичный словарь.
- WORDS — Просмотр полного списка слов, хранящихся в данный момент в контекстном наборе слов
- BYE — Выход из Каллисто в режим автоматической работы калькулятора ЭКВМ.
- BFREE — Оценить количество свободных байт памяти.
- DUMP — Отображает u байт памяти начиная с адреса a
- .S — Распечатка всего содержимого стека, оставляющая стек без изменений.
- DEPTH — Выдаёт в стек полное количество чисел, хранившихся в стеке до исполнения этой команды.
- LIST — Распечатывает экран с номером u и записывает его номер в переменную SCR
- INDEX — Выводит на индикатор верхние строчки экранов, номера блоков которых входят в диапазон от нач до кон.
- COPY — Копирует экран n на экран m
- \ — Закончить интерпретацию строки.
- ( — Комментарий -- пропустить следующий текст до закрывающей круглой скобки.
- .( — Напечатать следующие литеры до закрывающей скобки исключительно.
- ?BREAK — Проверяем клавиатуру на паузу и аварийную остановку.
- VERSION — Кладёт в стек номер версии Каллисто.
- COLD — Первая словарная статья, «холодная» перезагрузка с урезанием словаря в начальное состояние.
- WARM — «Тёплая» перезагрузка, сохраняющая словарь.
- ВЫКЛ — Сохранить состояние Каллисто в энергонезависимую память и подготовить ЭКВМ к выключению.
Интерпретатор входного текста (внешний)
- BLK — Переменная, номер входного блока-экрана.
- TIB — Занесение в стек начального адреса входного буфера терминала (Terminal Input Buffer).
- >IN — Переменная, смещение очередной литеры во входном текстовом буфере или экране.
- ENCLOSE
- WORD — Считывает одно слово из входного или экранного буфера и размещает его, начиная с адреса HERE
- QUERY — Осуществляет ввод строки символов с клавиатуры.
- INTERPRET — Интерпретирует последовательность слов, пока там что-то есть.
- QUIT — Очищает стек возвратов, устанавливает режим исполнения и возвращает управление терминалу.
- ABORT — Прерывает исполнение, делает список слов FORTH контекстным, исполняет QUIT
- SAVIN — Сохраняем >IN в INTERPRET для NUMBER
- \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 — Диагностика ошибок Форт ИТЭФ
- ?ERROR — диагностика ошибок Форт ИТЭФ
- ?COMP — проверить, что текущий режим — компиляция.
- ?EXEC
- ?PAIRS
- CSP — Переменная для хранения контрольного значения указателя стека.
- !CSP — Запомнить адрес вершины стека в CSP.
- ?CSP — Выдать ошибку "сбился указатель стека" если он не равен значению в CSP
- ?LOADING
- ?STACK — Выдать ошибку «Исчерпание стека», если он менее, чем пуст и «Исчерпание памяти» при зазоре, меньшем 5(?) элементов.
- ERB — Флаг блокировки выхода в QUIT при ошибке ERROR
Ссылки
- См. Список встроенных слов Каллисто
- Каллисто v0.9б, последняя актуальная версия Каллисто
- Палитра Каллисто — исходные тексты слов, не включённых в ядро Каллисто
- Стандартный словарь Forth в Википедии
- Приложение F. Alphabetic list of words (informative annex) к действующему стандарту ANS FORTH (англ.)
- Annex H: Alphabetic list of words к готовящемуся стандарту Forth 200x (англ.)
- Языки Форт и colorFORTH в Википедии
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |