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

Описание HISOFT PASCAL - язык программирования PASCAL.


■ HISOFT PASCAL

1. Введение

1.1. Запуск PASCAL

HISOFT PASCAL является наиболее удачной версией стандар-
тного языка программирования PASCAL. HISOFT PASCAL имеет
мощные средства, дающие возможность писать хорошо структуриро-
ванные и легко понимаемые программы. Однако, как и любой другой
язык программирования, он потребует от вас время на понимание
HISOFT PASCAL (HP). Настоятельно рекомендуем воспользоваться
следующим планом изучения языка на начальном этапе:

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

- прочитать руководство к вашему компьютеру;

- прочитать раздел "Редактор" (Раздел 2) настоящего руковод-
ства и попробовать примеры в конце раздела;

- следующий шаг делайте только после того, как уверенно овла-
деете редактором и компилированием/запуском PASCAL - про-
грамм.

Некоторые основные замечания по PASCAL:

Тип "FILE" не реализован, хотя переменные могут быть сохра-
нены на ленте.

Тип "RECORD" не может содержать вариантные поля.

Процедуры и функции не могут являться формальными пара-
метрами.

Некоторые функции и процедуры зависят от конкретной моди-
фикации компьютера, среди них POKE, PEEK, TIN, TOUT и ADDR.

Компилятор занимает около 12К, в то время как при запуске
программы используется дополнительно 4К, и редактор занимает 2К.
Таким образом, общий размер пакета около 19К, оставшаяся часть
памяти использована под PASCAL-программы.

PASCAL использует различные управляющие коды, вводимые с
клавиатуры, в большинстве случаев из редактора. Конечно, различ-
ные системы могут иметь разные клавиатуры и методы генерирова-
ния управляющих кодов. Используемые в данном руководстве
управляющие функции могут быть получены как ENTER, СС, СН,
CI, CP, CS и СХ.

Когда HP ждет ввода, управляющие коды используются следу-
ющим образом:

ENTER - используется для ввода строки

СС - возврат в редактор

СН - удаление последнего напечатанного символа .

CI - табуляция

CP - прямой выход на принтер (если подключен)

или возврат на экран

СХ - удаление строки

HISOFT PASCAL загружается в компьютер командой LOAD"".

После успешной загрузки автоматически появляется сообще-
ние:

TOP OF RAM?

Вам следует ответить либо вводом положительного десятичного
числа до 65536 (с последующим нажатием ENTER), либо просто
ENTER.

Если Вы ввели номер, то он будет использоваться как наивысшая
позиция ОЗУ + 1, иначе эта величина будет вычислена автоматиче-
ски.Стек компилятора будет установлен равным этой величине и
таким образом Вы можете зарезервировать на вершине памяти об-
ласть вводом величины меньше, чем действительная вершина ОЗУ.

ZX-SPECTRUM версии HISOFT PASCAL "правильная" верши-
на ОЗУ берется равной началу области, отводимой под пользователь-
скую графику (UDG - по руководству к SINCLAIR). Сейчас на экране
появилось сообщение:

TOP OF RAM FOR "Т"

Здесь Вы можете ввести десятичное число. То, что Вы введете,
будет использовано как стек, когда результирующий объектный код
будет получен после использования команды "Т" редактора (см. Разд.
4). Вам необходимо назначить стек, используемый работающей про-
граммой, отличным от вершины ОЗУ. Если, например, у вас написано
расширение для выполняемой программы и Вы хотите сохранить его
в верхней области ОЗУ.

В конце появится сообщение:

TABLE SIZE?

То, что введете сейчас, определит построение памяти под табли-
цу (с последующим нажатием ENTER) или просто ENTER.

Если Вы ввели ENTER, то вычисленная величина (свободная
ОЗУ деленная на 16) будет установлена в качестве размера таблицы.
Во многих случаях вычисленная величина резервирует более чем
достаточно пространства под символы.

С этого момента компилятор и редактор будут перемещены в
конец таблицы и управление будет передано редактору.

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

Загрузите PASCAL в ваш компьютер. Нажмите ENTER в ответ
на все три вопроса (TOP OF RAM, TOP OF RAM FOR "T" и TABLE
SIZE). Сейчас редактор находится в режиме ожидания, оповещая об
этом символом "" в начале строки. Введите:

110, 10<ENTER>

