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

Gens-4 - строчный редактор. Распечатка текста. Редактирование текста. Команды дисковода и магнитной ленты.


РАЗДЕЛ3. СТРОЧНЫЙРЕДАКТОР
3.1. ВВЕДЕНИЕ В РЕДАКТОР

Редактор, поставляемый со всеми версиями GENS4, является простым
строчным редактором, разработанным для обслуживания всех операционных
систем, сделанных для Z80. Редактор прост в использовании и дает возможность
редактировать программы просто и эффективно.

Для уменьшения размера текстового файла редактор выполняет определенное
сжатие пробелов. Это происходит по следующей схеме: когда вводится строка с
клавиатуры, она символ за символом заносится во внешний относительно
ассемблера буфер и затем, в конце строки (когда вы нажимаете клавишу
<ENTER>), строка перемещается из буфера в текстовой файл. Во время этого
перемещения происходит определенное сжатие пробелов. Если первый символ
строки — пробел, то в текстовой файл вводится символ табуляции, и все
последующие пробелы пропускаются. Если первый символ в строке не пробел, то
символы заносятся из буфера в текстовой файл, пока не встретится пробел, после
чего обработка ведется также, как если бы следующий символ был бы первым
символом в строке. Это продолжается и в дальнейшем. В результате символы
табуляции включаются в начале строки или между меткой и кодом операции, а
также между кодом операции, операндами и комментариями. Конечно, если код
возврата каретки (ENTER) встречается в любое другое время, то преобразование
завершается и управление передается редактору.

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

Режим редактора включается автоматически при запуске GENS4 и за
вспомогательным текстом следует подсказка редактора ">".

В ответ на подсказку вы можете ввести командную строку следующего
формата:

С N1,N2,S1,S2<ENTER>.

Где:

"С" — мнемоника команды, которую необходимо выполнить;

N1 — число в пределах от 1 до 32767 включительно; N2 — число в пределах от 1
до 32767 включительно; S1,S2 —строка не более чем из 20 символов.

Запятая используется для разделения различных аргументов, хотя это можно
изменить — см. команду "S". Пробелы игнорируются во всех случаях кроме тех,
когда они находятся внутри строк. Никакой из аргументов не являются
обязательным, хотя некоторые команды, например, команда "DELETE", не будут
работать, если опущены аргументы N1 и N2. Редактор помнит ранее введенное
число и строки и использует сформированное значение для применения, если вы
не определили другие значения внутри командной строки. Первоначально
значения N1,N2 устанавливаются равными 10, а строки — пустыми.

Если вы вывели неправильную командную строку, например, F — 1,
100,HELLO, то эта команда будет проигнорирована и появится сообщение
"PARDON?". При этом вы должны ввести командную строку правильно, например,
F1,100,HELLO.

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

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

При вводе команды определенные комбинации ключей могут использоваться
для ее редактирования. Так, клавиша используется для стирания символов в
направлении начала строки, "CAPS SHIFT 0" или "DELETE" — для уничтожения
предыдущего символа.

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

3.2 КОМАНДЫ! РЕДАКТОРА
3.2.1. ВСТАВКА ТЕКСТА

Текст может быть введен в текстовый файл или указанием номера строки
пробела и требуемого текста, или посредством команды "Г. Заметим, что если сразу
за номером строки вы введете <ENTER>, то эта строка будет удалена из текста,
если, конечно он существует. Где бы ни вводился текст, можно применять клавиши
и <EDIT> (возврат к метке команды).

Клавиша <DELETE> будет уничтожать предыдущий символ (но не далее начала
строки текста).

Текст вводится во внешний буфер внутри GENS4 и вы должны оградить его от
переполнения использованием клавиш <DELETE> или для освобождения

свободного пространства. Если во время ввода текста редактор определит, что
конец текста перекрывает вершину адресуемой памяти, то выдается сообщение
<BAD MEMORY!>. Это показывает, что далее текст вводить нельзя и что текстовый
файл или последняя его часть должны быть сохранены на кассете для дальнейшего
восстановления.

• КОМАНДА "IN,M"

Использование этой команды переводит ввод в автоматический режим: вам
подсказываются номера строк, начиная с N приращением М на каждом шагу.
После высвечивающегося номера вы вводите нужный текст, по желанию
используя нужные клавиши, и завершаете строку текста вводом <ENTER>. Для
выхода из этого режима используется <EDIT>.

Если вы вводите строку с уже существующим номером, то строка текста с этим

номером удаляется и заменяется на вновь введенную после нажатия <ENTER>.

Если автоматическое увеличение номера строки дает значение, большее 32767,
то происходит автоматический выход из режима ввода.

Если при вводе текста вы добрались до конца строки на экране, но еще не ввели
64 символа (размер буфера), то экран сдвинется вверх на одну строку и вы можете
продолжать ввод со следующей строки — номер строки автоматически будет
соответствовать введенному тексту.

