[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]