Языки программирования: Мега-Бейсик, Бета-Бейсик, Бета-Бейсик, Лазер-Бейсик, ZX-Форт, Паскаль HP4TM 1993 г.

ZX-FORTH - приложение 3. Глоссарий СПЕКТРУМ-ФОРТА.


ПРИЛОЖЕНИЕ 3,

ГЛОССАРИЙ СПЕКТРУМ-ФОРТА.

Глоссарий содержит все определения слов, имеющиеся в
СПЕКТРУМ-ФОРТЕ. Определения приведены в порядке сортировки в
соответствии со стандартом ASCII. На первой строке определения
символически показано какое действие оказывает эта процедура на
состояние стека параметров. Символы показывают, в каком порядке
параметры должны помещаться на стек для исполнения слова. Символы
- - - показывают ход операции. Слева от них состояние стека до
операции, а справа - после. В этой форме записи вершина стека -
справа.

Условные обозначения.

addr - адрес в памяти
b - байт (8 битов)
с - символ (8 битов)

d - 3 2-битное целое двойной точности (старшая часть со

знаком - на вершине стека)
f - логическое число (О - ЛОЖЬ, 1 - ИСТИНА)
ff - логическое значение ЛОЖЬ (О)
п - 16-битное целое число
и - 16-битное целое без знака
tf - логическое значение ИСТИНА
Прописные буквы справа обозначают дополнительные сведения об
определениях слов.

С - может использоваться только в определениях. Цифра
указывает на количество используемых байтов памяти,
если не один.
Е - только для непосредственного исполнения.

LO - определение нулевого уровня по ФОРТу-78.

L1 - определение первого уровня по ФОРТу-78.

Р - исполняется даже и при компиляции.

U - переменная пользователя.

Если особо не оговорено, то имеются в виду 16-битные целые со
знаком. Для 32-битных чисел старшая часть вместе со знаком находится
на вершине стека. Вся арифметика - целочисленная 16-разрядная.

! n addr------L0

Записать по данному адресу 16-битное число

! CSP

Запомнить адрес вершины стека в CSP. Применяется как
часть системы защиты компилятора.

# dl---d2 LO

Из числа в двойной точности dl генерирует символ ASCII,
который помещается в строку вывода. Результат d2 - это
частное от деления на основание системы счисления, он
остается для дальнейших манипуляций.

#> d --- addr count LO

Завершение форматного преобразования при выводе. На
стеке остается адрес выводимого текстового буфера и
количество выводимых символов count. В таком виде стек
подготовлен к работе TYPE.

#S dl---d2 LO

Создает в выводном текстовом буфере текст в кодах ASCII
путем последовательного применения слова # до тех пор,
пока не будет получен нуль в двойной точности.
--- addr Р,L0

Применяется в форме:
' nnnn

Помещает на стек адрес поля имени в словаре. В качестве
директивы компилятора применяется для компиляции адреса
как литеральной величины.