Сейчас же появится цифра 10. Это номер и то, что Вы напечата-
ете, введется в текстовый файл PASCAL как строка 10. Нажатием
ENTER можно ввести строку и появится цифра 20 и т.д.

Вы можете таким образом продолжать вводить текст (нумера-
ция будет изменяться автоматически) до тех пор, пока не введется
специальный СС код. В ZX SPECTRUM этот код - CAPS SHIFT+1.

Итак, наберите следующую программу, помня о том, что Вы не
должны набирать номер строки:,

10 PROGRAMM HELLO;

20 BEGIN

30 WRITEELN ("HELLO WORD");

40 END.

Нажмите CAPS SHIFT+1.

Откомпилируйте программу, набрав:

С <ENTER>

При этом появится листинг программы с некоторыми номерами
в начале - это листинг компилятора. Если программа откомпилиро-
вана без ошибок, появится сообщение "RUN?"; ответив Y Вы запусти-
те программу и будет напечатано:

HELLO WORD

и произойдет возврат в редактор. Вы можете запустить програм-
му снова набрав:

R<ENTER>

Если программа откомпилирована с ошибками, появится сооб-
щение "ERROR". Наберите

Е <ENTER>

L<ENTER>

Для распечатки программы и сравните ее с данной выше. Если
Вы заметили ошибку в какой-нибудь линии, просто наберите номер
этой линии, затем SPACE и правильный текст, после чего нажмите
ENTER.

1.2. Как работать с руководством.

Целью данного руководства не является обучение языку
PASCAL. Для этого существуют более серьезные книги. Это руковод-
ство является справочным документом, детализирующим особенно-
сти HISOFT PASCAL.

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

С особым вниманием рекомендуем изучать приложения:
Приложение 1. Детально описывает сообщение об ошибках,

генерируемых компилятором и исполняющей
системой.

Приложение 2. Перечисляет предопределенные идентификаторы

и зарезервированные слова.
Приложение 3. Дает детальное описание о представлении данных

в PASCAL и очень полезно для программистов,
которые хотят лучше разобраться.
Приложение 4. Дает несколько примеров PASCAL-программ

на случай, если Вы испытываете трудности в
написании программ.

1.3. Компирование и запуск.

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

Когда компилятор требует помощи, он генерирует сообщение в
следующей форме:

#### ПППП - текст строки

где:

#### - адрес начала расположения кода, генерируемого этой
линией.

ПППП - номер строки, содержащей ошибку.

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

Если требуется, этот листинг может быть выведен на принтер
использованием команды Р (разд. 3).

Вы можете остановить листинг нажатием CS; для возврата в
редактор используйте СС; продолжить листинг можно нажатием лю-
бой клавиши.

Если во время компиляции будет обнаружена ошибка, то поя-
вится сообщение *ERROR*, знак 7\ указывающий на позицию
после симвлола, вызвавшего ошибку и номер ошибки (пр. 1). Листинг
остановится; нажмите "Е" для возврата в редактор для того чтобы
отредактировать высвечиваемую линию или "Р" для редактирования
предыдущей линии (если она есть) или любую другую клавишу для
продолжения компиляции.

Если программа заканчивается некорректно (т.е. без END) по-
явится сообщение "NO MORE TEXT" (текста больше нет) и управле-
ние будет передано редактору.

Если редактор выйдет за границы табдицы, то появится сообще-
ние "NO TABLE SPACE" (нет места в таблице) и управление будет
передано редактору. В этом случае программист должен сохранить
программу на ленте, перегрузить компилятор и задать большие раз-
меры таблицы "TABLE SIZE" (Разд. 1.1).

Если компиляция закончилась корректно, но содержит ошибки
- появятся сообщения об ошибках и объектный код будет уничтожен.
Если компиляция прошла успешно, то появится "RUN?", если Вы
желаете запустить программу немедленно, нажмите "Y"; в против-
ном случае управление будет передано редактору.

В процессе работы программы могут появиться ошибки испол-
нения ( см. Приложение 1). Вы можете приостановить выполнение,
используя CS; прервать, воспользовавшись СС и продолжить, нажав
любую другую клавишу.

2. Редактор.

2.1. Введение в редактор.

Редактор, которыми оснащены все версии HISOFT PASCAL -
простой строчный редактор, предназначенный для работы со всеми
операционными системами, построенными на Z80, дающий возмож-
ность быстро и эффективно редактировать программы.

