[an error occurred while processing this directive]

.цв

Словарь языка Форт-Агат

.нф

В данный словарь, кроме слов Базового Форта, помещены дополнительные средства Форт-Агата, в частности, набор отладочных слов (u, words, ds и др.), экранный текстовый редактор edit, библиотека слов для обработки текстовых величин и библиотека арифметики вещественных чисел с плавающей десятичной точкой. Эти средства становятся доступными после загрузки системного файла float командой

                     RPROG FLOAT

Обозначения типа слова:

      (var) - переменная
      (asm) - ассемблерное слово
      (bld) - определяющее слово (через CREATE .. DOES>)
      (cnst) -константа
      (vec) - векторное слово
      (flo) - слово из системного файла float
      (jsr) - слово-подпрограмма в машинных кодах. Может применяться только в определениях ассемблерных слов.

Слово, определенное через двоеточие, - не обозначено.

За именем слова в скобках описано состояние арифметического стека до исполнения слова и через символ '═→' после исполнения, при указании нескольких данных число справа находится на вершине стека. Обозначения здесь такие:

      c - код символа (байт без знака)
      n - число со знаком
      u - число без знака
      d - двойное число со знаком
     ud - двойное число без знака
      b - байт (в стеке хранится в младшем байте двух-
           байтного слова)
      A - адрес; (A) - содержимое ячейки по адресу A
      f - флаг (т.е. 0, если false, и не 0, если true)

В примерах знак → означает результат исполнения слова на экране. Завершающее сообщение 'Ok' в примерах не приводится.

.кс-5

! (u A ═→) Записывает число u по адресу A

!CSP (═→) Копирует значение указателя арифметического стека в переменной CSP

# (d ═→ d) Продолжает форматный перевод двойного числа в счетную строку: делит d на текущее значение переменной BASE, частное кладет на стек, а остаток преобразует в код цифры и помещает в PAD, начиная с конца

#> (d ═→ A n) Завершает форматный перевод числа в счетную строку, кладет на стек ее адрес A и число символов n

#BUF (var) Число блоковых буферов в системе. При инициализации оно равно 2

#S (d ═→ 0 0) Продолжает форматный перевод двойного числа в счетную строку: выполняет операцию слова # со всеми оставшимися цифрами числа

¤! (A A1 ═→) Копирует счетную строку A в текстовой переменной A1

¤¤ (═→ A) Системная текстовая переменная длиной 255 знаков

¤+ (A A1 ═→) Выполняет конкатенацию строк A и A1, т.е. счетная строка A1 присоединяется к концу счетной строки A и образуется новая, удлиненная строка A

¤. (A ═→) Выводит счетную строку A на устройство вывода

¤COMPARE (asm,flo) (A1 A2 ═→ n) Сравнивает посимвольно две счетные строки и кладет на стек признак n результата:

               если n=0, то более длинная строка имеет
                то же начало, что вся более короткая;
               если n=1, то первая больше второй,
               если n=-1, то первая меньше второй.

¤MSG (u ═→) Выводит на экран сообщение об ошибке, соответствующей ее номеру u; если 0 < u < 26, то выводится текстовое сообщение, если больше 25 - сообщение вида MSG # u

¤VAR (u ═→) Создает новую текстовую переменную в виде пустой счетной строки длиной u. Формат команды U ¤VAR <ИМЯ>

' (═→ A) Кладет на стек адрес поля параметров следующего слова входного потока

