Системные программы для ZX-Spectrum 1992 г.

FORTH - приложения. Слова системы FP50. Слова целочисленного "Форта". Распределение памяти в системе FP50.


ПРИЛОЖЕНИЕ 1

СЛОВА СИСТЕМЫ FP50

Команды операций с плавающей точкой

 

 

Состояние стека

 

Описание выполняемой операции

ДО операции

после операции

^

 

Вывод TOS на экран или принтер

 

х,у,5

 

х,у

 

 

 

Сложение TOS с 205 и помещение результата в стек

 

х,3,5

 

х,8

 

-

 

Вычитание TOS из 20S и помещение результата в стек

 

х.3,5

 

х,-2

 

*

 

Умножение TOS на 20S и помещение результата в стек

 

х,3,5

 

х,15

 

/

 

Деление 20S на TOS и помещение результата в стек

 

х,3,5

 

х,0

 

Стрелка вверх

 

Возведение 20S в степень TOS и помещение результата в стек

 

х,3,5

 

х,24

 

> 

 

Помещение 1 в стек, если 20S”TOS, иначе — 0.

 

х,3,5

 

х,0

 

< 

 

Помещение 1 в стек, если 20S”0, иначе — 0.

 

х,3,5

 

х,1

 

>=

 

Помещение 1 в стек, если 205” = TOS, иначе — 0.

 

х,4,4

 

х,1

 

<=

 

Помещение 1 в стек, если 20S“=TOS, иначе — 0.

 

х,5,4

 

х,0

 

о

 

Помещение 1 в стек, если 20S“”TOS, иначе — 0.

 

х,5,4

 

х,1

 

=

 

Помещение ) в стек, если 20S = TOS, иначе — 0.

 

х,3,5

 

х,0

 

 

Сохранить. При записи сразу после имени переменной осуществляется присвоение переменной значения TOS. Если TOS =4, то запись А! ; присвоит переменной 'А' значение 4.

 

х,у,4

 

х,У

 

@

 

При помещении сразу за именем переменной осуществляет присвоение TOS значения этой переменной. Например, если В = 0.8, то В@ ; присвоит TOS = 0.8

 

х,У

 

х,у.0.8

 

f

 

Чтение. Печатает значение переменной, имя которой сопровождает. Так, если С =-21, то С? ; выведет '-21 .

 

x,y,z

 

x,y,z

 

+!

 

Увеличение. Складывает значение TOS со значением переменной, имя которой • сопровождает. Если TOS =4 и А = 7, то А + ! ; выполнит А = 11.

 

х,у,4

 

х,У

 

1

Апостроф

 

Находит слово в словаре и помещает в TOS его компиляционный адрес, т.е. если этот адрес равен 44098, то ' ; . ; выдаст значение 44098.

 

х.У

 

х, у, 44098

 

0>

 

Помещает в стек 1, если TOS”0, иначе — 0.

 

х,у,4

 

х,у,1

 

0<

 

Помещает в стек 1, если TOS“0, иначе — 0.

 

х,у,4

 

х,у,0

 

0=

 

Помещает в стек 1, если TOS = 0, иначе — 0.

 

х,у,4

 

х,у,0

 

1+

 

Добавляет 1 к значению TOS и размещает его в TOS.

 

х,у,4

 

х,у,5

 

2+

 

Добавляет 2 к значению TOS и размещает его в TOS.

 

х,у,4

 

х,у,6

 

2-

 

Отнимает 2 от значения TOS и размещает его в TOS.

 

х,у,4

 

х,у,2

 

2TOCS

 

Передает 2 элемента стека данных в стек вычислений ('SP' используется стеком возврата).

 

x,y,z

 

х

 

79-STA

 

Печатает сообщение, описывающее FP50 как разновидность стандартного языка ФОРТ-79.

 

x,y,z

 

x,y,z

 

ABORT

 

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

 

x,y,z

 

-

 

ABS

 

Помещает в TOS его положительное значение.

 

х,у,-3

 

х,у,3

 

ACSD

 

Замещает TOS значением угла в градусах, COS которого равен TOS.

 

х,у,0.5

 

х,у,60

 

ACSR

 