Текст хранится в памяти в компактной форме. Зарезервирован-
ные слова PASCAL обозначаются одним символом. Это позволяет
сократить объем текста на 25 %.

Примечание: В этом разделе клавиша "DELETE" использует-
ся вместо управляющего кода СН, т.к. это удобно для понимания.

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

Командная строка имеет следующий формат:

С N1,N2,S1,S2

После чего необходимо нажать ENTER, где
С - выполняемая команда (раздел 4.2)
N1 - число в диапозоне от 1 до 32767 включительно
N2 - число в диапозоне от 1 до 32767 включительно

51 - строка символов максимальной длины 20

52 - строка символов максимальной длины 20

Запятая используется для разделения различных аргументов
(хотя ее можно заменить - смотри команду "S"), пробелы игнориру-
ются за исключением пробелов внутри строк символов, ни один из
аргументов не является обязательным, хотя некоторые команды
(НАПРИМЕР 'D'ELETE) не выполняется без указания N1,N2. Ре-
дактор помнит предыдущие числа и строки, которые Вы ввели и
использует эти первые значения, где возможно, если не задан конк-
ретный аргумент внутри строки команды. Значение N1, N2 обычно
устанавливает равными 10 и строки вначале пустые. Если Вы ввели
неправильную команду, например

F-1, 100, HELLO
Команда будет игнорирована и появится сообщение

"PARDON?"

и вам необходимо ввести правильную строку
F1, 100, HELLO

Это же сообщение появится, если длина S2 превышает 20; если
S1 длиннее 20, то любой избыточный символ игнорируется.

Команды могут вводится в верхнем или нижнем регистре.

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

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

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

2.2. Команды редактора

2.2.1. Ввод текста.

Текст может быть вставлен в тектстовый файл или печатая
номер строки, пробел, а затем требуемый текст или используя коман-
ду I. Примечание: если Вы ввели номер строки, а затем ENTER, то
строка с таким номером (если она существует) будет уничтожена. В
любой момент ввода текста можно использовать управляющие сим-
волы СХ (стереть до начала строки), CI (перейти к следующей пози-
ции табуляции), СС (возврат в командный режим), CP (активизация
принтера). DELETE (или BACKSPASE) клавиша производит стира-
ние назад, но не далее начала следующей строки. Текст вводится во
внутренний буфер PASCAL и, если этот буфер переполнен, вам сле-
дует воздержаться от дальнейшего ввода текста - Вы должны исполь-
зовать DELETE или СХ для того, чтобы освободить пространство в
буфере.

Команда: I N, М

Использование этой команды обеспечивает ввод в автоматиче-
ском режиме: на экране автоматически высвечиваются номера вво-
димых строк. Можно использовать все управляющие коды; ввод
строки завершается нажатием "ENTER". Для выхода из режима ис-
пользуйте управляющий код "СС" (раздел 0.0).

Если Вы вводите строку с номером, который уже существует в
тексте, существующая строка будет стерта и заменена на новую после
нажатия клавиши "ENTER". Если автоматическое наращивание но-
мера строки дает номер больший, чем 32767, то редактор автомати-
чески выходит из режима ввода. Если при вводе текста Вы достигли
конца экрана, но при этом строка содержит менее 128 символов
(размер буфера) строки на экране поднимутся и Вы можете печатать
следующую строку.

2.2.2. Распечатка текста.

Текст может быть распечатан, используя команду "L"; количе-
ство строк, изображаемых одновременно на экране в течение проце-
дуры команды изначально фиксированно, но может быть изменено с
помощью команды "К".

Команда : L N, М

Выводит текущий текст на экран со строки N до строки М вклю-
чительно. По умолчанию длина для N всегда 1, а для М-32767, т.е.
эти значения не берутся из предварительно введенных аргументов.
Чтобы распечатать весь файл текста используйте просто "L" без вся-
ких аргументов. Строки ограничены слева меткой; справа границей
экрана. Количеством строк экрана можно управлять с помощью ко-
манды "К"; по выводу определенного количества строк текст остано-
вится ; введите управляющий код СС для возврата в основной цикл
редактора или любую клавишу для продолжения листинга.

Команда: К N

Команда устанавливает количество строк экрана, которое дол-
жно быть выведено перед тем, как вывод приостановится. Величина
(N 256) вычисляется и хранится в памяти. Например, используйте
ее, если хотите, чтобы команда L за один раз листала 5 строк.