( (═→) Не интерпретируемый комментарий до символа ')'

(FIND) (A A1 ═→ A2 b f) Ищет в словаре слово по шаблону, находящемуся по адресу A. Поиск идет в сторону меньших адресов, начиная с адреса A1 поля имени какого-либо слова. Кладет на стек адрес A2 поля кода найденного слова, байт b длины его имени и флаг TRUE. Если слово не найдено, то кладет только флаг FALSE

(LINE) (n s ═→ A n1) Кладет на стек адрес A линии n листа s, а также длину n1 линии

(ULOOP) (═→) Применяется для организации версии цикла DO .. LOOP с беззнаковыми параметрами. Реализуется это так:

             : ULOOP 3 ?RAIRS COMPILE (ULOOP) BACK ;
     После компиляции этого определения можно использовать цикл u u0 DO ... ULOOP, где u, u0 - беззнаковые параметры

(WORD) (c ═→ A n) Сканирует входной поток, игнорирует лидирующий символ-ограничитель 'c'. Кладет на стек начальный адрес A и длину n найденного текста, который оканчивается символом с кодом c

* (n1 n2 ═→ n3) Вычисляет n3=n1*n2

*/ (n1 n2 n3 ═→ n) Вычисляет n = n1*n2/n3, причем промежу- точное произведение n1*n2 - двойное число

*/MOD (n1 n2 n3 ═→ n4 n5) n4 - это остаток от деления про- изведения n1*n2 на n3; n5=n1*n2/n3

+ (n1 n2 ═→ n) Вычисляет сумму n двух чисел

+- (n1 n2 ═→ n) Оставляет на стеке число n1 со знаком n2

+! (n A ═→) Прибавляет n к числу по адресу A: (A)=(A)+n

+BUF (A ═→ A1 f) Продвигает адрес блочного буфера с A на адрес A1 начала следующего буфера. Флаг f=FALSE, если A1 есть адрес самого последнего из назначенных буферов

+LOOP (n ═→) В цикле DO ... +LOOP изменяет значение счетчика цикла на n. Цикл завершается, если 1) при n>0 счетчик цикла становтся равным или больше предельного значения, 2) при n<0 счетчик становится меньше предельного значения

, (u ═→) Записывает u по текущему адресу словаря (HERE) и увеличивает HERE на 2

- (n1 n2 ═→ n3) Вычисляет n3=n1-n2

═-> Обеспечивает переход к интерпретации следующего листа входного потока (если надо - с загрузкой с диска)

-1 (cnst) -1

-2 (cnst) -2

-FIND (A ═→ A1 b f) Использует очередное слово входного потока как шаблон для поиска слова в контекстном словаре. Найдя слово, помещает на стек его адрес поля кода, байт длины имени и флаг true, иначе - только флаг false. Перед исполнением -FIND на стеке должен лежать адрес A поля имени слова, стоящего в словаре дальше от начала, чем искомое слово. Обычно используется адрес поля имени последнего слова в данном контекстном словаре, напр., CONTEXT @ @ -FIND

-ROT (n1 n2 n3 ═→ n3 n1 n2) Осуществляет кольцевой сдвиг трех верхних чисел стека вверх

-TRAILING (A u1 ═→ A u2) Из несчетной строки с адресом A и длиной u1 исключает пробелы сзади и адрес A и новую длину u2 строки кладет на стек

. (n ═→) Выводит число n со знаком на экран

." (═→) В режиме компиляции: выводит на экран строку до закрывающих кавычек

.LINE (u s ═→) Выводит на экран текст линии u листа s без хвостовых пробелов

.R (n u ═→) Выводит значение n на экран выровненным по правому краю поля шириной u

.S Выводит на экран содержимое стека данных, оставляя стек неизменным

/ (n1 n2 ═→ n3) Вычисляет n3=n1/n2

/MOD (n1 n2 ═→ n3 n4) Вычисляет u4= u1/u2, а u3 это остаток от деления n1 на n2

0 (═→ 0) Кладет ноль на стек

0< (n ═→ f) Сравнивает число на стеке с нулем и кладет на стек флаг f результата: f=true, если n < 0, иначе f=false

0= (n ═→ f) Сравнивает число на стеке с нулем и кладет на стек флаг f результата: f=true, если n=0, иначе f=false

0> (n ═→ f) Сравнивает число на стеке с нулем и кладет на стек флаг f результата: f=true, если n > 0, иначе f=false

1 (═→ 1) Кладет 1 на стек

1+ (n ═→ n+1) Прибавляет 1 к n на стеке

1+! (A ═→) Прибавляет 1 к числу по адресу A: (A)= (A)+1

1- (n ═→ n-1) Вычитает 1 из n на стеке

1-! (A ═→) Вычитает 1 из числа по адресу A: (A)=(A)-1

2 (═→ 2) Кладет 2 на стек

2! (d A ═→) Записывает значение двойного числа d в двойную переменную A

2* (n ═→ 2*n) Удваивает n

2+ (n ═→ n+2) Прибавляет 2 к числу на стеке

2+! (A ═→) Прибавляет 2 к числу по адресу A: (A)= (A)+2