Замещает TOS значением угла • радианах, COS которого равен TOS.

 

х,у,0.5

 

х,у,1.05

 

AND

 

Если и 20S и TOS”0, то происходит их замещение значением TOS, иначе — нулем.

 

х.2,-1

 

х,0

 

AT

 

Перемещает позицию печати на строку 20S в колонку TOS.

 

x.y.z

 

х

 

ATTR

 

Читает цветовые параметры знакоместа в строке 20S и колонке TOS, например, если 20S = 7. TOS = 3, а цветовой параметр знакоместа (7,3) равен 56, то ATTR сделает TOS z 56. Координаты должны быть целочисленными и не выходить за пределы экрана. Если же это произошло, то возвратит значение ближайшего знакоместа, равное 100.

 

х,7,3

 

х,56

 

ASND

 

Замещает TOS значением угла в

 

 

 

 

 

ASNR

 

Замещает TOS значением угла в радианах, SIN которого равен TOS.

 

 

 

 

 

ATND

 

Замещает TOS значением угла в градусах, TAN которого равен TOS.

 

 

 

 

 

ATNR

 

Замещает TOS значением угла в радианах, TAN которого равен TOS.

 

 

 

 

 

BLEEP

 

Воспроизводит ноту длительностью 20S единиц с высотой тона TOS. 20S и TOS должны быть целыми. Единичная длительность меняется в зависимости от высоты тона.

 

x,y,z

 

х

 

BRIGHT

 

Присваивает значение TOS параметру управления яркостью — 0 или 1. Используется перед командами печати

 

x,y,z

 

х,у

 

С®

 

Смотри раздел 8.2

 

 

 

 

 

С

 

Смотри раздел 8.2

 

 

 

 

 

С?

 

Смотри раздел 8.2

 

 

 

 

 

CDUMP

 

Смотри раздел 8.2

 

 

 

 

 

CIRCLE

 

Чертит окружность с центром в координатах 30S, 20S и радиусом TOS. Работает с целыми числами.

 

а,х,у

 

а

 

CL8

 

Чистит экран и перемещает позицию печати в верхний левый угол.

 

x,y,z

 

х.У

 

CMOVE

 

Смотри раздел 8.2

 

 

 

 

 

COSD

 

Заменяет TOS значением COS угла в градусах.

 

х,у,6

 

х,у,0.5

 

COSR

 

Заменяет TOS значением COS угла а радианах.

 

х,у,2

 

х,у,-0.416

 

COUNT

 

Смотри раздел 8.2

 

 

 

 

 

CR

 

Возврат каретки — перемещает позицию печати в начало следующей страницы.

 

x,y,z

 

x,y,z

 

CSTOD

 

Смотри раздел 8.2

 

 

 

 

 

DELETE

 

Смотри раздел 8.2

 

 

 

 

 

DEPTH

 

Выдает число элементов стека, записанных перед командой 'DEPTH . 7 — число записанных элементов стека.

 

x,y,z

 

x,y,z,7

 

DO

 

Команда управления циклом. Смотри раздел 5.13.

 

 

 

 

 

DRAW

 

последней нанесенной точки к точке, заданной координатами пикселя (20S,TOS). Работает с

 

x,y,z

 

х

 

DROP

 

Удаляет TOS.

 

х,у,г

 

Х,У

 

DUMP

 

Смотри раздел 8.2.

 

 

 

 

 

DUP

 

Копирует TOS так, что оно отображается в стеке дважды.

 

x,y,z

 

x,y,z,z

 

?DUP

 

Выполняет DUP, обеспечивая при этом дублирование TOS, если оно имеет ненулевое значение.

 

х,у,0

 

х,у,0

 

EMIT

 

Печатает символ, соответствующий коду в TOS,

255, то оно уменьшается по модулю 256, а если представлено не целым числом, то оно не будет воспринято.

 

х,у,2

 

х,У

 

ERASE

 

Смотри раздел 8.2.

 

 

 

 

 

EXECUT

 

Смотри раздел 8.2.

 

 

 

 

 

EXIT

 

от выполнения текущей команды или слова. Нельзя использовать внутри DO-циклов (см. 'EXITLP').

 

х.у.г

 

x,y,z

 

EXITLP

 

