После редактирования обычно бывает необходимо отформати-
ровать текст.
Текст в строке можно разместить несколькими способами:
• растянуть от правой до левой границ за счет вставки дополни-
тельных пробелов между словами (CS/SS+J);
• отцентрировать, предварительно убрав все лишние пробелы
(SS/W);
• сжать строку, убрав лишние пробелы, за исключением пробе-
лов, стоящих в начале строки, которые рассматриваются как
абзацный отступ (CS/SS+H).
Форматирование по одной строке — довольно утомительное за-
нятие, и поэтому в любом мало-мальски приличном текстовом
редакторе существуют команды (или хотя бы одна команда) форма-
тирования абзацев. При форматировании Tasword считает абзацем
фрагмент текста, начинающийся со строки, в которой находится
курсор, и заканчивающийся строкой, после которой расположена
пустая строка или строка с абзацным отступом.
Форматирование абзаца запускается клавишами SS/D. Резуль-
тат зависит от текущего режима редактора. Естественно, что выпол-
нять эту команду имеет смысл лишь при включенных режимах
переноса и выравнивания.
До начала форматирования необходимо убедиться, что текст не
выходит за установленные левую и правую границы, иначе там он
и останется, то есть не будет вставлен в абзац.
Для каждого абзаца допустимо устанавливать собственные гра-
ницы, выделяя таким образом различные фрагменты текста или
освобождая место для рисунков.
Часть программы Tasword, относящаяся к интерфейсу вво-
да/вывода, написана на Бейсике, что позволяет легко адаптировать
ее к компьютерам с различной архитектурой. Внесение изменений
в бейсик-программу доступно даже неопытным программистам и,
как правило, редко приводит к непредсказуемым результатам.
Легкость модификации бейсик-программы сыграла и отрицатель-
ную роль, способствуя появлению бесчисленных версий с самыми
различными пользовательскими интерфейсами. Поэтому описы-
вать бейсик-меню достаточно сложно, и мы рассмотрим лишь
наиболее распространенный вариант его построения.
сохранение текста на ленте или диске.
загрузка текста в редактор с ленты или
диска. Текст, находящийся к этому мо-
менту в памяти, уничтожается.
подгрузка к тексту в памяти текста с
магнитного носителя. Текст с внешнего
носителя добавляется в конец текста, находящегося в памяти.
печать текста на принтере.
возврат в режим редактирования.
вход в интерпретатор Бейсика без стира-
ния программы.
Вызов функций меню производится нажатием клавиш, указан-
ных в начале каждого пункта. (В оригинальной версии Tasword для
подтверждения выбора функции нужно нажать клавишу Enter, а
для отмены — С).
Кроме этих основных функций, в зависимости от версии (лен-
точкая или дисковая) и применяемого метода русификации про-
граммы, в бейсик-меню могут быть и дополнительные пункты:
вывод каталога текущего диска.
вывод страницы помощи (для англо-рус-
ской версии).
В фирменной версии Tasword был предусмотрен вывод текста
на ZX-Printer. Поскольку в нашей стране ZX-Printer встречается
крайне редко, зарезервированные для вывода на это устройство
комбинации клавиш (CS/SS+P, CS/SS+L, CS/SS+K) не используются.
Для работы с более распространенными типами принтеров были
разработаны версии, где вывод текста на печать производился из
бейсик-меню редактора с помощью подгружаемых драйверов. По-
этому особое внимание при выборе версии Tasword нужно обра-
щать на соответствие параметров вашего компьютера и принтера
драйверу, «зашитому» в редактор.
Несколько упрощает жизнь пользователям появление версий
Tasword с возможностью конфигурирования драйвера под наибо-
лее распространенные модели ZX Spectrum и типы принтеров.
Если ваша машина или принтер не входит в их число, или вам не
удалось достать версию программы, в которой предусмотрена воз-
можность конфигурации, то перед вами стоит трудная задача:
написать или адаптировать уже существующий драйвер принтера.
Для описания процесса создания подобных программ нужна от-
дельная книга, поэтому назовем только некоторые характеристики
формата хранения текста в программе Tasword, необходимые для
написания драйвера печати:
• текст в редакторе должен храниться в виде массива строк с
фиксированной длиной в 64 байта (символа);
• в конце строки отсутствуют разделители (CR и LF), поэтому
для сохранения форматирования текста при печати раздели-
тели должны генерироваться драйвером после передачи каж-
дой из групп из 64 символов;
• кодировка русских букв в большинстве версий не совпадает с
принятой в принтерах, а следовательно, необходима перекоди-
ровка символов;
• разбиение текста на страницы в редакторе отсутствует. Эта
задача возлагается либо на принтер, либо на драйвер.
Одной из серьезных проблем, возникающих у пользователей на
начальном этапе работы с Tasword, является проблема определения
версии (а следовательно, и возможностей) программы. Как мы уже
отмечали, для большинства отечественных пользователей интерес
представляют три «базовые» версии Tasword.
Версия предназначена для работы с текстами с использованием
латинских символов.
При запуске выводит строку статуса на английском языке; при
нажатии клавиш CS/1 (Edit) появляется страница помощи (Help) на
английском языке.
В этой версии латинский знакогенератор частично или пол-
ностью заменен на русский, что позволяет работать с кириллицей.
В одном из вариантов строчные латинские символы заменены на
заглавные русские. Другой вариант позволяет использовать и
строчные и заглавные русские буквы (но без латинских).
Строка статуса выводится на русском языке, а при нажатии
клавиш CS/1 (Edit) появляется Help на русском языке. При перехо-
де из режима вывода 64 символов в режим вывода 32 символов,
русские буквы заменяются латинскими, что чрезвычайно не-
удобно.
Наиболее удачна русифицированная версия, позволяющая ра-
ботать одновременно с русским и латинским алфавитом в любом
регистре (заглавные и строчные). Эту версию можно узнать по
следующим признакам:
Поскольку изменение бейсик-части Tasword не вызывает особых
сложностей, в этом разделе мы обратим особое внимание на моди-
фикацию кодовой части программы. Модификация кодовой части
позволяет изменить цветовую палитру экрана редактора, знакоге-
нератор и страницу помощи, а также добавить некоторые полезные
функции.
Для модификации Tasword загрузите его и выйдите в Бейсик.
После внесения необходимых изменений запишите на ленту (диск)
полученную версию программы.
Знакогенератор для б4-символьного формата вывода находится
в кодовой части Tasword с адреса 61184 и занимает 768 байт. Для
модификации загрузите в память отдельно кодовую часть Tasword,
а затем сохраните знакогенератор на ленте командой
SAVE "UDG"CODE 61184,768
или на диске командой
RANDOMIZE USR 15619: REM: SAVE "UDG"CODE 61184,768.
Полученный таким образом файл можно модифицировать в
любой программе, позволяющей редактировать шрифты (напри-
мер, в The Artist II). Для использования модифицированного зна-
когенератора в редакторе вновь загрузите в память кодовую часть
Tasword и выполните для диска команду
LOAD "UDGmod"CODE 61184,768
или для ленты команду
RANDOMIZE USR 15619: REM: LOAD "UDGmod"CODE 61184,768
— где UDGmod — имя модифицированного знакогенератора. После
этого запишите полученную кодовую часть на диск или ленту.
Изменение знакогенератора в этом случае касается только 64-
символьного режима и не изменяет графические символы и сим-
волы 32-символьного режима (возможна модификация только 16
символов, расположенных по адресам 60926...61055). Полное из-
менение знакогенератора для 64-символьного и 32-символьного
режимов требует значительной модификации программы и в дан-
ном описании не рассматривается.
• страница подсказки (Help) либо отсутствует, либо вызывается
из бейсик-меню.
В режиме вывода 32 символов в строке установка необходимых
цветов может быть произведена из Бейсика с использованием
команд INK и PAPER. Допускается использование цветов фона с
кодами 1, 3, 5, 7, при этом бордюр будет иметь цвет с кодом на
единицу меньше. Для изменения цветов в режиме 64-символьного
вывода выполните операторы:
РОКЕ 58512,54
РОКЕ 58513,С
РОКЕ 58521,54
POKE 58522.С
- где C=8x+.
Например, для вывода белых символов на голубом фоне устано-
вите С=8х1+7=15. Для изменения цвета рамки выполните:
РОКЕ 58508,54
РОКЕ 58509,С
- где С рассчитывается по тому же правилу, что и для основного
экрана.
Цвет бордюра изменяется записью значений от 1 до 7 в ячейку
64516. Для изменения цвета бордюра в режиме 32 символа в
строке следует модифицировать содержимое ячейки 64516. При
этом не затрагивается цвет двух нижних строк. За его изменение
отвечают ячейка 64570 (для нижней строки) и ячейка 59993 (Для
второй строки снизу). Учтите, что старшая часть байта в этом
случае отвечает за INK, а младшая — за PAPER.
Изменения цвета, выполненные модификацией кодовой части
редактора, сохраняются при записи программы на диск (ленту).
Страница помощи редактора (Help) представляет собой тексто-
вый фрагмент в формате Tasword. Чтобы изменить Не1р-страницу,
нужно для начала скопировать ее в область памяти, в которой
размещается редактируемый текст. Для этого выполните следую-
щие операторы:
LET S=FN Р(64949): FOR N=0 ТО 1407:
POKE(S+N)fPEEK(54784+N): NEXT N
После запуска редактора на экран будет выведен текст страницы
помощи, и вы сможете его отредактировать. После внесения изме-
нений, для занесения исправленной версии Help, в программу
необходимо снова выйти в Бейсик и выполнить операторы:
LET S=FN Р(64949): FOR N=0 ТО 1407:
POKE(54784+N),PEEK(S+N): NEXT N
Для редактирования второй страницы помощи (клавиши в ре-
жиме Extend Mode) выполните те же операции, заменив адрес
54784 на 56320.
Одним из наиболее существенных факторов, влияющих на ра-
боту с текстовым редактором, является правильная настройка кла-
виатуры.
Характеристики клавиатуры меняются при помощи системных
переменных ZX Spectrum (см. [1]). Переменная REPDEL, располо-
женная по адресу 23561, определяет время, в течение которого
клавиша должна быть нажата для того, чтобы начался автоповтор,
то есть выдача непрерывной последовательности символов. Ее
нормальное значение — 35, но при использовании клавиатур низ-
кого качества для предотвращения дребезга (выдачи нескольких
символов при однократном нажатии клавиши) содержимое этой
ячейки стоит увеличить.
Другой полезной модификацией можно считать изменение зву-
ка, генерируемого программой при нажатии на клавиши. Для
изменения частоты и длительности звукового сигнала при нажатии
клавиш необходимо модифицировать ячейки с адресами 23609 и
59161/59162.
3. Программа перекодировки текстов_
Те, кто занимался обменом текстов в формате Tasword или
использовал различные вспомогательные программы, несомненно
встречался с ситуацией, когда на экране вместо осмысленной
информации появляется полная белиберда. Подобная ситуация
возникает, когда кодировки символов в тексте и в редакторе не
совпадают.
Для того чтобы прочитать текст с другой кодировкой, можно
попробовать изменить знакогенератор (о том, как это сделать,
читайте в Приложении 2). Однако в этом случае изменяется назна-
чение клавиш, что затрудняет работу.
Для разрешения проблем с кодировкой существуют специаль-
ные программы-перекодировщики. Если же вы не имеете их под
рукой, можно воспользоваться простейшим перекодировщиком на
Бейсике. Нетерпеливым эта программа может показаться несколь-
ко «задумчивой», но она имеет то несомненное преимущество,
что может быть быстро набрана и легко настроена на любую коди-
ровку.
10 CLEAR 29999
11 DIM С$(256)
12 RANDOMIZE USR 15619: REM: LOAD"DATA" DATA C$()
15 INPUT "Source file name: ",A$
20 RANDOMIZE USR 15619: REM: LOAD A$ CODE 30000
30 FOR 1=30000 TO 30000+LEN
40 POKE l,CHR(C$(PEEK I)); NEXT I
50 INPUT "Target file name",A$
60 RANDOMIZE USR 15619: REM: SAVE A$ CODE 30000.LEN
Перед использованием этой программы необходимо создать
файл перекодировки "DATA". В этом файле должна содержаться
таблица соответствия кодов определенным символам, причем сим-
волы расположены в порядке возрастания кодов в программе, в
которой создавался исходный текст. Создать файл "DATA" можно,
например, при помощи следующей программы:
10 DIM С$(256)
20 FOR 1=1 ТО 256
30 READ C$(l): NEXT I
40 RANDOMIZE USR 15619: REM: SAVE"DATA" DATA C$()
50 DATA ..., ,"A","B","C","D", ...
Вместо LEN в программу следует вставить максимальную длину
файла, которую воспринимает редактор. Эта программа может
быть использована для любых кодировок: в нее нужно подгружать
только различные файлы DATA.
Клавиши |
Действие |
Стр. |
Переключение режимов |
CS/1 |
переключение регистра РУС/ЛАТ |
42 |
CS/2 |
переключение регистра заглавные/строчные буквы |
42 |
CS/SS+E |
переключение режима выравнивания |
43 |
CS/SS+W |
переключение режима переноса |
43 |
CS/SS+I |
переключение режима вставки |
45 |
CS/SS+C |
переключение режима отображения (32/64 символа) |
47 |
Перемещение курсора |
CS/3 |
перемещение курсора на слово влево |
44 |
Клавиши |
Действие |
Стр. |
CS/4 |
перемещение курсора на слово вправо |
44 |
CS/5 |
перемещение курсора влево |
44 |
CS/6 |
перемещение курсора вниз |
44 |
CS/7 |
перемещение курсора вверх |
44 |
CS/8 |
перемещение курсора вправо |
44 |
SS/U |
перемещение курсора в конец текста |
44 |
SS/I |
перемещение курсора в начало текста |
44 |
SS/F |
скроллинг текста вниз на строку |
44 |
SS/G |
скроллинг текста вверх на строку |
44 |
CS/SS+F |
скроллинг текста на страницу вперед |
44 |
CS/SS+G |
скроллинг текста на страницу назад |
44 |
CS/O |
удаление символа |
45 |
Операции со строками |
SS/S |
удаление строки |
45 |
SS/Y |
вставка строки |
44 |
CS/SS+H |
сжатие строки |
44 |
SS/Q |
сдвиг текста в строке влево от курсора |
44 |
SS/E |
сдвиг текста в строке вправо от курсора |
44 |
Операции форматирования |
CS/SS+A |
установка левой границы по курсору |
43 |
CS/SS+D |
установка правой границы по курсору |
43 |
CS/SS+S |
установка границ по умолчанию (0..63) |
43 |
SS/W |
центрирование строки |
47 |
CS/SS+J |
выравнивание строки |
47 |
SS/D |
форматирование абзаца |
47 |
Операции с блоками текста |
CS/SS+B |
маркировка начала блока |
46 |
CS/SS+V |
маркировка конца № ока |
46 |
CS/SS+M |
перенос блока |
46 |
CS/SS+N |
копирование блока |
46 |
Прочие команды |
CS/SS+P |
печать текста |
49 |
CS/SS+X |
удаление всего текста |
45 |
SS/A |
выход в бейсик-меню |
48 |