2- (n ═→ n-2) Вычитает 2 из числа на стеке

2-! (A ═→) Вычитает 2 из числа по адресу A: (A)=(A)-2

2/ (n ═→ n/2) Делит число в стеке на 2

2@ (A ═→ d) Заменяет в стеке адрес A двойной переменной ее значением d

2DROP (u1 u2 ═→) Снимает со стека 2 одинарных числа или одно двойное

2DUP (d ═→ d d) Дублирует двойное число (или 2 одинарных числа) на вершине стека

2OVER (d1 d2 ═→ d1 d2 d1) Кладет на вершину стека копию второго двойного числа в стеке

2ROT (d1 d2 d3 ═→ d2 d3 d1) Кольцевой сдвиг трех верхних двойных чисел вниз

2SWAP (d1 d2 ═→ d2 d1) Переставляет 2 верхних двойных числа на стеке

4HEX (u ═→ A u1) Преобразует число u в строку из 4-х 16-ричных цифр в буфере PAD. Кладет на стек адрес A буфера PAD и длину строки. Текущая система счисления не изменяется

79-STANDARD Сигнализирует, что версия соответствует стан- дарту FORTH-79

: (bld) (═→) Создает определение нового слова Форта тем, что компилирует слова входного потока (до слова ;), кроме первого, которое становится именем нового слова

; (bld) (═→) Завершает определение нового слова через двоеточие

;CODE (bld) Является ассемблерным заменителем слова DOES>. Прерывает компиляцию, завершает работу слова CREATE и исполняет слово ASSEMBLER. Используется для вставки ассемблерного кода в исполняемую часть создаваемого определяющего слова. Эта часть должна оканчиваться словом END-CODE

< (n1 n2 ═→ f) Сравнивает 2 числа на стеке и кладет на стек флаг f результата: f=true, если n1 < n2, иначе f=false

<# (asm) (d ═→ ) Инициализирует программу форматного преобразования двойного числа со знаком в счетную строку, расположенную по адресу PAD

<CMOVE (asm) (A1 A2 u ═→) Переносит u байтов с адреса А1 по адресу A2, начиная со старших адресов

= (u1 u2 ═→ f) Сравнивает 2 числа на стеке и кладет на стек флаг f результата: f=true, если u1=u2, иначе f=false

> (n1 n2 ═→ f) Сравнивает 2 числа на стеке и кладет на стек флаг f результата: f=true, если n1 > n2, иначе f=false

>CLI (A ═→) Исполняет командную строку дисковой операционной системы, хранящуюся по адресу A в виде счетной строки, которая должна оканчиваться кодами ¤8D и ¤00

>IN (var) Смещение обрабатываемого символа относительно начала входного потока. Проще говоря, это - номер позиции очередного символа во входном потоке (с клавиатуры или из блочного буфера)

>R (u ═→) Кладет число u на стек возвратов

? (A ═→) Выводит на экран содержимое ячейки по адресу A в виде числа со знаком

?COMP (═→) Сообщает об ошибке, если используется в режиме исполнения

?CSP (A ═→) Фиксирует ошибку, если указатель стека не равен содержимому CSP

?CURRENT (A ═→) Проверяет, что адрес A есть адрес поля параметров имени списка, в который намечено записать новые слова. Если это так, то ничего не выдается, иначе исполнение прекращается и выдается сообщение об ошибке: "Неверен CURRENT"

?DUP (n ═→ n n) Дублирует число на стеке, если оно не равно 0

?ERROR ( f N ═→) Если f не равно 0, то оставляет N на стеке, исключает f и исполняет слово error, иначе просто исключает f и N из стека

?EXEC (═→) Сообщает об ошибке, если используется в режиме компиляции

?KEY (n1 ═→ n2) Ожидает нажатия клавиши (без вывода курсора на экран) и кладет на стек ее код

?LOADING (═→) Сообщает об ошибке, если исполняется не в процессе компиляции

?PAIRS (u1 u2 ═→) Сообщает об ошибке, если u1 ≠ u2

?STACK Если стек данных пуст или полон, то выдает сообщение об ошибке при попытке обращения слова к стеку

@ (A ═→ u) Заменяет в стеке адрес A его содержимым u (т.е. разыменовывает A)