Выполняет функцию EXIT внутри DO-циклов.

 

x,y,z

 

Х,У,2

 

ESP

 

Замещает TOS значением 'Е" в степени TOS.

 

 

 

 

 

EXPECT

 

Смотри раздел 8.2.

 

 

 

 

 

FIELD

 

Перемещает позицию печати в

так же, как и запятая в командах печати БЕЙСИКА.

 

х,у,г

 

x,y,z

 

PILL

 

Смотри раздел 8.2.

 

 

 

 

 

FIND

 

Смотри раздел 8.2.

 

 

 

 

 

FLASH

 

Присваивает параметру управления мерцанием значение TOS, которое равно 0 или 1. Используется перед командами печати.

 

x,y,z

 

x,y,z

 

FLGST

 

Смотри раздел 8.2.

 

 

 

 

 

1

 

Индекс, управляющий самым внутренним циклом.

 

 

 

 

 

>IN

 

Помещает адрес систем.ной переменной, которая хранит смещение слова, в стек. ”IN C@; дает количество символов, прочитанных с помощью 'WORD' ранее (т.е. после последней команды 'QUERY').

 

X,ViZ

 

х, у,23681

 

INK

 

Присваивает параметру управления цветом чернил значение TOS (от 0 до 8). Используется перед командами печати.

 

x,y,z

 

х,У

 

INKEY

 

Помещает код ASCII клавиши, нажатой в данный момент, в TOS или 255, если не была нажата ни одна из клавиш. Пример: нажата клавиша 'А'.

 

x,y,z

 

x,y,z,65

 

INVERS

 

Присваивает параметру управления инверсией значение TOS (0 или 1). Используется перед командами печати.

 

x,y,z

 

х,У

 

J

 

Индекс следующего за самым внутренним циклом.

 

 

 

 

 

К

 

Индекс третьего по отношению к самому внутреннему циклу.

 

 

 

 

 

KEY

 

Ожидает нажатия какой-либо клавиши и затем помещает ее ASCII-код в стек. Если не нажата ни одна из клавиш, то содержимое стека не меняется.

 

x,y,z

 

Xiy,z

 

LEAVE

 

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

 

Х.У.2

 

x,y,z

 

LN

 

Заменяет TOS значением его натурального логарифма.

 

 

 

 

 

LOOP

 

Аналогична команде БЕЙСИКА •NEXT".

 

x,y,z

 

x,y,z

 

+LOOP

 

Задает шаг изменения индекса цикла равным TOS (TOS должен быть положительным).

 

x,y,z

 

х,У

 

-LOOP

 

Задает шаг изменения индекса цикла равным -TOS (TOS д.б. положительным).

 

x.y.z

 

х,У

 

MAX

 

Выбирает из стека два элемента. Возвращает в стек только большее их значение.

 

х,2,7

 

х.7

 

MIN

 

Выбирает из стека два элемента. Возвращает в стек только меньшее значение.

 

х,7,2

 

х,2

 

MOVE

 

Смотри раздел 8.2

 

 

 

 

 

NEGATE

 

Меняет знак TOS, т.е. умножает на -1.

 

х,у,6

 

х,у,-6

 

NOT

 

Выбирает TOS и заменяет его на 1, если TOS=0, и 0, если TOS^O

 

х,у,0

 

Х,У,1

 

NUMBER

 

Используется для выполнения подпрограмм. Смотри раздел 8.2

 

 

 

 

 

OR

 

Выбирает из стека два элемента и заменяет их значением TOS, если 20S=0 или 0, если 205^0.

 

х,3,-2 х,0,3 х.0,0

 

х,1 х,3 х,0

 

OVER

 

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

 

x,y,z

 

x,y,z,y

 

P@

 

Смотри раздел 8.2

 

 

 

 

 

P!

 

Смотри раздел 8.2

 

 

 

 

 

I PAD

 

Выдает в стек адрес области памяти, отмеченной как 'PAD' (символы в нее вводятся командой 'QUERY', а читаются командой 'WORD').

 

x,y,z

 

x, у,3288

 

PAPER

 

Присваивает параметру управления цветом бумаги ••• значения TOS (от 0 до 8). Используется перед командами печати.

 

