Справочник по системным программам для компьютера ZX Spectrum 1991 г.

Описание HISOFT PASCAL - особенности применения HISOFT PASCAL.


Особенности применения HISOFT PASCAL на ZX-SPECTRUM.
Загрузка НР4ТМ с ленты.

PASCAL загружается LOAD"" и после удачной загрузки запу-
скается автоматически.

Применение на SPECTRUM.

ZX-SPECTRUM необычный компьютер и, естественно, это от-
разилось на использовании HISOFT PASCAL.

Различные управляющие коды, описанные ранее, в ZX-
SPECTRUM имеют следующие значения:
RETURN ENTER
СС CAPS SHIFT+1

СН DELETE или CAPS SHIFT + О

CI CAPS SHIFT + 8

CP CAPS SHIFT + 3 - текст на принтер

CX CAPS SHIFT + 5

CS CAPS SHIFT + SPACE

Схема ввода с клавиатуры ZX-SPECTRUM необычная, т.к. со-
держит только алфавитно-цифровые коды. Используя SYMBOL
SHIFT + любую клавишу (кроме I) можно получить другие символы:
SYMBOL SHIFT + Т даст ", a SYMBOL SHIFT + G даст ".

Внимание!!!! Вы не должны использовать единые символы
<=, <>, >=. Вместо них необходимо применять комбинации символов

<, >, =♦

Редактор переводится в режим ввода с верхнего регистра исполь-
зованием CAPS SHIFT + 2.