3.2.2.РАСПЕЧАТКА ТЕКСТА

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

• КОМАНДА "LN,M"

Эта команда выводит листинг со строки N до строки М включительно на
терминал. По умолчанию N присваивается значение 1, М — 32767, т.е. значениями
по умолчанию не являются ранее введенные аргументы.

Для листинга целого файла используйте команду "L" без аргументов. Строки на
экране форматируются по левой границе экрана, так что номер строки
отображается ясно. Строка протабулирована автоматически, в результате чего
получаем четкое разделение полей в строке. Номер отображаемой на экране
строки может быть проконтролирован с помощью команды "К" — после листинга
определенного количества строк листинг будет приостановлен (даже если это еще
не строка М).Для возврата в точку входа в редактор нажмите клавишу <EDIT> или
любую другую клавишу для продолжения.

• КОМАНДА "KN"

"К" устанавливает количество экранных линий, которые должны отображаться
на терминале перед паузой, как это было описано выше (см. команду "Т").Значение
N (не более 256) хранится в памяти. Например, если вы хотите при последующем

II Т п г- II Т7 Г II

использовании L выдавать на экран по 5 строк, то введите команду К5 .

3.2.3.РЕДАКТИРОВАНИЕ ТЕКСТА

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

• КОМАНДА "D [N,M]"

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

• КОМАНДА "MN,M"

Эта команда помещает текст строки с номером N в строку М, уничтожая текст,
уже существующий там. Т.е. эта команда позволяет вам перемещать строку текста
внутри текстового файла. Если строки с номером N не существует, то команда
игнорируется.

• КОМАНДА "N [N,M]"

Команда "N" перенумеровывает М строк текстового файла, начиная со строки
N. N и М должны быть реальными и если номер линии превышает 32767, то
остается первоначальная нумерация.

• КОМАНДА "FN,M,F,S"

Текст со строки N до строки М исследуется на появление строки F. Если такая
строка найдена, то она отображается на терминале и включается режим "EDIT" (см.
ниже).

Вы можете использовать команды внутри режима EDIT для нахождения
последующих появлений строки F в пределах определенной области строк или для
замещения строкой S текущего появления строки F и затем продолжить поиск
строки F. Отметим, что диапазоны строк F и S могут быть установлены ранее
другой командой, так что возможно вводить только F для инициализации поиска
(см. пример в разделе 3.3).

• КОМАНДА "EN"

Редактирует строку с номером М.Если строки N не существует, то команда
игнорируется; в противном случае строка копируется в буфер и отображается на
терминале вместе с номером строки. Номер строки вновь отображается под
строкой и включается режим редактирования. Все последующее редактирование
происходит внутри буфера, а не внутри самого текста, так что первоначальная
строка может быть получена в любой момент.

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

<SPACE> — перемещает курсор на одну позицию к следующему символу в
строке. Вы не можете шагнуть на конец строки.

<DELETE> — возвращает курсор на предыдущий символ в строке.
Невозможно шагнуть левее первого символа строки.

<^> — перемещает курсор на следующую позицию табуляции в каждой
экранной строке.

<ENTER> — конец редактирования данной строки. Сохраняет все сделанные
изменения.

<Q> — выход из режима редактирования данной строки, т.е. покидание
редактируемой строки с игнорированием всех сделанных изменений. Строка
остается такой же как она и была до редактирования.

<R> — перезагружает буфер редактирования текстом, т.е. забывает все
сделанные в строке изменения и восстанавливает строку в первоначальном виде.

<L> — распечатывает остаток строки, который должен быть отредактирован,
т.е. остаток строки за текущей позицией курсора. Вы останетесь в режиме
редактирования с указателем, перепозицированным в начало строки.

<K> — уничтожает символ в указываемой курсором позиции.

<Z> — уничтожает все символы, начиная с указанного курсором и до конца
строки.

<F> — ищет следующее появление строки "F", ранее определенной в
командной строке (см. команду "F" выше). Эта под-команда будет автоматически
выводить систему из режима редактирования текущей строки (сохраняя все
изменения) даже если цепь символов "F" в текущей строке не встретилась. Если
цепочка "F" встретилась в последующих строках текста внутри первоначально
определенного диапазона, то будет включен режим редактирования для строки, в
которой найдена заданная последовательность символов "F". Отметим, что курсор
всегда устанавливается в начало найденной строки.

<S> — замещает ранее определенной строкой "S" текущее появление цепи
символов "F" и затем выполняет подкоманду "F", т.е. осуществляет поиск
следующей строки "Р".Так, вместе с вышеупомянутой командой "F" она
используется для пошаговой замены строк символов "F" строками "S". См. раздел
3.3. для примера.