x,y,z

 

х.У

 

PICK

 

Заменяет TOS значением элемента стека, номер которого находится в TOS, например, седьмым элементом стека является 4, следовательно, 2 PICK ; идентично слову 'OVER'.

 

3,4,5,7

 

3,4.5,4

 

PLOT

 

Наносит на экран пиксель с координатами (20S.TOS). Работает с целочисленными операндами.

 

x,y,z

 

X

 

POINT

 

Читает содержимое пикселя (20S,TOS) и выдает целочисленный результат — 0 — для бумаги, 1 — для чернил (PAPER и INK — соответственно). Работает только с целыми числами.

 

x,y,z

 

X

 

PROVER

 

Присваивает параметру управления 'OVER' значение TOS, равное 0 или 1. Используется перед командами печати.

 

x,y,z

 

х,У

 

PRSTRG

 

Выполняет подпрограммы. Смотри раздел 8.2.

 

 

 

 

 

QUERY

 

Воспринимает вводимые с клавиатуры символы и помещает их в область памяти 'PAD' (см. приложение 3; адреса 32883-33023 — область ввода символов по команде 'QUERY') пока не будет нажата клавиша 'ENTER'. При нажатии "ENTER" будет занесен код '13', что будет являться признаком конца данных. Максимальная длина строки знаков, вводимая по 'QUERY', равна 141 символу, после набора которых признак конца устанавливается автоматически. 'QUERY', кроме того, сбрасывает сдвиги, выполненные словом 'WORD' и хранящиеся в системной переменной по адресу 23681 (см. '”IN'). Область "PAD" читается с помощью слова 'WORD'.

 

x,y,z

 

x,y,z

 

QUIT

 

Возвращает компьютер в командный режим:*"*”-для FP50 и ###” — для ED50.

 

Х,У,2

 

x,y,z

 

R@

 

Смотри раздел 8.2

 

 

 

 

 

>R

 

Смотри раздел 8.2

 

 

 

 

 

R>

 

Смотри раздел 8.2

 

 

 

 

 

RND

 

Помещает а стек случайное число из диапазона О* = RND”!

 

x,y,z

 

х, у,0.707

 

ROLL

 

Удаляет из стека значение элемента с номером TOS и помещает его в вершину стека.

 

3,4,5,2

 

3,5,4

 

ROT

 

Переставляет три верхних элемента по часовой стрелке.

 

x,y,z

 

y,z,x

 

SIND

 

Замещает TOS значением SIN угла в градусах.

 

х,у,30

 

x,y,0.5

 

SINR

 

Замещает TOS значением SIN угла в радианах.

 

х,У,2

 

х, у,0.909

 

SGN

 

Замещает TOS единицей, если TOS”0, -1, если TOS“0, и 0 — если TOS =0.

 

х,у,-3

 

хх, у,-1

 

SPACE

 

Перемещает позицию печати на один символ вправо или на начало новой строки.

 

x,y,z

 

х.у

 

SPACES

 

Перемещает начало печати на количество символов, заданных в TOS. TOS ие может быть равен 0, превышать значение 256 и должен быть целым числом.

 

x,y,z

 

х,У

 

SPTOCS

 

Смотри раздел 8.2

 

 

 

 

 

SQR

 

Замещает TOS его квадратным корнем /

 

х,у,2

 

х,у,1.41

 

STKSWP

 

Смотри раздел 8.2

 

 

 

 

 

SWAP

 

Меняет местами значения 20S и TOS.

 

x,y,z

 

x,z,y

 

TAB

 

Перемещает позицию печати в колонку с номером TOS.

 

x,y,z

 

Х,У

 

TAND

 

Замещает TOS значением тангенса угла в градусах.

 

х,у,45

 

х,у,1

 

TANR

 

Замещает TOS значением тангенса угла в радианах.

 

х,у,1

 

х,у,1.55

 

-TRAIL

 

Смотри раздел 8.2

 

 

 

 

 

TYPE

 

Смотри раздел 8.2

 

 

 

 

 

VLIST

 

Отображает на экране слова и подпрограммы, размещенные в словаре FP50. При появлении мерцающего квадрата с запросом на свертку нажмите клавишу 'Y"

 