@EXECUTE (A ═→) Исполняет слово, адрес адреса компиляции которого лежит на стеке. Если A=0, то ничего не исполняется

ABORT (vec) (═→) По умолчанию инициализирован словом (ABORT), которое прекращает счет, сбрасывает стек данных, выполняет "теплый" старт WARM - слова пользователя остаются в словаре

ABS (n ═→ |n|) Вычисляет абсолютное значение числа n

ADD (jsr,flo) Суммирует распакованные float-числа в буферах buf1 и buf2 и кладет сумму в буфер buf3

AGAIN Передает управление к началу цикла BEGIN ... ADAIN

ALLOT (u ═→) Резервирует u байтов по адресу here и уве- личивает here на u

ALPHA (b ═→ c) Преобразует цифру b в код c печатаемого символа цифры (с учетом текущей системы счисления)

AND (u1 u2 ═→ u3) Кладет в стек результат u3 поразрядного логического умножения u1 и u2

ASC C (═→ b) Преобразует первый символ слова C , стоящего за ASC, в код b, который кладет на стек

ASSEMBLER Делает контекстным (т.е. доступным для текстового интерпретатора) список слов Ассемблера Форта

ASSIGN (═→ A) Кладет на стек адрес поля параметра слова, следующего за ASSIGN. Используется в форме

             ASSIGN NNNN TODO CCCC
     которая объясняется в статье о слове TODO

AT <ИМЯ> (flo) (═→ A) Кладет на стек адрес quan-переменной <ИМЯ>

B/BUF (═→ 1024) Число байтов в текстовом блоке

B/SCR (═→ 1) Число текстовых блоков в одном листе

BACK (A ═→) Вычитает значение HERE из A и записывает разность по адресу HERE. Используется при вычислении относительного адреса перехода в словах AGAIN, UNTIL и т.д.

BASE (var) Текущее основание системы счисления

BEGIN (═→) Начальное слово циклов

          begin .. f until  и
          begin .. f while .. repeat

BEXP (flo) (═→) Вычисляет показательную функцию распакованного float-числа в буфере buf3. Результат формируется в том же буфере

bf. (asm,flo) (A ═→) Выводит распакованное float-число на экран из буфера A

bf10n* (flo) (n A ═→) Умножает на 10^n распакованное число в буфере A. Результат остается в том же буфере

BFIN (flo) (═→) Ожидает ввода float-числа с клавиатуры и вводит число в буфер buf3 в распакованном виде. При вводе не используется десятичная точка и лидирующие нули. Так например, число -0.0012345e-7 следует вводить как -12345e-14, а число 123.4567 - в виде 1234567e-4

BFPOW (flo) (u ═→) Возводит распакованное число в буфере buf3 в положительную целую степень u. Результат остается в том же буфере

BL (═→ b) Кладет на стек код пробела b=¤A0

BLANKS (A u ═→) Записывает u кодов пробела в последовательные байты, начиная с адреса A

BLK (var) Номер текущего обрабатываемого текстового блока; если 0, то входной поток поступает из буфера клавиатуры

BLN (flo) (═→) Вычисляет натуральный логарифм распакованного числа в буфере buf3. Результат формируется в том же буфере

BLOCK (u ═→ A) Кладет на стек адрес A буфера, где хранится лист u; если листа нет в памяти, он загружается с диска

BSQR (flo) (═→) Вычисляет квадратный корень распакованного числа в буфере buf3. Результат формируется в том же буфере

BFPOR (flo) (═→) Преобразует одно- или двух-значное целое число, хранящееся в переменной por в распакованное float-число в буфере buf2

buf1, buf2, buf3, buf4 и buf5 (flo) (═→ A) Системные текстовые переменные длиной по 23 байта, используемые в качестве рабочих буферов для ввода float-числа с клавиатуры (buf3) и операций над распакованными float-числами

BUFARRAY (bld,flo) (u ═→) Определяющее слово для создания массива из u текстовых переменных длиной по 13 байт, которые могут служить буферами для распакованных float-чисел с длиной мантиссы до 9 знаков

BUFFER (u ═→ A) Кладет на стек адрес A буфера для листа u. При этом сам лист не читается с диска, но если буфер u занят блоком, который помечен как UPDATE, то он записывается на диск, освобождая буфер. Номер u записывается в первые 2 байта выделенного буфера

