![]()
После редактирования обычно бывает необходимо отформати-
ровать текст.Текст в строке можно разместить несколькими способами:
• растянуть от правой до левой границ за счет вставки дополни-
тельных пробелов между словами (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 I40 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 |