x,y,z

 

x,y,z

 

WAIT

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

x,y,z

x,y,z

WORD

 

Читается один символ, введенный по 'QUERY' в 'PAD'-область и помещает его в TOS. Чтение происходит по направлению к началу области 'PAD'. Смещение при этом фиксируется в системной переменной по адресу 23681.Смотри -QUERY', -PAD-, и '”IN'.EcnH, например, следующий читаемый символ 'В', то:

 

Х,У,2

 

х,у,6б

 

WRDSCH

 

Для выполнения подпрограмм см. раздел 8.2.

 

 

 

 

 

А,В,С... Y,Z (кроме U,K)

 

23 переменных в исходном состоянии равны 0.

 

 

 

 

 

 

Команды, приведенные ниже, работают аналогично словам языка ФОРТ, но в действительности словами не являются и, следовательно, в словаре не отображаются:

: — префикс ':' используется для описания новых слов;

; — метка окончания команды;

клавиша SPACE — разделитель слов;

!  Е — (строчная) для загрузки ED50 из FP50;

F — (строчная) для удаления слов из словаря; смотри раздел 5.5;

proff — (строчные буквы) подключение принтера;

PRON — (строчные буквы) отключение принтера;

RET — (строчные буквы) для загрузки FP50 из ED50;

S — (строчная) запись на ленту;

Z — (строчная) копирование содержимого экрана на принтер.

 

ПРИЛОЖЕНИЕ 2

СЛОВА ЦЕЛОЧИСЛЕННОГО ФОРТА

Слова, не имеющие пояснения, выполняют функции аналогичных слов (без знака %), описанных в приложении 1.

%.

%+

%-

%*

%/

%>

%<

%=

%>=

%<=

%<>

%!

%(§>

%+! кроме того, что 65536 %+! приведет к вычитанию.

%0=

%1+

%1-

%2+

%2-

%AND

%DO

%DUMP

% FIELD перемещает позицию вывода в следующее знакоместо. С принтером не работает.

%LEAVE

%+LOOP

%MIN

%МАХ

%MOD выдает остаток от деления. Например, запись: 13 4

%MOD ; поместит в TOS значение 1. %/MOD поместит целую часть частного от деления в TOS, а остаток в 20S. Так, после выполнения команды:

13 4 %/MOD ;

TOS“3, 20S-1.

%MOVE

%NOT

%OR

%XOR если один из элементов TOS или 20S больше 0, а

другой нет (т.е. равен 0), то происходит выбор из стека этих двух элементов, а в TOS помещается значение, большее 0. Иначе (т.е.

Ьба элемента равны 0 либо больше 0) — оба элемента удаляются из стека, а TOS становится равным 0. Примеры:

' 4 7 %XOR .     выдаст 0 ,  4 0 %XOR .     выдаст 4 ',  0 0 %XOR .     выдаст 0. r %1 переменная управления циклом (смотри раздел 6.6). 1  exit%l это единственное слово целочисленного ФОРТА, перед которымвнет символа %. Оно является аналогом слова 'EXITLP' из приложения 1.


ПРИЛОЖЕНИЕ 3

РАСПРЕДЕЛЕНИЕ ПАМЯТИ В СРЕДЕ FP50

АДРЕСА

 

ФУНКЦИИ

 

0 – 16383

 

ПЗУ (ROM)

 

16384 - 23295

 

Экранная область

 

23296 - 23546

 

Буфер

 

23547 - 23733

 

Системные переменные

 

23734 - 32767

 

Бейсик-программа и стек данных

 

32768 - 32882

 

Переменные (23"5 байт)

 

32883 - 33023

 

Область 'PAD'

 

33024 - 33791

 

Символы (96"8 байт)

 

33792 - 44031

 

Словарь

 

44032 - 65367

 

Область размещения подпрограмм (слов) и стек возврата

 

65368 - 65536

 

Графические символы, определяемые пользователем (UOG)

 

 




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
ZXNet - О почтовой системе в Internet.
Вступление - содержание номера.
Авторы - Об авторах.
Вступление - пара слов о новом номере газеты.
От pедакции - газета ждет помощи читателей.

В этот день...   23 ноября