[an error occurred while processing this directive]
LITERAL (u ═→) При STATE=1 компилирует адрес поля кода слова lit и переносит в словарную статью число u с вершины стека. При STATE=0 ничего не выполняет
LN (flo) (d1 ═→ d2) Вычисляет натуральный логарифм float-числа d1 и кладет результат d2 на стек во float-формате
LN2 (cnst,flo) (═→ d) Кладет на стек натуральный логарифм 2 (0.6931472) во float-формате
LOAD (u ═→) Интерпретирует лист u. Если лист отсутствует в памяти ПЭВМ, то предварительно загружает его с диска
LOCHAR (A n ═→) Переводит из заглавных в строчные символы текста по адресу A и длиной n
LOOP (═→) В цикле DO .. LOOP увеличивает значение счет- чика циклов на 1 и, если он не достиг заданного предельного значения, возвращает исполнение к началу цикла, иначе завершает цикл
M* (n1 n2 ═→ d) Вычисляет d=n1*n2
M*/ (d n n1 ═→ d1) Вычисляет d1=d*n/n1, причем промежуточное выражение d*n - число тройной длины
M/ (d n1 ═→ n2 n3) Вычисляет n3=d/n1, а n2 - это остаток от деления d/n1
MAX (n1 n2 ═→ n3) Кладет на стек максимальное из чисел n1 и n2
MAXFILES (cnst) (═→ n) Максимальное число файлов для хранения листов. По умолчанию n=20
MESSAGE (vec) (u ═→) По умолчанию инициализировано словом MSG#, которое выводит на экран сообщение об ошибке, соответствующей ее номеру u; если 0 < u < 26, то выводится текстовое сообщение, если больше 25 - сообщение вида MSG # u
MID¤ (flo) (A1 n1 n2 ═→ A) Вырезает n2 символов из счетной строки A1, начиная с символа n1 (счет символов - с 1), помещает вырезку в PAD. Пример:
MyGreating 3 4 ¤Mid PAD ¤. → Peop ↑ ↑ | ╚ число вырезаемых символов ╚ номер первого символа вырезки (с 1)
MIN (n1 n2 ═→ n3) Кладет на стек минимальное из чисел n1 и n2
MINBUF (cnst) Минимальное число блочных буферов в системе (2)
MOD (n1 n2 ═→ n3) Вычисляет остаток n3 от деления n1 на n2
MODE (asm) (u ═→) Устанавливает режим экрана по его коду u
Коды режимов: 1 - текст 32х32, 8 цветов, 0 - текст 64х32, 2 цвета, нормальный
MODEADDR (asm) (═→ A) Кладет на стек адрес A начала экран- ной памяти
MOV13 (jsr,flo) (═→) Пересылает распакованное float-число из буфера buf1 в буфер buf3
MOV31 (jsr,flo) (═→) Пересылает распакованное float-число из буфера buf3 в буфер buf1
MOV32 (jsr,flo) (═→) Пересылает распакованное float-число из буфера buf3 в буфер buf2
MOV34 (jsr,flo) (═→) Пересылает распакованное float-число из буфера buf3 в буфер buf4
MOV35 (jsr,flo) (═→) Пересылает распакованное float-число из буфера buf3 в буфер buf5
MOV42 (jsr,flo) (═→) Пересылает распакованное float-число из буфера buf4 в буфер buf2
MOV53 (jsr,flo) (═→) Пересылает распакованное float-число из буфера buf5 в буфер buf3
MOVE (asm,flo) (A A1 ═→) Пересылает распакованное float-число из буфера A в буфер A1
MOVE31 (asm,flo) (═→) Пересылает распакованное float-число из буфера buf3 в буфер buf1
MOVE34 (asm,flo) (═→) Пересылает распакованное float-число из буфера buf3 в буфер buf4
MOVE42 (asm,flo) (═→) Пересылает распакованное float-число из буфера buf4 в буфер buf2
MSG# (u ═→) Выводит на экран сообщение MSG # u
MUL (jsr,flo) (═→) Перемножает распакованные float-числа в буферах buf1 и buf2 и кладет произведение в буфер buf3
.гр
.кс0
NCASE (═→) Оператор выбора альтернативы
Пример: 1 2 2 ncase my1 two one default ↑ ↑ ↑ ↑ ↑ ↑ ↑ первый код═══╝ | | | | | ╚-слово для ИНАЧЕ второй код═════╝ | | | ╚-слово для кода 1 число кодов═════╝ | ╚-слово для кода 2 ╚-имя переключателя
.кс-5
При нажатии на клавишу переключателю My1 присваива- ется ее код. При выполнении слова My1: если в стеке число=1, то будет исполнено слово one. Если в стеке число=2, то будет исполнено слово two. Иначе будет исполнено слово default. Пример применения ncase приведен в листе 38
NEGATE (n ═→ -n) Меняет знак числа на стеке на противопо- ложный
NFA (asm) (A ═→ A1) Преобразует адрес A поля параметров в адрес A1 поля имени словарной статьи
NOOP Пустой оператор. Используется для резервирования в словарной статье места для исполнительного адреса последующего определения
NOT (f ═→ f1) Меняет на стеке логическое значение флага f на противоположное f1
NOVEC Выдает сообщение об ошибке: 'Исполнительный вектор не определен'. Используется во вновь определенных векторных словах для предотвращения разрушения системы при их случайном исполнении
NUM (vec) (A ═→) По умолчанию инициализировано словом (NUM), которое преобразует строку в буфере по адресу A в число словом NUMBER. Далее это число обрабатывается словом LITERAL или DLITERAL в зависимости от того, одинарное оно или двойное
NUMBER (A ═→ d) Преобразует счетную строку A в двойное число d и кладет его на стек
OFFSET (var) Смещение номера блочного буфера. При инициализации OFFSET=0. Используют для удобства нумерации блоков при разработке больших программ
OR (u1 u2 ═→ u3) Вычисляет результат u3 поразрядного ло- гического сложения чисел u1 и u2 и кладет его на стек
OS (═→) Применяется только в диалоге: ожидает ввода командной строки дисковой операционной системы Best 5.3. После нажатия клавиши ВВОД строка исполняется и система возвращается в режим диалога Форта
OUT (var) Номер позиции очередного символа в потоке выхода, инкрементируется словом EMIT. Может изменяться пользователем для управления форматом вывода
OVER (u1 u2 ═→ u1 u2 u1) Кладет на вершину стека копию второго числа в стеке
PAD (cnst) (═→ A) Адрес временного буфера для строки. Длина буфера 80 байт.
PAGE (asm) (═→A) Адрес начала пользовательского ОЗУ (¤1000)
PACK (asm,flo) (A ═→ d) Упаковывает распакованное число в буфере A и кладет его во float-формате на стек
PAUSE (u ═→) Останавливает работу программы на u/2000 сек
PFA (A ═→ A1) Преобразует адрес A поля имени в адрес A1 поля параметров словарной статьи и кладет его на стек
PI (cnst,flo) (═→ d) Кладет на стек число Пи=3.141593 во float-формате
PICK (n ═→ u) Кладет на вершину стека копию числа u, сто- явшего в стеке n-ым (счет - с 1, причем число n в счет не входит)
PREV (var) Адрес начала блочного буфера, загруженного последним
PRN (═→) Переключает вывод с экрана на принтер. То же, что нажатие клавиши УПР/И
QUAN <ИМЯ> (flo) (n ═→) Создает новую quan-переменную <ИМЯ> и присваивает ей значение n
QUERY (═→) Ожидает ввода несчетной строки (до 80 символов) с клавиатуры в текстовый буфер ввода TIB. Конец ввода - клавиша ВВОД, после чего >IN устанавливается на 0. Применяется только в компиляциях, как правило, совместно со словом WORD или INTERPRET
QUIT (n ═→ n) Останавливает счет, выходит из программы в Форт, очищает стек возвратов, ожидает ввода
R# (var) Текущее положение редактирующего курсора при работе встроенного редактора
R/W (vec) (A n f ═→) Стандартная процедура чтения/записи одного текстового блока с диска. По умолчанию инициализирована словом (R/W). Флаг f=0 - при записи и f=TRUE - при чтении. Здесь A - адрес первого байта блочного буфера, n - номер листа
R0 (var) Адрес дна стека возвратов (совпадает с аппарат- ным стеком)
R: Рекурсивная версия определяющего слова :. Она используется в паре со словом R; в виде
R: <ИМЯ> ..... R; и позволяет применять внутри определения через двоеточие рекурсивное обращение к имени определяемого слова <ИМЯ>
R; Рекурсивная форма слова ; (см. выше)
R> (═→ u) Исключает число из вершины стека возвратов и кладет его на стек данных
R@ (═→ u) Кладет на стек данных копию числа u на вершине стека возвратов
REPEAT (═→) В цикле BEGIN .. WHILE .. REPEAT возвращает исполнение к началу цикла
RIGHT¤ (flo) (A1 n ═→ A) Копирует в PAD n концевых символов счетной строки A1
ROLL (uN uN-1 .. u1 N ═→ uN-1 .. u1 uN) Циклический сдвиг N верхних чисел стека вниз
ROT (u1 u2 u3 ═→ u2 u3 u1) Циклически сдвигает три верхних числа стека вниз
RP! (═→) Сбрасывает стек возвратов
RP@ (═→ A) Кладет на стек данных адрес указателя стека возвратов (т.е. аппаратного стека). Отметим, что он указывает на один байт меньше последнего значения стека возвратов
RPROG <ИМЯ> (═→) Читает с диска программу пользователя, ранее записанную словом SPROG под именем (ИМЯ>
S->D (n ═→ d) Преобразует число одинарной длины в число двойной длины (напр., для операций <# # #S #>)
S/FILE (cnst) Число листов текста в одном файле NSCREEN (9)
S0 (var) Адрес дна стека данных
SAVE (═→) Выводит на экран текущий лист и запрос "OK ?". Если в ответ на запрос нажать кл. Y, то блок с этим листом отмечается как обновленный и затем производится запись его словом SAFE-BUFFERS
SAVE-BUFFERS Записывает содержимое всех обновленных бло- чных буферов на диск, снимает признак их обновления, но они остаются на своих местах
SCR (var) Номер блока, который был только-что отображен
SETBUF (n ═→) Устанавливает в системе n блочных буферов. По умолчанию их в системе 4
SIGN (n d ═→ d) Продолжает перевод двойного числа в счет- ную строку: присоединяет к строке в PAD знак минус, если число n < 0
SMUDGE (═→) Инвертирует бит незавершенности определения слова в байте длины поля имени последнего определения через двоеточие
SP! (═→) Инициализирует арифметический стек
SP@ (═→ A) Кладет на стек значение указателя стека до исполнения данного слова
SPACE (═→) Выводит на экран 1 пробел
SPACES (u ═→) Выводит на экран u пробелов
SPROG <ИМЯ> Записывает на диск под именем <ИМЯ> текущий словарь пользователя (т.е. программу пользователя). Записанный файл можно затем считать словом RPROG
SQR (flo) (d1 ═→ d2) Вычисляет квадратный корень float-числа d1 и кладет результат d2 на стек во float-формате
SSV Записывает на диск файл nSCREEN при исполнении команды CREATE-SCREENS. Самостоятельно не применяется
STATE (var) (═→ A) Режим Форт-системы: 0 - исполнение, не 0 - компиляция
STRING (n ═→ A u) Вводит в текстовый буфер TIB текст, сто- ящий вслед за словом STRING и ограниченный символами с кодом n. Кладет на стек адрес A и длину u текста. Символом-ограничителем не может быть пробел
SUB (jsr,flo) (═→) Вычитает распакованное float-число в буфере buf2 из такого же числа в буфере buf1 и помещает разность в буфер buf3
SWAB (u ═→ u1) Переставляет байты в числе u
SWAP (u1 u2 ═→ u2 u1) Меняет местами 2 верхних числа стека
TEXT (n ═→) Принимает в буфер PAD текст, стоящий вслед за TEXT и оканчивающийся символом с кодом n, и оформляет его в виде счетной строки
TEXT, (A u ═→) Переносит текст из u символов с адреса A в словарь с созданием неименованной счетной строки. Применяется в определениях через двоеточие для включения текста из A в словарную статью
THEN (═→) Конечное слово условного ветвления
if (или ifnot) .. else .. then
TIB (var) Адрес буфера ввода текста
TO (n ═→) Присваивает quan-переменной или константе значение n. Применяется в форме: n TO <ИМЯ>
TO-DO (A ═→) "Присваивает" векторному слову, адрес A поля параметров которого лежит на стеке, значение слова Форта, стоящего вслед за TODO. Формат "присвоения":
ASSIGN <ИМЯ> TO-DO <ИМЯ2> Векторное слово <ИМЯ> должно быть определено определяющим словом EXVEC: и после "присвоения" оно будет выполнять все операции слова <ИМЯ2>, где бы в словаре оно ни встретилось, в том числе раньше операции "присвоения"
TOGGLE (A b ═→) Выполняет операцию "исключающее ИЛИ" между байтом b на стеке и байтом по адресу A. Результат остается в A
TRAVERSE (A n ═→ A1) По адресу A границы имени слова и ука- зателю n направления поиска (n=1 - вперед, n=-1 - назад) находит адрес A1 второй границы имени
TRIAD (u ═→) Загружает с диска и выводит на экран тексты трех листов, включая лист u
TUCK (u u1 u2 ═→ u u2 u1 u2) Вставляет копию числа на ве- ршине стека в третью ячейку стека, сдвигая остальные числа вниз
TYPE (A u ═→) Выводит на экран строку из u символов, коды которых хранятся по адресу A
U* (u1 u2 ═→ ud3) Вычисляет ud3=u1*u2
U*/ (ud u u1 ═→ ud1) Вычисляет ud1=ud*u/u1. Промежуточное выражение ud*u - число тройной длины. Считает правильно, если u1<32768
U (flo) (A ═→) Выводит на экран символьный и числовой дамп 16 байтов, начиная а адреса A. Выход - клавиша РЕД, другие клавиши - выводят очередные 16 байтов
U. (u ═→) Выводит на экран число u без знака
U/ (ud u ═→ u1 u2) Вычисляет u2=ud/u. u1 - остаток от этого деления. Считает правильно, если u<32768
U/MOD (ud u ═→ u1 ud1) Вычисляет ud1=ud/u, u1 - остаток
U< (u1 u2 ═→ f) Сравнивает 2 числа на стеке и кладет на стек флаг f результата: f=true, если u1 < u2, иначе f=false
UD. (ud ═→) Выводит на устройство вывода беззнаковое двой- ное число
UNPACK (asm,flo) (d A ═→) Распаковывает float-число d в стеке и кладет распакованное число в буфер по адресу A
UNTIL (f ═→) Если f=true, то завершает цикл begin .. until, иначе возвращает исполнение к началу цикла
UPCHAR (A n ═→) Переводит из строчных в заглавные символы текста по адресу A и длиной n
UPDATE (vec) По умолчанию инициализировано словом (UPDATE), которое помечает текущий блок в буфере как обновленный и подлежащий автоматической записи на диск перед размещением в этом буфере другого блока или при исполнении слов SAFE-BUFFERS или FLUSH
USE (var) Адрес начала блочного буфера, который будет загружен следующим
USER (bld) (b ═→) Создает пользовательскую переменную. Формат:b USER <имя>; b - смещение на странице 5 нулевого сегмента (область пользовательских переменных). Значения b от 0 до ¤35 заняты под переменные Форт-системы, значения от ¤36 до ¤3C свободны для размещения переменных пользователя
VAL (flo) (A ═→ d) Переводит первое вхождение целого числа в тексте по адресу A в двойное число и кладет его на стек
VARIABLE (bld) (═→) Определяет числовую переменную со значением 0. Формат: VARIABLE <имя>
VLIST (═→) Выводит на экран слова контекстного словаря
VOC-LINK (var) Адрес поля связи списка в слове, которое определяет последний созданный список. Все списки связаны через эти поля в их определяющих словах
VOCABULARY (bld) Определяет слово, порождающее новый спи- сок слов Форта, подключаемый к контекстному словарю. Формат: VOCABULARY <имя>. При исполнении слова <имя> новый список становится первым списком поиска (т.е. контекстным). Если после этого исполнить слово DEFINITIONS, то этот список можно будет дополнять новыми словами.
WARM (═→) Частично инициализирует систему: останавливает счет, очищает стеки и экран, делает контекстным список FORTH, но введенные пользователем слова сохраняются в словаре, сохраняется содержимое буферов. Устанавливается десятичная система счисления
WARNING (var) Определяет характер действий при обнаружении ошибок, не связанных с операционной системой: отрицательное значение WARNING вызывает исполнение слова ABORT, иначе выдается сообщение об ошибке. Можно организовать (путем переопределения MESSAGE) свою систему диагностики ошибок, используя положительные значения WARNING
WHILE (f ═→) Пока f=true, в цикле begin .. while .. repeat исполнение будет возвращаться к началу цикла, иначе цикл завершается
WIDTH (var) Максимально допустимая длина имени слова Форта. По умолчанию равна 31
WORD (u ═→ A) Считывает из входного потока текст, ограниченный справа символом с кодом u, размещает его в специальном буфере (WBFR), переводит заглавные буквы текста в строчные и кладет на стек адрес счетной строки со считанным текстом. Если символ u не найден, то считывает весь входной поток до нулевого байта
WORDS (flo) Выводит на экран имена слов текущего словаря Форта вместе с адресом их поля кода
XOR (u1 u2 ═→ u3) Вычисляет результат u3 поразрядной ло- гической операции ИСКЛЮЧАЮЩЕГО ИЛИ над u1 и u2
[ (═→) Переводит систему в режим исполнения
['] (═→) Компилирует адрес поля параметров следующего слова как числовой литерал. Применяется только при компилировании
[COMPILE] (═→) Компилирует следующее слово немедленного исполнения
] (═→) Переводит систему в режим компиляции
[an error occurred while processing this directive]