2.2.3. Редактирование текста.

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

Команда :D<N, М>

Все строки от N до М включительно стираются из текстового
файла. Если M<N или описано менее двух аргументов, команда вы-
полняться не будет; это помогает избежать случайных ошибок. От-
дельная строка может быть стерта при N=N, но это же можно сделать
просто набрав номер строки, а затем ENTER.

Команда : М N, М

В этом случае текст со строки N вводится на строку М; содержи-
мое последней при этом стирается. Строка N при этом сохраняется.
Таким образом команда позволяет сдвинуть строку на другую пози-
цию в тексте. Если строка N не существует, никакого действия не
происходит.

Команда : N <N, М>

Используется для перенумерации строк, начиная с N шагом М.
Оба параметра обязательны. Если появляется строка с номером, пре-
вышающем 32767, сохраняется предыдущая нумерация.

Команда : F N, М, F, S

В тексте, заключенном между N ищется выражение F. Если
такое найдено, то высвечивается эта строка и вводится режим редак-
тирования. Вы можете использовать команды режима редактирова-
ния для поиска выражения F или замены на выражение S текущего
значения F, а затем для поиска следующего положения выражения F.
Более детально об этом написано ниже.

Помните о том, что параметры команды могут быть заданы
ранее и вам необходимо только нажать F для инициации поиска (см.
пример в разделе 4.3.).

Команда: Е N

Дает возможность редактировать строку N. Если номер не задан,
то ничего не происходит, в противном случае строка заносится в
буфер и высвечивается на экране ( с номером). Также номер распо-
лагается под строкой и вводится режим редактирования. Редактиро-
вание производится в буфере, а не в памяти, поэтому в любой момент
может быть вызвана первоначальная строка,

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

(SPACE) Передвижене курсора вдоль строки (нельзя

вернуться назад к первому знаку строки);

DELETE.....Возвращение курсора назад вдоль строки

(или (нельзя продвинуть левее, если курсор стоит

BACKSPACE) на первом символе);

CI (упр.код) . . . Передвигает курсор на очередную метку

табуляции, но не до конца строки;
<ENTER> .... Закончить редактирование, сохранив изменения;

Q.........Отмена редактирования данной строки

(оставляет строку в состоянии до режима
редактирования);

L .........Просмотреть оставшуюся часть редактируемой

строки; например, справа от курсора. Остается
режим редактирования с курсором вначале строк!

К.........Стирает символ, на котором находится курсор;

Z .........Стирает правую часть строки, включая символ,

на котором находится курсор;

F .........Найти следующее положение выражения

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

курсор расположен вначале найденного
выражения в случае удачного поиска;

S .........Заменить на предварительно замененные

выражения, выражения, найденные по команде
F,A, затем выполнить команду F, т.е. осуществить
поиск следующей строки, содержащей искомое
выражение. Вместе с командой F используется
для пошагового прохождения всего файла и
замены выражений, (см. раздел 4.3);

I..........Ввод символа в текущую позицию курсора;

находитесь в этом подрежиме до нажатия
клавиши ENTER и возврата в основной режим
редактирования с курсором в позиции после
последнего введенного символа. Используя
DELETE (или BACKSPACE), можно стереть
символ по левую сторону от курсора, а используя
управляющий код CI - переместить курсор в
следующую позицию табуляции;

X.........Продвигает курсор к концу строки и

автоматически вводит вставки подрежимов
описанных выше;

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

в позиции курсора и, затем передвигает курсор на
одну позицию. Работа в подрежиме продолжается
до конца нажатия клавиши ENTER для возврата
к основному режиму; при этом курсор
располагается после последнего исправленного
символа. В этом подрежиме DELETE (или
BACKSPACE) просто сдвигает курсор влево, в то
время как CI не действует.

2.2.4. Команды работы с магнитофоном.

Текст может быть записан или загружен с помощью команд "Р"
и "G".

Команда Р N, М, S

Строки, номера которых находятся в диапозоне N, будут сохра-
нены на ленте в формате HISOFT PASCAL под именем, определен-
ным строкой S. Помните, что аргументы могут быть .заданы
предыдущей командой. Пока текст выводится на ленту, на экране
появляется сообщение "BUZY.." (занят).

Команда G,, S