<|> — вводит символ в указанную курсором позицию. Вы будете оставаться в
этом режиме до тех пор, пока не нажмете <ENTER>. По этой клавише вы
возвращаетесь в основной режим редактирования с указывающим на последний
введенный символ. Используя <DELETE> внутри этого режима вы уничтожите
символ в буфере слева от курсора, тогда используя <^> переместите курсор в
следующую позицию табуляции, включая пробелы внутри буфера.

<X> — перемещает курсор в конец строки и включает описанный подрежим.

<C> — изменяет подрежим. Это позволяет перезаписать символ в текущей
позиции, затем передвигать курсор через одну позицию. Вы останетесь в
измененном подрежиме до тех пор, пока не нажмете клавишу <ENTER>, нажатие
которой возвратит нас в основной режим редактирования с курсором
указывающим на последний измененный символ.

<DELETE> просто сдвигает через одну позицию курсор влево, не имеет
эффекта <^>.

3.2.4. КОМАНДЫ/ДИСКОВОДА И МАГНИТНОЙ ЛЕНТЫ/

Текст может быть сохранен на магнитной ленте/дисководе или загружен с них
с помощью команд P,Q и Т. Объектный код может быть сохранен на магнитной
ленте с использованием команды О. Имена файлов не должны содержать более 10
символов.

• КОМАНДА "PN,M,S"

Строки с номерами от N до М сохраняются на ленте/диске в файле с именем,
заданным строкой S. Текст будет записан на диск, если перед именем файла через
двоеточие стоит номер дисковода. Помните, что эти аргументы могут быть
установлены предыдущей командой.

ПРИМЕРЫ:

Р 10,200, EXAMPLE — записать линии 10... 200 на магнитофон в
файл с именем "EXAMPLE".

Р 500,900,1 : TEST — записать линии 500...900 на дисковод 1.

Перед введением этой команды убедитесь, что ваш магнитофон включен в
режим записи. Не используйте эту команду, если вы желаете на последующей
стадии ввести текст с ленты. Вместо этого используйте команду Т. Если вы
намерены вводить текст с дисковода, то используйте команду Р.

Если вы заносите на диск файл с уже имеющимся на диске именем, то вас
спросят:

FILE EXIST DELETE (Y/N)?

(существующий файл удалять?)

Отвечайте "У для удаления файла и продолжения записи или нажмите любую
другую клавишу для возврата в редактор без записи файла.

• КОМАНДА "G,,S"

На ленте или дискете производится поиск файла с именем "$".Когда файл

V 1—1 II /-1П

найден, он загружается в конец текущего текста. Если строка "S" пустая, то
загружается первый файл с кассеты

Для дисковода обязательно надо указать имя файла и номер дисковода.

При работе с кассетой, после того как вы ввели команду "G", появится
сообщение: START TAPE

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

USING FILENAME

В противном случае высветится сообщение:

FOUND FILENAME

И поиск на ленте продолжается. При использовании дисковода и в том случае,
если не найден искомый файл, то появится сообщение "ABSENT" Заметим, что если
в памяти уже находится текстовый файл, то файл, загружаемый с ленты, будет
добавлен к существующему и строки всего совокупного файла будут
перенумерованы, начиная с первого с шагом 1

• КОМАНДА "TN,M,S"

Выводит блок текста между строками N и М включительно на ленту в формате,
подходящем для дальнейшей работы под управлением директивы ассемблера *F —
см. раздел 2.9. обра-батывается файл с именем "S". Вывод начинается сразу после
нажатия клавиши <ENTER>, так что вы должны убедится, что ваш магнитофон
готов к записи перед вводом этой командной линии. Если вы намерены
осуществлять ввод с дисковода, то используйте лучше команду "Р", а не "Т".
Отметим, что эта команда должна использоваться только в том случае, если вы
хотите позднее ассемблировать текст с ленты. Это неприменимо для диска —
только в версиях DEVPAC 4.

• КОМАНДА "О „S"

Выводит ваш объектный код на кассету или дисковод. Имя файла может иметь
длину более 8 символов и должно начинаться с номера привода (1....8) и двоеточия,
если вы хотите сохранить объектный код на дискете.

Только последний блок кода, произведенный ассемблером, может быть
сохранен этим способом, т.е. если у вас более одной директивы "ORG" в исходной
программе, то сохранится только код, произведенный после последней директивы
"ORG".

Код должен быть получен в памяти перед тем, как он может быть сохранен с
помощью команды "О". Часто удобнее использовать команду "A „FILENAME" для
автоматического получения файла. Эта команда работает быстрее "О" — см. ниже.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Система - статья о вопросах совместимости и модификации отечественных клонов ZX Spectrum'a.
Открытые письма Nemo №2.9
Программистам - General Sound: Руководство по программированию.
От авторов - Pixel.
Читатель-читателю - Печать чисел в различных системах счисления.

В этот день...   3 мая