( Р, L0

Применяется в форме:

(сссс) - команда на игнорирование всего, что находится
до закрывающей скобки как комментария. Может

применяться как при компиляции, так и в режиме
непосредственного исполнения. Пробел после открывающей
скобки обязателен.

(•") С+

Пусковая процедура ("пристегиваемая"). Она компилируется
когда встречается слово ." и вызывает передачу
последующего текста на устройство вывода. См. также ."

(; CODE)

Пусковая процедура. Она компилируется, когда встречается
слово CODE и вызывает переписывание поля кода последнего
определенного слова таким образом, чтобы оно указывало
на очередную последовательность в машинном коде.

(+LOOP) n------С2

Пусковая процедура, компилируемая по +LOOP. Выполняет
увеличение параметра цикла на 1 и проверку на завершение
цикла. См. также +LOOP.

(ABORT)

Исполняется после ошибки, когда WARNING равно 1. Обычно
это слово вызывает исполнение ABORT, но эту процедуру
можно заменить процедурой пользователя, если сделать это
аккуратно.

(DO)

Пусковая процедура. Она компилируется после обнаружения
слова DO. Предназначена для передачи параметров цикла со
стека параметров на стек возврата.

(FIND) addrl addr2 --- pfa b tf

addrl addr2---ff

Выполняет поиск по словарю, начиная с поля имени, адрес
которого addr2 в попытке найти текст, равный тому,
который содержится по адресу addrl. Выходные параметры
помещаются на стек. Если текст найден, то это адрес
поля, длина поля имени в байтах, а также логическое
значение ИСТИНА. Если же не найден, то остается только
логическое значение ЛОЖЬ.

(LINE) nl n2 --- addr count

Преобразует номер строки nl и номер экрана п2 в адрес
буфера, содержащего данные для вывода на ленту. Счетчик
count указывает на полную длину строки текста.

(LOOP)

Это пусковая процедура компилируется по LOOP и выполняет
увеличение счетчика цикла и проверку на завершение
цикла. См. также LOOP.

(NUMBER) dl addrl---d2 addr2

Выполняет преобразование текста, начинающегося по адресу
addr+1 в соответствии с текущим значением основания
системы счисления. Новое значение добавляется к числу
двойной точности dl и оставляется как d2. Addr2 - это
адрес первой непреобразуемой цифры. Используется словом
NUMBER.

* nl n2---n L0

Дает произведение (со знаком) двух целых чисел.

*/ nl п2 пЗ --- n4 L0

Все параметры - целые со знаком. Фактически это решение
пропорции. п4 - это частное от деления произведения
первых двух чисел на третье. Здесь в промежуточных
вычислениях применяется 32-битная арифметика, поэтому
результат получается точнее, чем при использовании nl п2
* пЗ /

*/mod nl n2 n-3---n4 n5 L0

Выдает на стек частное и остаток после перемножения двух
чисел и деления произведения на третье число.

+ nl n2---sum L0

Сумма двух чисел.

+! n addr------L0

Прибавить заданное число к значению, содержащемуся по
заданному адресу.

+ - nl п2---пЗ L0

Присвоить знак второго числа первому и поместить
результат на стек.

и-LOOP nl---

Применяется в определениях. Имеет форму: DO...nl +LOOP
Во время рабочего прогона 'LOOP' управляет возвращением к
вызывающему 'DO' в зависимости от nl, состояния счетчика цикла и
верхнего параметра цикла. Целое со знаком nl (шаг цикла)
прибавляется к счетчику цикла и результат сравнивается с верхним
параметром цикла. Возврат назад к 'DO' происходит до тех пор, пока
счетчик цикла остается меньшим, чем верхний параметр, если шаг
положительный или пока счетчик остается больше конечного параметра,
если шаг меньше нуля. После выхода из цикла все параметры
уничтожаются.

♦ORIGIN n---addr

Дает адрес в памяти, выраженный в единицах
относительно основания области параметров. п -
минимальная единица измерения адреса (слово или байт).

n------L0

Скомпилировать п на вершину словаря.

nl n2---diff LO

Поместить в стек разность двух чисел.

--> Р, L0

Продолжить интерпретацию следующего экрана.

-DUP nl --- nl (если О) L0

nl --- nl nl (если не О)

Копирует число, находящееся на вершине стека, если это
не нуль.

-FIND ---pfa b tf

--- ff

Выполнение поиска слова в контекстном и текущем
словарях. Если оно найдено, то на стек помещается адрес
поля записи, длина в байтах, а также логическая величина
ИСТИНА, если же нет, то только логическая ЛОЖЬ.

-TRAILING addr nl --- addr n2

Устанавливает начальный адрес считчика длины текстовой
строки nl таким образом, чтобы предотвратить печать на
экране последующих пробелов. Иначе говоря, символы
между addt+nl и addt+n2 являются пробелами,
n L0

Печать 16-разрядного целого со знаком в соответствии с
установленным основанием текущей системы счисления.
Печать выполняется с последующими пробелами.

. " Р,L0

Применяется в форме ." сссс "

Выполняет компиляцию текста, заключенного между
кавычками, и одновременно передает этот текст на
устройство вывода. При исполнении вне определения
вызывает немедленное исполнение печати.

.R nl п2 ---

Распечатать число nl с правым выравниванием в поле п2.

/ nl n2---n L0

Поместить на стек частное.

/MOD nl n2 --- ПЗ n4 L0

На стек помещается остаток и частное после деления.

0 12 3 ---п

Эти малые целые числа используются так часто, что было
удобно дать им слова и хранить по имени в словаре.

0< m---f LO

Дает значение ИСТИНА, если число меньше нуля, иначе -
ЛОЖЬ.

0= n---f LO

Дает значение ИСТИНА, если число равно нулю, иначе -
ЛОЖЬ .

OBRANCH f------С2

Пусковые процедуры для условного ветвления, если f имеет
значение ЛОЖЬ. Следующий параметр добавляется к
указателю для перехода вперед или назад. Компилируется
словами IF, UNTIL, WHILE.

1+ nl---n2 LI

Увеличение nl на 1.

2+ nl---n2 LI

Увеличение nl на 2 -

2DUP

Повторить 32-битное число, находящееся на вершине стека.

: Р,Е,L0
Используется в форме, называемой определением.
: сссс ......;

Создает новую словарную статью путем объявления
'сссс...' как эквивалента последовательности определений
ФОРТа, ограниченной с противоположной стороны словами
';' или 'CODE'. Если STATE не нуль, то интерпретатор
текста выполняет компиляцию этого определения. Прочие
детали: контекстный словарь переключается на текущий
словарь. Слова, в которых преимущественный бит включен,
(Р) - исполняются непосредственно, а не компилируются.

; Р,С,LO

Завершает определение и прекращает компиляцию.
Компилирует пусковую процедуру 'S'.

;s

Останавливает компиляцию экрана. В то же время, это
слово обозначает еще пусковую процедуру, которая
компилируется в конце определения, передающего
управление в вызывающую процедуру.

< nl n2---f LO

Выдает значение ИСТИНА, если nl меньше п2, иначе дает
ЛОЖЬ.

<#

Начало форматного преобразования. Преобразование
включает в себя также слова <# # # S SIGN # >. Оно
выполняется с числами двойной точности. Текст,
получаемый в результате преобразования, помещается в
буфер PAD.

<BUILDS С,LO

Применяется в определении вида:
: ssss <BUILDS ... DOES > ...;

Всякий раз, когда выполняется 'сссс', слово <BUILDS
определяет новое слово как процедуру высокого уровня
исполнения. При исполнении 'сссс' в форме 'сссс nnnn',
<BUILDS создает для nnnn словарную статью с вызовом
DOES.> Когда впоследствии исполняется nnnn, адрес,
содержащий его параметры, находится на вершине стека и
выполняет слова, следующие после >DOES. <BUILDS и DOES>
позволяют записывать пусковые процедуры на языке
высокого уровня, а не только на ассемблере.

nl n2---f LO

На стек помещается значение ИСТИНА, если nl=n2, иначе
ЛОЖЬ .

> nl n2---f LO

На стек помещается значение ИСТИНА, если nl>n2, иначе
ЛОЖЬ.

>R п------С, LO

Снимает значение со стека параметров и помещает его на
стек возврата. Применение этого слова должно быть
сбалансировано словом R> в этом же определении.

? addr------LO

Печатает в свободном формате число, находящееся по
указанному адресу.

?СОМР Выдает сообщение об ошибке, если компиляция не проходит.

?CSP

Выдает сообщение об ошибке, если положение стека
отличается от значения в CSP.
TERROR f n

Выдает сообщение об ошибке с номером п, если значение
логической переменной - ИСТИНА.

?ЕХЕС

Выдает сообщение об ошибке, если исполнение не проходит.

7L0ADING

Выдает сообщение об ошибке, если загрузка не проходит.

7PAIRS nl п2 ---

Выдает сообщение об ошибке, если nl не равно п2.
Сообщение указывает на то, что условия компиляции не
соответствуют.

?STACK

Выдает сообщение об ошибке, если стек выходит за свои
границы.

@ addr---n L0

Помещает на стек 16-битное содержимое адреса.

ABORT

Очистка стека и переход в режим непосредственного
исполнения. Управление передается к началу программы,
печатается сообщение, соответствующее началу

инициализации.

ABS nl---n2 L0

На стек помещается абсолютная величина nl.

AGAIN

Применяется в форме BEGIN ... AGAIN. При рабочем прогоне
программы это слово вызывает передачу управления к
соответствующему BEGIN для повтора вычислений. Цикл не
может быть прерван иначе, чем через R>DROP.

ALLOT n------LO

Прибавляет к указателю словаря целое число без знака.
Может применяться для резервирования места в словаре или
для переорганизации памяти.

AND nl n2---ПЗ L0

Логическое И.

AT nl n2 ---

Устанавливает позицию курсора при выполнении печати,
nl - номер строки, п2 - номер колонки.

B/SCR ---п

Помещает на стек число, равное количеству блоков
редактируемого экрана. По соглашению принимается, что
экран редактирования имеет 16 строк по 64 символа в
строке.

BACK addr ---

Рассчитывает сдвиг возвратной ветви от HERE до addr и
компилирует в следующий доступный адрес словаря.

BASE ---addr U,LO

Переменная пользователя. Она содержит основание принятой
системы счисления для операций ввода и вывода.

ВЕЕР nl п2 ---

Параметры звукового сигнала (продолжительность и высота)

BEGIN

Применяется в форме:
BEGIN ... UNTIL
BEGIN ... AGAIN

BEGIN ... WHILE ... REPEAT.

Пусковая процедура BEGIN отмечает начало

последовательности, которая должна исполняться с
повторением. Она служит в качестве точки возвращения от
соответствующего UNTIL, AGAIN или REPEAT. При исполнении
UNTIL возвращение к BEGIN выполняется, если на вершине
стека логическое значение ЛОЖЬ. Для AGAIN, REPEAT -
возвращение к BEGIN - всегда.

BL ---с

Постоянная, которая помещает на стек код пробела.

BLANKS addr nl ---

Заполняет область памяти, начиная с указанного адреса
заданным количеством пробелов.

BLK ---addr U, L0

Переменная пользователя, содержащая номер

интерпретируемого блока. Если она равна нулю, то
производится ввод из внутреннего буфера.

BLOCK n---addr LO

Помещает на стек адрес буфера, содержащего блок п. Если
буфер не в памяти, то он переносится с ленты.

BORDER п ---

Устанавливает цвет бордюра.

BRANCH С2,L0

Пусковая процедура для безусловного ветвления. К
указателю добавляется сдвиг для выполнения перехода
вперед или назад. BRANCH компилируется по командам ELSE,
AGAIN, REPEAT.

BRIGHT n ---

Задает яркость при печати.

BYE

Возврат в БЕЙСИК.

С! b addr ---

Запоминает в указанном адресе 8-битный байт.

С, b---

Запоминает указанный байт в следующем доступном адресе
словаря, перемещая указатель словаря.

С@ addr---b

Помещает на стек 8-битное значение того, что содержится
по указанному адресу.

CFA pfa---cf а

Преобразует адрес поля параметров определения в адрес
поля кодов.

CIRCLE nl п2 пЗ ---

Изображение окружности радиуса nl с центром в
координатах п2, пЗ.

CLS

Очистка экрана.

CMOVE addrl addr2 nl ---

Перемещает заданное количество байтов из области памяти,
начинающейся с первого адреса в область, начинающуюся со
второго адреса. Сначала перемещается содержимое адреса и
далее вверх.

COLD

> Процедура для "холодного" старта. Она устанавливает
указатель словаря на минимальный стандарт и запускает
ABORT. Может быть вызвана с терминала для удаления
прикладных программ и начала с нуля.

COMPILE Когда исполняется слово, содержащее это слово, адрес
исполнения слова, следующего за COMPILE, копируется в
словарь. Это позволяет выполнять действия в
специфических ситуациях.

CONSTANT n------L0

Это определяющее слово, которое имеет форму:
n CONSTANT сссс.

Оно может создавать слово сссс, поле параметров которого
содержит п. Когда позже будет исполняться слово сссс,
значение п будет подано на стек.

CONTEXT --- addr U,LO

Переменная пользователя, указывающая на словарь, с
которого должен начинаться поиск.

COPY

Выполняет копирование экрана на принтер.

COUNT addr1 --- addr2 n LO

Помещает на стек адрес байта и счетчик байтов в
текстовом сообщении, начинающемся по адресу addrl.
Предполагается, что в первом байте текста содержится
счетчик байтов, а сам текст начинается со следующей
ячейки. Обычно COUNT вызывается TYPE.

CR LO

Передает коды "возврат каретки" и "подачи строки" на
избранное устройство вывода.

CREATE

Используется такими словами, как CODE, CONSTANT в форме
CREATE сссс при создании заголовка словарной статьи для
определения. Поле кода содержит адреса слов поля
параметров. Новое слово создается в ТЕКУЩЕМ словаре.

CSP ---addr U

Переменная пользователя. Применяется для временного
хранения положения указателя стека. Это нужно для
проверок ошибок компиляции.

D +■ dl d2---d3

Дает сумму двух чисел двойной точности.

di dl n---d2 LI

Прибавляет к числу двойной точности знак п.

О. d --- L1

Печать числа двойной точности со знаком. Старшие 16
битов находятся на стеке выше. Преобразование
выполняется в соответствии с текущим основанием системы
счисления. Вставляются последующие пробелы.

D.R d п ---

Печать числа двойной точности со знаком в поле шириной п
символов.

DABS d---d2

Дает абсолютное значение числа двойной точности.

DECIMAL

Устанавливает основание десятичной системы счисления.

DEF Ы Ь2 ЬЗ ... Ь8 nl ---

Задает графический элемент пользователя.

DEFINITIONS L1

Применяется в форме:
сссс DEFINITIONS .

Устанавливает текущий словарь (CURRENT) на контекстный
(CONTEXT).

DIGIT с nl --- n2 tf
с nl---ff

Преобразует символ с в числовой системе с основанием п в
его двоичный эквивалент п2, сопровождающийся логическим
значением 'ИСТИНА'. Если преобразование незаконно,
выдается только значение ЛОЖЬ.

DLITERAL d---d

d --- Р

В режиме исполнения число остается на стеке. В режиме
компиляции число двойной точности, находящееся на стеке,
компилируется в литерал. При последующем исполнении
определение, содержащее этот литерал, поместит его на
стек.

DMINUS dl---d2

Преобразует число двойной точности в двоичную
дополнительную форму.

DO nl п2------Р, С2, L0

Применяется в следующих формах:

DO ... LOOP ИЛИ DO ... +LOOP.

ВС) время пускового прогона DO начинает повторяющуюся
последовательность управляемого цикла с начальным
значением параметра цикла п2 и с предельным значением
nl. DO снимает их со стека. При достижении LOOP индекс
увеличивается на единицу. Пока вновь рассчитанный индекс
не станет равен или больше предельного, вычисление будет
возвращаться к оператору, стоящему за DO. В противном
случаем параметры цикла уничтожаются и вычисления
продолжаются. Оба параметра во время рабочего прогона
определены и могут быть результатами других вычислений.
Внутри цикла 'I' скопирует текущее значение параметра
цикла на стек. Смотри также I, LOOP, +LOOP, LEAVE.

DOES> LO

Это слово задает действия во время рабочего прогона
внутри определяющего слова высокого уровня. DOES>
изменяет поле кода и первый параметр нового слова так,
чтобы исполнялась последовательность компилируемого
слова с адресами параметров, стоящими после DOES.
Используется совместно со словом BUILDS. Когда
исполняется часть, стоящая после DOES, она начинается с
адреса первого параметра нового слова на стеке. Это
позволяет при интерпретации использовать как саму
область, так и ее содержание. Типичное приложение
включает в себя ФОРТ-ассемблер, многомерные массивы и
генерацию компилятора.

DP ---addr U, LO

Переменная пользователя - указатель словаря. Она
содержит адрес свободной области памяти над словарем.
Значение может быть считано HERE и изменено с помощью
ALLOT.

DPL ---addr U, LO

Переменная пользователя, содержащая количество цифр,
находящихся справа от десятичной точки при вводе числа
двойной точности. Она может также использоваться для
хранения номера колонки, в которой печатается десятичная
точка при печати в формате, заданном пользователем. По
умолчанию принимается 1.

DRAW nl n2 ---

Вычерчивание линии от текущей позиции экрана к позиции,
заданной параметрами nl - в направлении X, п2 - в
направлении Y.

DROP n------LO

Уничтожить число на стеке.

DUP n---n n LO

Повторить число на стеке.

ELSE

Используется в определениях в форме IF ... ELSE ...
ENDIF. Во время рабочего прогона ELSE выполняется если
выражение после IF имеет значение 'ИСТИНА'. ELSE
вызывает пропуск следующего за ним ложного выражения и
переход к исполнению программы за ENDIF. Эффекта
воздействия на стек это слово не имеет.

EMIT с---• L0

Передает символ на избранное устройство вывода.

. EMPTY BUFFERS

Помечает все буферы блоков как пустые, при этом не
обязательно изменяя содержимое. Эта процедура является
также инициализирующей перед работой с лентой.

ENCLOSE addr с ---

addrl nl n2 n3

Процедура, применяемая при сканировании текста в поиске
СЛОВа. Из адреса текста addrl и разделяющего символа с
определяется байт смещения для первого символа, не
являющегося разделителем - nl, смещение первого
разделителя после текста - п2, а также смещение для
первого не включенного символа. Эта процедура не
проходит через символ "нуль", воспринимая его как
безусловный разделитель.

END P,C2,L0

Это аналог UNTIL

ENDIF

Применяется в определениях в формах: IF ... ENDIF, а
также IF ... ELSE ... ENDIF.

Во время рабочего прогона ENDIF служит в качестве точки
назначения для процедур перехода IF, ELSE. Она отмечает
конец структуры условного перехода. Другое имя для этой
процедуры - THEN. Оба имени поддерживаются
СПЕКТРУМ-ФОРТОМ. См. также IF и ELSE.

ERASE addr n ---

Очистка области памяти, начиная с указанного адреса на
указанное число байтов.

ERROR строка----IN BLK

Выполняет индикацию ошибки и рестарт системы. Сначала
проверяется WARNING. Если это 1, то распечатывается
текст строки п, где п дается относительно экрана 4.
Этот номер строки может быть как положительным, так и
отрицательным. Если WARNING равняется О, то п просто
распечатывается как номер сообщения. Если WARNING равно
-1, то исполняется (ABORT), что вызывает прерывание
работы системы. Пользователь может самостоятельно
изменить (АВОРТ). ФОРТ запоминает содержимое IN и BLK
для того, чтобы упростить определение места ошибки.
Последние действия выполняются QUIT.

EXECUTE addr ---

Выполняется определение, адрес поля кода которого
находится на стеке. Адрес поля кода называется также
адресом компиляции.

EXPECT addr n ------LO

Выполняет перенос символов с терминала в адрес. Перенос

выполняется до тех пор, пока не будет достигнут символ
"возврат каретки" или предельное значение счетчика п. К
концу текста добавляются один или более нулей.

FENCE ---addr U

Переменная пользователя, содержащая адрес ниже которого
программа не уничтожается по FORGET. Для того, чтобы
уничтожить программу ниже этого адреса, надо сначала
изменить переменную FENCE.

FILL addr n b ---

Заполнить область памяти, начиная с указанного адреса
заданным количеством байтов Ь.

FIRST ---п

Константа, которая помещает на стек адрес буфера п.

FLASH nl ---

Определяет является символ мигающим или нет. О -
мигающий; 1 - нет.

FORGET Е,L0

Выполняется в форме FORGET сссс.

Устраняет из словаря определение сссс, а также все
физически следующие за ним определения. В СПЕКТРУМ-
ФОРТЕ выдается Сообщение об ошибке, если текущий и
контекстный словари в данный момент времени не
тождественны.

FORTH Р,L0

Имя первичного словаря. Выполнение этого слова делает
FORTH контекстным словарем. Пока дополнительные словари
пользователя не будут определены, новые определения
пользователя становятся частью этого словаря. Это слово
непосредственного исполнения, то есть исполнение
происходит во время определения и во время компиляции
происходит вызов из этого словаря.

GOVER п ---

Управляет перекрыванием символов при печати. (В БЕЙСИКе
- OVER). О - символ затирает предыдущий; 1 - матрицы
символов складываются по XOR.

HERE ---addr LO

Помещает на стек адрес следующей доступной словарной
статьи.

HEX LO

Устанавливает основание системы счисления, равным 16.

HLDE ---addr LO

Переменная пользователя. Она содержит адрес последнего
символа текста во время числового преобразования при
печати.

HOLD с------L0

Применяется между знаками < # и # > в форматном
преобразовании при печати для того, чтобы вставить в
печатаемый текст символы ASCII. Например, 2Е HOLD
вставит при печати десятичную точку.

НОМЕ

Переводит курсор в левый верхний угол экрана.

I ---п С, L0

Применяется в циклах DO ... LOOP для того, чтобы
поместить значение параметра цикла на стек. Возможны
другие применения. См. также R.

ID addr ---

Печатает имя определения по адресу его поля.

IF f------P,C2,L0

Применяется в определениях в форме:
IF ... ENDIF IF ... ELSE ... ENDIF

Во время рабочего прогона IF выбирает место перехода для
продолжения вычислений в зависимости от состояния
логической переменной. Если она имеет значение "ИСТИНА"
(не нуль), то вычисления продолжаются после IF. Если же
она имеет значение "ЛОЖЬ", то вычисления переходят на
точку после ELSE. И в том и в другом случае далее
вычисления выполняются после ENDIF. ELSE и следующая за
ней часть могут отсутствовать, в этом случае при
значении "ЛОЖЬ" вычисления сразу передаются за ENDIF.

IMMEDIATE

Отмечает самое последнее сделанное определение таким
образом, чтобы на этапе компиляции оно не
компилировалось, а непосредственно выполнялось, т.е.
преимущественный бит в заголовке этого определения
включается. Этот метод позволяет делать определения для
необычных ситуаций при компиляции вместо того, чтобы
встраивать их в базовый компилятор. Пользователь может
форсировать компиляцию определении непосредственного
исполнения, если перед определением поставить COMPILE.

IN ---addr LO

Переменная пользователя, содержащая смещение внутри
входного текстового буфера, откуда будет восприниматься
очередной текст. WORD использует и перемещает значение
IN.

INK nl---

Устанавливает цвет печати.

INTERPRET

Интерпретатор внешнего текста, который последовательно
исполняет или компилирует текст, поступающий с вводного
потока в зависимости от STATE. Если имя слова не
обнаруживается ни в контекстном, ни в текущем словаре,
то оно конвертируется в число в соответствии с принятым
основанием системы счисления. Вызывается также

сообщение об ошибке, содержащее данное имя со знаком
'?'. Ввод текста производится в соответствии с
соглашением установленным WORD. Если в числе
обнаруживается десятичная точка, то помещается число в
двойной точности. Другого действия десятичная точка на
оказывает. См. также NUMBER.

INV п---

Управляет инвертированием символов. О - нормальная
печать. 1 - инверсная печать.

KEY ---с L0

Помещает на стек код последней нажатой на терминале
клавиши.

LATEST --- addr c,LO

Помещает адрес поля имени самого верхнего слова в
текущем словаре.

LEAVE

Форсирует выход из цикла DO ... LOOP путем присвоения
предельному значению параметра цикла текущего его
значения. При этом сам параметр цикла остается без
изменения и вычисления продолжаются до LOOP или +LOOP.

LFA addr---addr

Преобразует адрес поля параметров словарной статьи в
адрес поля словарной статьи.

LIMIT ---n

Постоянная, хранящая адрес над верхним байтом памяти,
отведенным под текстовый буфер. Обычно это высший предел
памяти в системе.

LIST п ---

Изображает текст экрана номер п на избранном устройстве
вывода. SCR содержит номер экрана до и после этой
операции.

LIT ---n С2, L0

В определениях LIT автоматически компилируется перед
каждым 16-битным литеральным числом, встреченным во
входном тексте. Позже исполнение LIT вызывает подачу на
стек следующего адреса словаря.

LITERAL п ------Р,С2,L0

При компиляции содержимое стека преобразуется в
16-битный литерал. Это определение имеет

непосредственное действие. Пример применения:

: ххх(расчет) LITERAL.
Компиляция задерживается на время выполнения расчета.

LOAD n------L0

Начинает интерпретацию экрана п. Загрузка кончается в
;S. См. также ;S и -->.

LOOP

Применяется в определениях в форме:

DO ... LOOP. Во время рабочего прогона LOOP управляет
переходом назад к соответствующему DO на основании
сравнения текущего и предельного значений параметра
цикла. Параметр цикла увеличивается на единицу и
сравнивается с пределом. Если параметр цикла меньше
предела, происходит возврат к DO. В противном случае
параметры цикла уничтожаются и вычисления идут обычным
порядком.

М* nl n2---d

Вычисление произведения двух целых со знаком одинарной
точности. Результат имеет двойную точность.

М/ d nl---п2 пЗ

Остаток п2 и частное пЗ от деления двойного d на
одинарное nl.

M/MOD udl u2 --- u3 ud4

Остаток u3 и двойное частное ud4 от деления udl на u2.

MAX nl n2 --- max LO

Наибольшее' из двух чисел.

MESSAGE n ---

Печать ?MSG # п.

MIN nl n2---min LO

Наименьшее из двух чисел.

MINUS nl---п2 LO

Перевод числа в двоичную дополнительную форму.

MOD nl n2---mod LO

Остаток от деления двух чисел. Знак тот же, который был
у nl.

NEXT

Применяется в ассемблере ФОРТа.

NFA addr --- addrl

Преобразует адрес поля параметров определения в адрес
поля имени.

NUMBER addr----d

Преобразует стринг, находящийся по указанному адресу, в

число двойной точности.

OR nl n2---n3 L0

Логическое ИЛИ.

OUT ---addr U

Переменная пользователя. Содержит величину, получающую
приращение по EMIT. Пользователь может изменять OUT для
управления форматом на экране.

OVER nl n2---nl n2 nl LO

Копирование второго значения на стеке на вершину стека.

PAD ---addr LO

Адрес выходного буфера текста. Он имеет фиксированное
смещение относительно HERE.

PAPER n ---

Управление цветом фона.

PERM ---

Устанавливает все временные цвета постоянными.

PLOT nl n2 ---

Печать точки в координатах nl, п2.

PFA addr---addrl

Преобразует адрес поля имени определения в адрес его
поля параметров.

QUERY

Ввод 80 символов текста (или до символа "возврат
каретки") с клавиатуры. Текст помещается в адрес,
содержащийся в TIE, при этом IN устанавливается в нуль.

QUIT

Очищает стек возврата, останавливает компиляцию,
передает управление на терминал оператора, никакое
сообщение не выдается.

R ---п

Копирует вершину стека возврата на вычислительный стек.

R # ---addr U

Переменная пользователя. Может содержать адрес курсора
или выполнять какую-либо другую функцию, связанную с
обработкой файлов.

R/W addr blk f ---

Команда стандарта ФИГ-ФОРТ. Предназначена для чтения/
записи в дисковой системе. addr указывает адрес блока
источника или назначения, blk - номер блока, a f - флаг.
Когда он равен нулю - запись, а когда единице - чтение.
Эта процедура определяет месторасположение блока на
внешнем носителе, выполняет чтение/запись и проверку
ошибок.

R> ---n LO

Снимает верхнее значение со стека возврата и переносит
на вершину вычислительного стека. См. также >R и R.

RO ---addr U

Переменная пользователя, содержащая начальное положение
стека возврата.

REPEAT Р,С2

Применяется в определениях и имее? форму:
BEGIN ... WHILE ... REPEAT

Во время рабочего прогона REPEAT форсирует безусловный
переход назад в точку после соответствующего BEGIN.

RSMUDGE

Выключение бита "smudge" последней словарной статьи.

ROT nl п2 пЗ---п2 пЗ nl LO

Ротация трех верхних значений на стеке. Третий параметр

становится первым.

RP!

Процедура инициализации указателя стека возврата.

S->D n---d

Преобразование числа одинарной точности в двойную.

SO ---addr U

Переменная пользователя, содержащая начальное значение
указателя стека.

SCR ---addr U

Переменная пользователя, содержащая номер экрана, к
которому обращались в последний раз по LIST.

SIGN n d---d LO

Хранит код знака "минус" перед выводимым числовым
стрингом в выходном текстовом буфере, если п
отрицательно.

SMUDGE

Служит для включения бита "smudge" в поле имени
определения. Это предотвращает отыскание незаконченных
определений во время поиска по словарю до тех пор, пока
компиляция не будет совершена без ошибок.

SP!

Процедура инициализации указателя стека.

SP@ ---addr

Адрес текущей вершины вычислительного стека.

SPASE L0

Выдает на выходное устройство символ "пробел".

SPACES n------L0

Выдает на выходное устройство п символов "пробел".

STATE ---addr U,LO

Переменная пользователя, содержащая статус компиляции.
Ненулевое значение означает компиляцию.

SWAP nl n2 --- n2 nl LO

Поменять местами два верхних значения на стеке.

TASK

Неисполнимое слово, обозначающее границу задачи.
Выполняя FORGET TASK можно полностью ликвидировать всю
задачу.

THEN Р,СО,L0

Аналог ENDIF.

TIE ---addr U

Переменная пользователя, содержащая адрес буфера ввода с
клавиатуры.

TOGGLE addr b ---

Дополняет содержимое адреса побитным изображением
байта Ь.

TRAVERSE addrl n --- addr 2

Обзор поля имени переменной длины, addrl - либо адрес
последней буквы имени, либо адрес, в котором содержится
длина имени. Если п=1, то рбзор выполняется вверх по
памяти, а если п=-1, то вниз. addr2 содержит адрес
другого конца имени.

TYPE addr n------LO

Передает заданное количество символов из указанного
адреса на назначенное устройство вывода.

U* ul u2---ud

Произведение двойной точности без знака двух целых без
знака.

U/ ud ul---u2 u3

Остаток и частное одинарной точности без знака от
деления числа двойной точности без знака на одинарное
целое без знака.

UNTIL f ---

Применяется в определениях и имеет форму BEGIN ... UNTIL.
Во время рабочего прогона UNTIL управляет условным
переходом к соответствующему BEGIN. Если значение f -
ЛОЖЬ, то вычисления передаются к точке непосредственно
за соответствующим BEGIN. Если "ИСТИНА", то вычисления
продолжаются дальше

USER n------L0

Определяющее слово. Применяется в форме: n USER сссс.
Создает новую переменную сссс. Поле параметров сссс
содержит п в качестве фиксированного смещения
относительно указателя регистра пользователя UP для этой
переменной. Позже, при исполнении сссс, на стек
помещается сумма смещения и базового адреса области
пользователя, что дает адрес по которому хранится данная
переменная.

VARIABLE Е,L0

Определяющее слово. Применяется в форме: n VARIABLE
сссс. При исполнении VARIABLE создается определение
сссс, поле параметров которого начинается с п. Когда
впоследствии исполняется сссс, адрес его поля параметров
(содержащий п) подается на стек с тем, чтобы можно было
использовать этот адрес при вызове или при выводе.

VOC-LINK ---addr U

Переменная пользователя, содержащая адрес поля в
определении последнего созданного словаря. Все имена
словарей увязаны через такие поля.

VOCABULARY Е,L0

Определяющее слово. Форма: VOCABULARY сссс. Создает
определение словаря сссс. Последующее использование сссс
делает словарь контекстным, который просматривается по
INTERPRET в первую очередь. Последовательность сссс
DEFINITIONS сделает сссс текущим словарем в который
помещаются все новые определения. В СПЕКТРУМ-ФОРТе сссс
включается таким образом, чтобы содержать все
определения словаря, в котором определено сссс. Все
словари, в свою очередь, увязываются в ФОРТом. По
соглашению все имена словарей должны объявляться как
IMMEDIATE. См. также VOC-LINK.

VLIST L0

Перечисляет все имена определений, имеющиеся в
контекстном словаре. Листинг может быть прерван через
BREAK.

WARNING

При работе не с дисковой системой должен быть нуль.

WHILE f------LO

Применяется в следующей форме: BEGIN ... WHILE ...
REPEAT

Во время рабочего прогона WHILE управляет условным
переходом в зависимости от состояния логической
переменной. Если она имеет значение ИСТИНА (не нуль), то
выполняются вычисления после WHILE до REPEAT, а затем
вычисления передаются к BEGIN. Если значение f - ЛОЖЬ,
то вычисления передаются к точке, находящейся после
REPEAT.

WIDTH

Максимальная длина слова в ФОРТе - 31 символ.

WORD с ---

Читает следующий символ входного текста до тех пор, пока
не будет найден разделитель 'с'. Текст запоминается в
виде упакованного символьного стринга в буфере словаря
HERE. WORD выдает счетчик символов в первых двух или
более пробелах. Если разделитель встречается как
ведущий, то он игнорируются. Если BLK - нуль, то текст
берется со входного буфера клавиатуры, в противном
случае - из блока, хранимого в BLK. См. BLK, IN.

XOR nl n2---пЗ L1

Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ.

{ Р, L1

Приостанавливает компиляцию. Переводит текстовый
интерпретатор в режим исполнения.

{COMPILE} Р,С

Скомпилировать следующее слово, независимо от признака
IMMEDIATE.

} , L1

Переключить текстовый интерпретатор в режим компиляции.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Чтиво - Рассказ Е.Нестеренко "Корона и кольцо" (часть 2)
DIY - Схема защиты компьютера от перенапряжения.
Interviews - Интервью с Jordan/Exodus, автором великолепных демок "Dies Irae", "Real Action".
TOP TEN - Десяточка лучших игр.
Учебник - Программирование в машинных кодах и на языке АССЕМБЛЕРА (часть первая).

В этот день...   18 апреля