В записи находится файл, записанный в HISOFT PASC AL фор-
мате с именем S. Пока идет поиск, на экране высвечивается:
"SEARCHING...". Если в записи встретится файл в данном формате,

но с другим именем, на экране появится надпись "FOUND", за кото-
рой следует имя встретившегося файла и поиск будет продолжен. По
нахождению нужного файла он будет загружен в память. Если при
загрузке обнаружится ошибка, то появится сообщение об этом и
загрузка будет прервана.

В этом случае вам необходимо вернуть ленту назад и снова
запустить G.

Если имя файла не задано, то загрузится первый найденный
файл в PASCAL формате.

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

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

2.2.5. Компиляция и запуск программ из редактора.

Команда: С N

Текст, начиная со строки N будет откомпилирован. Если номер
не указан, то текст будет откомпилирован, начиная с первой сущест-
вующей строки (см. Разд.0.2.).

Команда: R

Предварительно откомпилированный объектный код будет ис-
полнен, только если он не был утрачен - см. Разд. 0.2.

Команда: Т N

Эта команда транслирования. Текущий источник компилирует-
ся со строки N (или сначала, если N отсутствует), если компиляция
прошла успешно, на экране появится 'ОК?' ; в случае ответа "Y"
транслированный объектный код будет помещен в конец исполняю-
щей части (разрушив при этом тело компилятора) и, после этого,
будет сброшен на ленту под именем, заданным ранее командой F.

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

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

2.2.6. Другие команды

Команда: В

Управление возвращается к операционной системе.

Команда : О N, М

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

Команда: S,, D

Эта команда позволяет заменить разделитель, который исполь-
зуется для разделения аргументов в командной строке. При входе в
редактор в качестве разделителя используется он может быть
изменен командой S на первый символ строки D. Помните, что после
назначения Вы должны использовать новый разделитель (даже в
команде S) до нового переназначения.

Примечание: пробел не может служить разделителем.

Команда: V

Не имеет аргумента и высвечивает текущие назначенные вели-
чины диапозона строк и два выражения. Помните, что некоторые
команды редактора (например D и N) не используют эти назначения,
но должны иметь величийы в командной строке.

Команда: X

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

2.3. Примеры использования редактора.

Допустим Вы набрали следующую программу:

10 PROGRAMM BUBBLESORT

20 CONST

30 SIZE=2000

40 VAR

50 NUMBERS : ARRAY (1..SIZE) OF INTEGER;

60 I,TEMP : INTEGER;

70 BEGIN

80 FOR I: = 1 TO SIZE DO NUMBER (I) : = RANDOM;

90 REPEATE

100 FOR I := 1 TO SIZE DO

110 NOSWAPS:TRUE;

120 IF NUMBER (I)NUMBER (1+1) THEN

130 BEGIN

140 TEMP:=NUMBER (I);

150 NUMBER (I)HNUMBER (1+1);

160 NUMBER (1):=TEMP;

170 NOSWAPS:=FALSE

180 END

190 UNTIL NOSWAPSS;

200 FOR I:=l TO SIZE DO WRITE (NUMBER (I) :4);

210 END

Эта программа содержит следующие ошибки:

строка 10 MISSING SEMI - COLON.

строка 30 ошибки нет, но мы хотим SIZE=I00

строка 100 SIZE должно быть SIZE-1

строка 110 это должно быть в строке 95

строка 190 NOSWAPSS должен быть NOSWAPS.

К тому же необходимо объявить переменную NOSWAPS как
BOOLEAN. Это можно проделать следующим образом:

F60,200,NUMBER,NUMBERS а также использовать S для повтора

ЕЮ потом X и <ENTER> <ENTER>

Е30 потом К С 1 <ENTER> <ENTER>

F100,100,SIZE,SIZE-1 а также использовать S для повтора
Ml 10,95

110 <ENTER>

E190 потом X DELETE <ENTER> <ENTER>
65 NOSWAR:BOOLEAN;

N10,10 перенумерация с шагом 10




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Программистам - О формате музыкальных модулей Sound Tracker Pro и исходник проигрывателя.
Электронное письмо - Письма читателей : Наблюдения по играм "LAST NINJA 2" и "LAST BATTLE". Опыт эксплуатации дисковода 3.5'.
События - эскиз официального логотипа "FunTop".
BBS - список станций BBS ZXNet.
Фантастика - Повесть братьев Стругацких "Путь к Амальтею".

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