BUFINS (flo) (═→ A) Системная текстовая переменная длиной 64 знака для хранения строки текста, который можно вставлять на линии экранного редактора (клавишей f0)

BUFSZ (cnst) Общая длина текстового буфера (¤404)

BYE Выход из Форта в Best

C! (b A ═→) Записывает байт b по адресу A

C, (b ═→) Записывает байт b по текущему адресу памяти (HERE) и увеличивает значение HERE на 1

C/L (cnst) Длина линии листа (64 байта)

C@ (A ═→ b) Заменяет адрес A байта его значением b

CFA (A1 ═→ A) Преобразует адрес A1 поля параметров слова в адрес A поля кода (т.е. адрес компиляции)

CMOVE (A1 A2 u ═→) Пересылает u байтов с адреса A1 по адресу A2 (начиная с начала массива)

CMOVE> (A1 A2 b ═→) Пересылает b байтов с адреса A1 по адресу A2 (начиная с конца текста). Работает быстрее <CMOVE, но b не может быть больше 127

CODE (bld) Создает заголовок словарной статьи на Ассембле- ре. Применяется в структуре CODE ... END-CODE

COLD Инициализирует Форт-систему как WARM, но дополнительно исключает из словаря все слова, введенные пользователем

COMPILE (═→) Используют в структуре

                 : <ИМЯ> ... compile <ИМЯ1> ... ;
     При исполнении слова <ИМЯ> слово <ИМЯ1> не исполняет- ся, а только компилируется, т.е. в словарной статье формируется адрес поля кода слова <ИМЯ1>. Обычно слово <ИМЯ> - немедленного исполнения, а <ИМЯ1> - обычное

CONSTANT (bld) (u ═→) Определяет имя числовой константы и ее значение u. Применяется в виде: u constant <имя>

CONTEXT (var) Адрес поля имени последнего слова в контекс- тном списке, т.е. в списке, доступном для текстового интерпретатора

CONVERT (d A ═→ d1 A1) Преобразует счетную строку символов по адресу A в двойное число, суммирует его с двойным числом d на стеке и оставляет на стеке сумму d1 и адрес A1 первого нецифрового символа строки

COUNT (A1 ═→ A2 u) Кладет на стек адрес A2 первого символа счетной строки A1, а также ее длину u

CR (═→) Осуществляет перевод строки

CRCOD (cnst) Код клавиши перевода строки (¤8D)