Вы можете управлять некоторыми атрибутами различных пози-
ций экрана, используя стандартные управляющие коды (так
WRITE(CHR( 17), CHR(4) сделает лист (PAPER) экрана зеленым).
Но Вы не можете изменить атрибуты окраски. Если во время исполь-
зования управляющих кодов обнаружится недопустимый, будет вы-
свечено сообщение 'SYSTEM CALL ERROR' и выполнение
прекратится. Помните, что любой управляющий код интерпретиру-
ется PASCAL (так CHR(8) воспринимается как DELETE) и не могут
быть прямо посланы в SPECTRUM ROM - используйте процедуру
SPOUT, если Вы хотите напечатать CHR код без интерпретации
PASCAL.

При записи текста или объектного кода на ленту сначала вклю-
чите ваш магнитофон в режим записи, а затем производите процеду-
ру.

Если Вы использовали команду транслирования 'Т' сохраните
объектный код на ленте, а потом загрузите программу командой
LOAD""CODE из BASIC. Для запуска программы используйте
RANDOMISE USR 24608 из BASIC.

Из ZX-BASIC Вы можете перезапустить редакторРА8САЕ од-
ним из методов: введите RANDOMIZE USR 24603 для старта с сохра-
нением PASCAL программы или введите RANDOMIZE USR 24598
для реинициализации PASCAL и очистки существующего текста.

ZX PRINTER используется компилятором в 'Р' операции (см.
разд. 3.2), а также через CHR(15) в WRITE или WRITELN операто-
рах. Поэтому помните, что Вы не можете использовать CHR(15) в
WRITE(LN) для изменения цвета INK - вместо этого используйте
CHR(15).

Большинство параллельных интерфейсов для принтера поддер-
живаются HISOFT PASCAL поскольку обращение к принтеру произ-
водится прямо через течение; особенно хорошо работают интерфейсы
KEMPSTON и MOREX.

Любой вариант в BASIC из PASCAL вызывает паузу-нажатие
любой клавиши приведет к возврату в BASIC. Возврат в BASIC сопро-
вождается очисткой экрана.

Дополнительные команды добавлены в редактор в PASCAL из
ZXSPECTRUM; это команда 'W', которая работает как 'Р' команда,
только она записывает блок текста на ленту в формате, удобном для
дальнейшего использования (через команду компилятора 'SF'). По-
мните, что Вы не можете 'включить' текст, если он был записан на
ленту, используя 'Р' команду. Если Вы хотите включить текст, ис-
пользуйте команду 'W'.

Сделать копию НР4ТМ16 на ленте можно следующим образом:

1. Загрузите НР4ТМ16 и ответьте на вопросы вначале.

2. Возвратитесь в BASIC используя команду редактора 'В'
и дважды нажав ENTER.

3. Наберите SAVE "НР4ТМ16" CODE 24598, 19736 для
сохранения на ленте.

4. Вы можете использовать LOAD "" CODE для перегрузки
компилятора, но при этом Вы должны применить
RANDOMIZE USR 24598. (старт с очисткой) и
RANDOMIZE USR 24603 для старта с сохранением
PASCAL программы.

Помните: HISOFT дает право сделать только одну рабочую ко-
пию.

Некоторые PASCAL - программы.

Музыка и графика в HISOFT PASCAL на ZX SPECTRUM.

Эта глава дает детальное описание музыкальных и графических
возможностей PASCAL процедур.

1. Музыка

Следующие две процедуры производят звук в HISOFT PASCAL
(эта процедура использует машинные коды и обращается к програм-
ме ВЕЕР в ПЗУ).

PROCEDURE BEEPER (A, B:INTEGER);
BEGIN

INLINE (#D0,#6E,2,#00,#66,3 (LD L, (IX+2):LD H, (IX+3))
#D0,#5E,4,#00,#56,5, (LD E, (IX+2):LD D, (IX+5))
#CD,#85,3,#F3) (CALL #385:DI)

END;

(Эта процедура преобразует частоту 0 в равную по длительности
паузу. Для нулевой частоты частота и длительность ноты преобразу-
ются в необходимые величины для SPECTRUM ROM программы и
выполняются через вызов BEEPER ).

PROCEDURE ВЕЕР (FREQUENCY:INTEGER;LENGHT:REAL);

VAR LINTEGER;

BEGIN

IF FREQUENCY=0 THEN FOR I:-l

TO ENTIER (1200*LENGTH) DO
ELSE BEEPER (ENTIER (FREQUENCY*LENGHT),
ENTIER (437500/FREQUENCY-30.125));
FOR I:=l TO 100 DO (небольшая задержка между нотами)
END;

Пример использования ВЕЕР:
ВЕЕР (262,05);

ВЕЕР (0,1); (звук 'средняя СИ' длительность 0.5 сек.

после секундной паузы)

2. Графика.

Далее представлены три процедуры: первая отрабатывает за-
данную (X, Y) координату, а вторая и третья используются для того,
чтобы нарисовать линию от текущей отработанной позиции до новой
позиции, которая задается относительно текущей и станет новой
текущей позицией.

Оба оператора PLOT и LINE берут булевы (BOOLEAN) пере-
менные. ON, если TRUE, вызывает рисование точки вне зависимости
от состояния данной точки, а если он FALSE, то вызывает гашение
точки, если она засвечена, и засветку, если она погашена. Этот эф-
фект идентичен вызываемому командой OVER в BASIC.

(Процедура, которая отражает BASIC оператор PLOT. Просто
отрабатывается позиция X, Y; ON или OFF зависит от первого пара-
метра (TRUE или FALSE)).

PROCEDURE PLOT (ON:BOOLEAN;X,Y:INTEGER);
BEGIN

IF ON THEN WRITE (CHR(21),CHR(0))
ELSE WRITE (CHR(21),CHR(1));

INLINE(#FD,#21,#3A,#5C, (LD IY,#5C3A)

#D0,#46,2,#D0,#4E,4, (LD B,(IX+2):LD C,(IX+1))
#CD,#E5,#22); CALL#22ES;ROM PLOT ROUTENE)

END;

(Вызывается LINE процедурой, LINE1 используется для пере-
сылки правильного аргумента программе DRAW в SPECTRUM
ROM).

PROCEDURE LINE1 (X,Y,SX,SY:INTEGER);
BEGIN

INLINE (#FD,#21,#3A,#5C, (LD IY,#5C3A)

#D0,#56,2,#D0,#5E,4, (LD D,(IX+2):LD E,(IX+4))
#D0,#46,6,#D0,#4E,8, (LD B,(IX+6):LD C,(IX+8))
#CD,#8A,#24) (CALL #248A; программа DRAW)

END;

(LINE рисует линию от текущей позиции (X, Y) до (Х+Х, Y+Y).
Линия может быть 'ON' или 'OFF' в зависимости от значения

BOOLEAN параметра ON).

t

PROCEDURE LINE (ON:BOOLEAN;X,Y:INTEGER);
VAR

SCNX,SCNY:INTEGER;
BEGIN

IF ON THEN WRITE (CHR(21),CHR(0))
IF ON THEN WRITE (CHR(21),CHR(1))
IF X THEN SCNX:=-1 ELSE SCNX:=1; (ПРОГРАММА DRAW

которая)

IF Y THEN SCNX:=-1 ELSE SCNX:=1; (ВЫЗЫВАЕТСЯ из LINE1

требует абсолютных величин X и Y,
ТАКЖЕ их знаков.)
LINE1 (ABS(X),ABS(Y),SCNX,SCNY) (нарисоватьлинию)
END;

Пример пользования PLOT и UNE
PLOT (ON,50,50);

LINE (ON, 100,-50); (рисуют линию от (50,50) до (150,0).)
3. Вывод через ПЗУ

Бывают случаи, когда полезно делать вывод прямо через ПЗУ,
используя программу RST #10 вместо использования WRITE (LN).
Например, когда используется PRINT AT управляющий код. Этот
код должен следовать за двумя 8-битными величинами, дающими
(X,Y) координаты позиции, в которой нужно напечатать. Однако,
если это делать инструкцией WRITE, то величины X, Y (т.к. интерп-
ретируется PASCAL как BACKSPACE) не будут посланы в ПЗУ и
позиция будет вычислена неправильно.

Вы можете преодолеть эту проблему используя процедуру:
(SPOUT выводит символ прямо через программу ПЗУ RST #10)

PROCEDURE SPOUT (C.CHAR);
BEGIN

INLINE (#FD,#21 ,#3A,#5C, (LD IY,#5C3A)
#D0,#7E,#2, (LD A, (IX+2))

#D7) (RST #10)

END;

Пример использования SPOUT;

SPOUT (CHR(22)); SPOUT (CHR(8)); SPOUT (CHR(13));
(устанавливает позици^о печати в строке 8, колонке 13)
HISOFT PASCAL GRAPHICS для ZX-SPECTRUM
HISOFT PASCAL комплектуется графическим пакетом LOGO
TURTLE GRAPHICS.

Пакет написан на PASCAL и может быть загружен из редактора,
используя команду 'G TURTLE'. Это вызовет загрузку сегмента гра-
фической программы и соединение ее с существующей. Помните, что
для нормальной работы графики ей должен предшествовать заголо-
вок PROGRAM и объявлены переменные. TURTLE создает вообра-
жаемое существо на экране, которое пользователь может передвигать
с помощью некоторых простых команд. Эту 'черепашку' можно за-
ставить оставить след (разных цветов) или сделать невидимой. Заго-
ловок и положение 'черепашки' содержится в глобальных
переменных, которые корректируются, когда существо движется или
поворачивается. Эти переменные могут быть проверены или измене-
ны в любое время.

Имеются следующие возможности:

Глобальные переменные.

Заголовок (HEADING) используется, чтобы зафиксировать
значение угла направления, куда в настоящее время смотрит 'чере-
пашка'. Оно содержит любое действительное число в градусах и мо-
жет быть инициализировано от нуля с помощью процедуры
'TURTLE'. Значение 0 соответствует восточному направлению, так
что при вызове процедуры 'TURTLE' черепашка смотрит слева на-
право. При увеличении заголовка черепашка начинает поворачи-
ваться против часовой стрелки.

XCOR,YCOR

Являются текущими /X, Y/ действительными координатами
черепашки на экране. Экран графики имеет размер 256*176 точек и
черепашка может быть расположена в любой точке этого пространст-
ва. Если предпринимаются попытки выдвинуть черепашку из этой
сетки, появляется надпись 'OUT OF LIMITS' и программа будет
прервана надписью 'HALT'. Первоначальные значения XCOR и
YCOR неопределены, используйте процедуру TURTLE для инициа-
лизации их к 127 и 87 соответственно, таким образом располагая
черепашку посередине ее 'бассейна'.

Положение пера (PENSTATUS).

Переменная содержит текущее положение пера (след, оставлен-
ный черепашкой). О означает вниз, 1 - вверх.

Процедуры.

Процедуры PLOT, LINE, SPOU в данный пакет включены как
стандартные. Единственное существенное отличие состоит в том, что
LINE вызывает процедуру CHECK, которая проверяет, что коорди-
наты XCOR, YCOR не могут выйти за границу. Другие возможные
процедуры следующие:

INK (C:INTEGER)

Берется целое число от 0 до 8 включительно и устанавливает
цвет света черепашки.

PAPER (C:INTEGER)

Устанавливает цвет поля экрана в соответствии с параметром С,
который является целым числом от 0 до 8.

COPY

Используется для передачи полной графической страницы на
принтер.

PENDOWN (C.INTEGER)

Устанавливает черепашку в положение, что она оставляет цвет
света в соответствии с параметром С. Эта процедура обращает в О
PENSTATUS.

PENUP

После вызова этой процедуры черепашка не будет оставлять
след. PENUP присваивает PENSTATUS.

SETHD (A:REAL)

Берет REAL параметр, который присваивает глобальной пере-
менной HEADING, таким образом устанавливает направление, в
которое указывает черепашка. Помните, что заголовок 0 соответст-
вует востоку, 90 северу, 180 западу и 270 югу.

SETXY (X, Y:REAL)

Устанавливает абсолютное положение черепашки в графиче-
ском поле значениями X, Y. Эта процедура не проводит проверку
вышли ли X, Y за пределы. Это функция процедуры LINE.

FWD (L:REAL)

Передвигает черепашку на L единиц в направлении следования.
1 соответствует графической точке, округленной в меньшую или
большую сторону, если необходимо.

BACK (L:REAL)

Передвигает черепашку в направлении противоположном ее
расположению (т.е. на 180), не меняя положения.

TURN (A:REAL)

Изменяет направление черепашки на 'А' градусов, не передви-
гая ее. Направление меняется против часовой стрелки.

VECTOR (A, LrREAL)

Смещает положение черепашки на L единиц в направлении 'А'.
После перемещения направление черепашки остается 'А'.

RIGHT (A.REAL)

В отличие от TURN меняет направление по часовой стрелке на
'А' градусов.

LEFT (A:REAL)

Идентично TURN и проводится для удобства в сравнении с
RIGHT.

ARCR (R:REAL, A:INTEGER)

Черепашка движется по дуге окружности радиусом R. Длина
дуги определяется 'А', угол поворота по часовой стрелке. Обычно R
может быть установлено 0.5.

TURTLE

Эта процедура просто устанавливает черепашку в первоначаль-
ное положение, располагая ее в центре экрана 'лицом' к востоку (
заголовок 0) на голубом поле и оставляет желтый свет. Помните, что
такое положение черепашки не определено изначально, так что эта
процедура часто используется в начале программы.

Примеры программ:

Загрузите PASCAL и воспользуйтесь G TURTLE для загрузки
графического пакета, который начинается со строки 10 и заканчива-
ется строкой 1350. Теперь приступайте к примеру.

1. Окружности:

1 PROGRAMM CIRCLES;

2 VAR I:INTEGER;
1360 BEGIN

1370 TURTLE;

1380 FOR I:=l TO 9 DO

1390 BEGIN

1400 ARCR (0.5,360);

1410 RIGHT 40;

1420 END

1430 END

2. Спирали (ПЗС)

1 PROGRAM SPIRALS;

2 VAR

1360 PROCEDURE SPIRALS (L,A:REAL);

1370 BEGIN

1380 FWD(L);

1390 RIGHT (A);

1400 SPIRALS (L+1,A)

1410 END;

1420 BEGIN

1430 TURTLE;

1440 SPIRALS (9,95) (или (9,90) или (9,121)...)
1450 END

3. Цветок

1 PROGRAMM FLOWER;

2 VAR

1360 PROCEDURE PETAL (S:REAL);

1370 BEGIN

1380 ARCR (S,60);

1390 LEFT (120);

1400 ARCR (S,60);

1410 LEFT (120);

1420 END;

1430 PROCEDURE FLOWER (S: REAL);

1440 VAR I:INTEGER;

1450 BEGIN

1460 FOR I:=l TO 6 DO

1470 BEGIN

1480 PETAL (S);

1490 RIGHT (60);

1500 END

1510 END;

1520 BEGIN TURTLE;
1530 SETXY (127,60);
1540 LEFT (90);FWD (10);
1550 RIGHT (60); PETAL (0.2);
1560 LEFT (60); PETAL (0.2);
1570 SETHD (90); FWD (40);
1580 FLOWER (0.4);

1590 END._

■ QUICK SAVE

Этот копировщик предоставляет великолепную возможность
создавать на лентах программы, время загрузки которых по сравне-
нию с обычными уменьшено в 2-3 раза, не требуя никаких доработок
SPECTRUM-a или подгрузки дополнительных программ.

Копировщик выполняет следующие команды:

L - (LOAD) - загрузка программных блоков в память (до 41 К);
Q - (QUICKSAVE) - выгрузка всего содержимого памяти на
ленту с повышенной скоростью (выгрузка выполняется сразу после
нажатия клавиши "Q");

С - (CLEAR) - очистка всей памяти копировщика;
В - (BASIC) - выход из копировщика;
R - (RATE) - изменение скорости выгрузки.

Для прерывания работы копировщика используется клавиша
"SPACE".

Программа, сброшенная на ленту с помощью копировщика
QUICK SAVE, загружается для исполнения обычным способом с по-
мощью команды BASIC-a

LOAD мм,

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

Внимание! Для обеспечения надежной работы программы
используйте магнитофон и магнитные ленты высокого качества.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Party - Complex Compo.
INTRO - выход ПОСЛЕДНЕГО номера KrNews.
Проба пера - Приключения Винни Пуха часть 2.
Анекдоты - 14 анекдотов.
Тусовка - Ну что, пока никто не звонит, может спят?

В этот день...   29 марта