CREATE (vec) (═→) По умолчанию инициализировано словом (CREATE), которое создает заголовок словарной статьи для нового слова с именем, стоящим следующим во входном потоке. Применяется самостоятельно и в определениях через двоеточие в структурах

                  : <ИМЯ> CREATE...DOES>...;
           : <ИМЯ> CREATE ... ;CODE ... END-CODE
     При самостоятельном применении порождает слово типа массива, которое при исполнении кладет на стек адрес своего поля параметров. Так команда
           CREATE VECS ] A B C D [
     создает в словаре массив VECS адресов поля кода слов A, B, C и D. При исполнении слова VECS на стек данных будет положен адрес первого числа этого массива, т.е. адрес адреса поля кода слова A.

CREATE-SCREENS Создает на диске серию из 20 файлов для размещения 9 листов текста каждый. Запись и чтение этих файлов выполняются автоматически словами BLOCK, LIST, LOAD, SAVE и др.

CRTXT (═→) Счетная строка, содержащая коды ¤8D и ¤00

CSP (═→ A) Переменная для контроля содержимого указателя стека при компиляции

CURRENT (var) Адрес поля имени последнего слова в текущем списке компиляции

CUTIN¤ (asm,flo) (A n A1 ═→ A3) Врезает строку A1 внутрь строки A, начиная с символа n. Сохраняет удлиненную строку в системной переменной ¤¤, адрес A3 которой оставляет на вершине стека. Максимальная длина строки с врезкой 127 символов. См. также слово LCUTIN¤

D+ (d1 d2 ═→ d3) Вычисляет d3=d1+d2

D+- (d1 n ═→ d) Оставляет на стеке двойное число d1 со знаком числа n

D. (d ═→) Выводит двойное число d на экран

D.R (d u ═→) Выводит число d на экран выровненным по правому краю поля шириной u

D< (d1 d2 ═→ f) f=true, если d1<d2, иначе f=false

DABS (d ═→ |d|) Заменяет на стеке двойное число d его абсолютным значением

DEC. (n ═→) Выводит на экран число n в десятичной системе, не изменяя текущего значения BASE

DECIMAL (═→) Устанавливает ввод и вывод чисел в десятичной системе

DEFINITIONS Делает контекстный список слов текущим, т.е. готовым для включения в него определения нового слова Форта

DEPTH (═→ u) Кладет на стек число чисел в стеке (в пере- счете на одинарные)

DIGIT (u1 u2 ═→ n f) Преобразует код u1 символа в число n по основанию u2 и кладет на стек число n и флаг f: f=true, если перевод был удачным, иначе f=false

DLITERAL (ud ═→) При STATE=1 компилирует адрес поля кода слова dlit и переносит в словарную статью двойное число с вершины стека. При STATE=0 ничего не выполняет

DNEGATE (d ═→ -d) Изменяет знак двойного числа на стеке на противоположный

DO (n1 n0 ═→) Задает цикл со счетчиком DO...LOOP или DO...+LOOP, где n1, n0 - предельное и начальное значение счетчика

DOES> (═→) Используется при создании определяющих слов в структуре : <ИМЯ> CREATE ... DOES> ... ;

     Записывает в поле параметров создаваемого слова <ИМЯ> адрес исполнительной части этого слова (т.е. последова- тельности слов, стоящей за DOES>. При исполнении слова, созданного определяющим словом <ИМЯ>, на стек кладется адрес на 2 больший, чем адрес поля параметра данного слова, и начинает исполняться последовательность слов, стоящая после DOES> в определяющем слове <ИМЯ>

DOVEC (A A1 ═→) Преобразует адрес A1 поля параметра в адрес поля кода и записывает его по адресу A. Используется при определении векторных слов

DP (var) Адрес первого свободного байта словаря (для HERE)

DPL (var) Позиция десятичной точки во введенном числе

DROP (u ═→) Исключает число с вершины стека

DS <ИМЯ> (flo) (═→) Выводит на экран дамп слова <ИМЯ>

DUP (u ═→ u u) Дублирует одинарное число на стеке

E (flo) (n ═→) Команда возврата из Форта в экранный редактор EDIT после временного выхода из него

ee (cnst,flo) Число e=2.718282

EDIT (flo) (n ═→) Запускает экранный текстовый редактор EDIT и выводит на экран для редактирования лист номер n

EDITOR (═→) Подключает, т.е. делает доступным встроенный редактор текста

ELSE (═→) Заголовок части ИНАЧЕ структуры ветвления

            f IF .. ELSE .. THEN
     которая исполняется, если флаг f= false

EMIT (vec) (c ═→) По умолчанию инициализирован словом (EMIT), которое выводит на устройство вывода символ, код которого - на вершине стека. Увеличивает на 1 значение переменной OUT

EMPTY (flo) (A ═→) Обнуляет все байты системного буфера A

EMPTY-BUFFERS Отмечает все блочные буферы как пустые и обнуляет их содержимое. Обновленные блоки на диск не записываются

ENCLOSE (asm) (A c ═→ A n1 n2 n3) Вспомогательное слово, используемое (WORD): выделяет из входного потока лексему, ограниченную символом c

ERASE (A n ═→) Обнуляет n байтов памяти, начиная с адреса A

ERROR (n ═→) Выдает сообщение об ошибке номер n

ESCAPE Прерывает программу, сбрасывает стек данных, выводит сообщение "Escape" и выполняет слово QUIT

EXECUTE (A n ═→) Исполняет слово, адрес компиляции которого A лежит на стеке

EXIT (═→) Выполняет немедленный выход из текущего слова. Используется также для окончания интерпретации входного потока из блочного буфера

EXP (flo) (d1 ═→ d2) Вычисляет показательную функцию float-числа d1 (т.е. e^d1) и кладет результат d2 на стек во float-формате. Значение d1 не должно превышать 71.38013

EXPECT (A u ═→) Ожидает ввода с клавиатуры u символов и размещает их с адреса A. Клавиши управления отрабатываются, но не записываются в память. Ввод завершается клавишей ВВОД (код &8D) или вводом максимально допустимого числа символов. Обнуляет 2 байта после последнего символа.

EXVEC: (bld) Создает векторное слово с пустым исполнительным вектором и именем, следующим за EXVEC:

F-1 (cnst,flo) (═→ d) -1 во float-формате

F. (flo) (d ═→) Выводит из стека на экран двойное число в float-формате, преобразуя его в число с плавающей десятичной точкой, порядком и знаком, например вида:

               -0.1234567е-19

F+ (flo) (d1 d2 ═→ d3) Суммирует float-числа d1 и d2 и кладет на стек их сумму d3

F- (flo) (d1 d2 ═→ d3) Вычитает float-число d2 из float-числа d1 и кладет разность d3 на стек

F* (flo) (d1 d2 ═→ d3) Перемножает двойные числа d1 и d2 в float-формате и кладет на стек произведение d3 в том же формате

F/ (flo) (d1 d2 ═→ d3) Делит float-число d1 на float-число d2 и кладет частное d3 на стек в float-формате

F0 (flo) (cnst) (═→ d) Кладет на стек число 0 во float-формате

F0= (flo) (d ═→ f) Кладет на стек флаг f: если float-число d равно 0, то f=true, иначе f=false

F0> (flo) (d ═→ f) Кладет на стек флаг f: если float-число d больше 0, то f=true, иначе f=false

F0< (flo) (d ═→ f) Кладет на стек флаг f: если float-число d меньше 0, то f=true, иначе f=false

F1 (cnst,flo) (═→ d) float-единица

F2 (cnst,flo) (═→ d) float-двойка

F> (flo) (d1 d2 ═→ f) Если d1>d2, то f=true, иначе f=false

F< (flo) (d1 d2 ═→ f) Если d1<d2, то f=true, иначе f=false

FABS (flo) (d ═→ |d|) Вычисляет и кладет на стек абсолютное значение float-числа d во float-формате

FADD (asm,flo) (═→) Суммирует распакованные float-числа, расположенные в буферах buf1 и buf2, и кладет сумму в буфер buf3 в виде распакованного float-числа

FC (flo,bld) (d ═→) Определяющее слово для создания float-константы со значением d. Например, если на стеке лежит число -12.34567e-7 во float-формате, то команда fc bbb создает float-константу bbb со значением -0.1234567e-5. В дальнейшем, при исполнении слова bbb на стек кладется это значение во float-формате

FDIV (asm,flo) (═→) Делит распакованные float-числа, расположенные в буферах buf1 и buf2, и кладет частное (buf1)/(buf2) в буфер buf3 в виде распакованного float-числа

FENCE (var) Старший адрес области словаря в ОЗУ, внутри которой не действует слово forget. Пример: here fence ! В результате весь текущий словарь будет защищен

FILL (A u b ═→) Заполняет u байтов памяти, начиная с адреса A, значением байта b

FIND (═→ A) Ищет слово в словаре по шаблону, стоящему вслед за FIND. Найдя, кладет его адрес поля кода на стек, иначе кладет 0

FIRST (cnst) Кладет на стек адрес начала области блочных буферов

FLOIN (flo) (═→ d) Ожидает ввода числа в формате с плавающей точкой, например:

.цв

-1234.567е-23

.нф

.кс-5

     вводит число в текстовую переменную buf3, преобразует  ее в двойное число в специальном формате (float-формате), которое кладет на стек

FLUSH Записывает содержимое всех обновленных блочных буферов на диск и отмечает все блочные буфера как пустые. Используется при смене дискет

FMUL (asm,flo) (═→) Перемножает распакованные float-числа, расположенные в буферах buf1 и buf2, и кладет произведение в буфер buf3 в виде распакованного float-числа

FNAME (═→ A) Кладет на стек адрес текущего имени файла для хранения текстовых блоков

FNEGATE (flo) (d ═→ -d) Изменяет знак float-числа в стеке на противоположный

FORGET (═→) Исключает из словаря слово с указанным далее именем и все слова, введенные после него

FORTH (═→) Делает контекстным, т.е. доступным для текстового интерпретатора только основной словарь Форта, отключая все подключенные к нему списки

FPOR (flo) (d ═→ d n) Кладет на стек порядок n float-числа d без снятия самого числа d со стека

FRACT (flo) (═→) Вычисляет дробную часть распакованного числа в буфере buf3. Результат формируется в том же буфере

FSIGN (flo) (d ═→ d n) Кладет на стек код n знака float-числа d: если d>=0, то n=40, иначе n=0

FSUB (asm,flo) (═→) Вычитает распакованные float-числа, расположенные в буферах buf1 и buf2, и кладет разность (buf1)-(buf2) в буфер buf3 в виде распакованного float-числа

FVAL (flo) (A A1 ═→) Преобразует первое вхождение вещественного числа в строке текста A1 в распакованное float-число по адресу A. Формат вещественного числа при этом должен соответствовать формату ввода словом bfin, т.е. не должен включать десятичную точку и лидрующие нули

FVAR (flo,bld) Определяющее слово для создания буфера для распакованной float-переменной. Формат команды: fvar ИМЯ. Значение распакованной переменной присваивается словами intflo, fval, unpack или move

GETS (A ═→) Вводит текст с клавиатуры и оформляет его по адресу A в виде счетной строки длиной не более 255 символов. Применяется для присвоения значения текстовым переменным

H. (n ═→) Выводит на экран число n в 16-ричной системе, не изменяя текущего значения BASE

HERE (═→ A) Кладет на стек текущий адрес первой свободной ячейки словаря

HEX (═→) Устанавливает вывод чисел в 16-ричной форме (система по умолчанию и после обработки ошибки устанавливает DECIMAL )

HIMEM (═→ A) Кладет на стек старший адрес пользовательской памяти, точнее адрес первого байта после нее. Совпадает с адресом экранной памяти

HLD (var) Адрес последнего символа, введенного в строку в PAD при форматном преобразовании числа

HOLD (u ═→) Продолжает форматное преобразование числа в строку: присоединяет (слева) к строке символ с кодом u

I (asm) (═→ u) Кладет на стек данных текущее значение вершины стека возвратов (например счетчика исполняемого цикла DO .. LOOP) без изменения состояния стека возвратов

I' (asm) (═→ n) Кладет на стек данных копию числа из второй от вершины стека возвратов ячейки (без изменения стека возвратов)

ID. (A ═→) Выводит на экран имя слова Форта по адресу A его поля имени

IF (f ═→) Заголовок первой части (ЕСЛИ ТО) структуры ус- ловного ветвления f if .. else .. then, которая исполняется, если флаг f=true

IMMEDIATE (═→) Присваивает вновь определенному слову при- знак немедленного исполнения. Ставится после слова ';'

INDEX (u1 u2 ═→) Выводит на экран тексты нулевых линий листов с u1 по u2

INTERPRET (═→) Интерпретирует входной поток (до нулевого байта), используя указатели BLK и >IN

INTFLO (flo) (d A ═→) Преобразует двойное целое число d в распакованное float-число и помещает его в буфер A

J (═→ n) Кладет на стек текущее значение n управляющей переменной внешнего цикла структуры

          DO ... DO ... J ... LOOP ... LOOP

KEY (vec) (═→ C) По умолчанию инициализировано словом (KEY), которое выводит на экран курсор, ожидает нажатия клавиши и кладет на стек ее код C

LAST (═→ A) Кладет на стек адрес поля имени последнего слова в текущем списке компиляции

LCUTIN¤ (flo) (A n A1═→) Врезка строки A1 в строку A в месте символа n. Работает так же, как и cutin¤, но вдвое медленнее, но зато длина строки с врезкой может достигать 255 символов

LEAVE (═→) Кладет на стек возвратов число, равное числу на его вершине, что приводит к выходу из цикла DO .. LOOP

LEFT¤ (asm,flo) (A1 n ═→ A) Копирует в PAD n первых символов счетной строки A1

LEN (flo) (A ═→ n) Кладет на стек максимально возможную длину n текстовой переменной A

LFA (A1 ═→ A2) Преобразует адрес A1 поля кода в адрес A2 поля связи словарной статьи

LIMIT (cnst) Адрес первого свободного байта после области блочных буферов

LINE (u ═→ A) Кладет на стек адрес A начала линии u теку- щего листа

LIST (u ═→) Выводит на экран лист u, если надо загружая его с диска. Нумерация листов - десятичная

LIT (═→) При компиляции переносит число из потока ввода на стек

.стСловарь Форт-Агат1

[an error occurred while processing this directive]