(c) Давыдов В.М., Нижегородская
обл., с.Запрудное
Есть предложение ввести руб-
рику переписки с авторами прог-
рамм, как с потенциальными авто-
рами принципиально новых прог-
рамм, так и с авторами сущес-
твующих. Большинство программис-
тов в выходных данных программ
указывают только номер телефона,
да и то не всегда. А, учитывая
некоторые особенности телефон-
ной связи, позвонить в другой
город для обсуждения техничес-
ких особенностей программы весь-
ма проблематично. Дмитрий Пар-
цырный в описании STS дал свой
домашний адрес. Но ему вряд ли
доставляет удовольствие терять
время на чтение писем с вопроса-
ми типа: "А как мне сделать...".
Польза будет обоюдная. Прог-
раммисты смогут узнать, что не
удовлетворяет пользователей, и
учесть пожелания в следующих
версиях. А пользователи смогут
сообщить программистам о том,
какого характера программы их
более всего интересуют в ближай-
шее время и в отдаленной пер-
спективе. Если будет обратная
связь между потребителями и про-
изводителями программного обес-
печения, то, по крайней мере,
программист не будет мучиться
сомнениями о том, к чему бы при-
ложить свои способности.
Кажется, уже давно пришло
время для разработки текстового
редактора, использующего память
128К и выше. Идеал для подража-
ния - LEXICON от IBM-PC, хотя
повторить на Спектруме все его
возможности вряд ли кому удаст-
ся.
Поскольку ZX-WORD получил
достаточно широкое распростране-
ние, выскажу свои мысли о том,
что можно добавить к имеющимся в
версии 2.5 функциям.
- Ввести переключаемый зна-
когенератор с матрицами 4х8, 6х8
и, может, даже 8х8 пикселов.
Постоянно пользоваться матрицей
4х8 не очень удобно. Некоторые
знаки сливаются и плохо различи-
мы, из-за чего возрастает коли-
чество опечаток.
- Ввести отключаемые режимы
автопереноса и автоформатирова-
ния. То есть, если не нажимать
"ENTER", то при выходе вводимо-
го слова за правую границу сло-
во переносится на начало следую-
щей строки, а предыдущая форма-
тируется в соответствии с уста-
новленными границами. При нажа-
тии "ENTER" курсор переносится в
позицию красной строки. Кстати,
в первых версиях ZX-WORD при
форматировании текста слова до-
вольно точно делились на слоги.
В последних версиях этого нет.
Не мешало бы возобновить.
- Модифицировать процедуру
экранной печати таким образом,
чтобы вместо отображения после-
довательностей управляющих ко-
дов включения и выключения двой-
ной ширины знаков EPSON-совмес-
тимого принтера изменялась ши-
рина символов, печатаемых на эк-
ране. Наглядность текста значи-
тельно увеличится. Пользователи,
имеющие принтеры, не совместимые
с EPSON, могут преобразовывать
эти управляющие последовательно-
сти в своих драйверах.
Естественно, процедура фор-
матирования также должна учиты-
вать ширину символов.
Для того, чтобы меньше засо-
рять текст управляющими кодами,
можно не печатать на экране ESC-
последовательности жирного и
курсивного шрифтов, а для их ин-
дикации использовать изменение
цвета фона. При матрице 6х8 и
8х8 эти шрифты вполне можно сге-
нерировать.
- Ввести команду выравнива-
ния строки без форматирования
последующего текста.
- В редакторе "ZX/IBM EDI-
TOR" (Олег Хохлов) в информа-
ционной строке выводится код
символа, на котором стоит кур-
сор. Довольно удобно, особенно
для анализа последовательностей
управляющих кодов.
- Снять ограничения на раз-
мер текста. Для этого ввод и ре-
дактирование текста осуществлять
в буфере объемом 16К для компью-
тера с объемом памяти 48К и 5
страниц по 16К при памяти 128К.
Хотя реально его размер при заг-
рузке текста будет меньше, так
как нужно предусмотреть место
для вставки текста при редакти-
ровании. При этом на кодовый
блок редактора остается память
от #6000 до #BFFF. При заполне-
нии буфера редактирования выда-
вать предупредительное сообще-
ние, после которого пользователь
должен установить курсор в стро-
ку, начиная с которой текст дол-
жен остаться в памяти. Текст,
от начала буфера до предыдущей
строки включительно, записывает-
ся во временный файл на диске,
оставшаяся часть текста перено-
сится в начало буфера, и на ос-
вободившееся место подгружается
следующая порция текста. Таким
образом, на диске создается се-
мейство файлов размером 255 сек-
торов (кроме последнего). Для их
идентификации можно использо-
вать два байта заголовка файла,
в которых хранится адрес загруз-
ки, не имеющий смысла в данном
случае. Один байт выделить для
расширенной спецификации типа
файла: временный файл, исполь-
зуемый для записи; постоянный
файл, созданный в предыдущем се-
ансе работы, с которого произво-
дится чтение; резервная копия
текста (.BAK файлы на IBM-PC).
Второй байт использовать для но-
мера файла. При выполнении опе-
рации записи файла резервные
файлы удаляются, постоянные фай-
лы переименовываются в резер-
вные, временные - в постоянные.
- Ввести режим автоматичес-
кой нумерации страниц при печа-
ти на принтере заданного коли-
чества строк или после кода пе-
ревода формата, который имеет
смысл передавать принтеру.
- Ввести режим качественной
печати в графическом режиме
принтера с использованием загру-
жаемого набора символов.
- Для увеличения скорости
форматирования можно изменить
способ расположения текста в па-
мяти. Ввести фиксированную дли-
ну строки, задавамую пользовате-
лем. В первым байте записывает-
ся рассчитанная фактическая дли-
на, затем текст строки. Завер-
шающие строку коды #0D, #0A в
памяти не хранятся. Выделить
служебный блок длиной в один
сектор, в котором записывать за-
данную пользователем максималь-
ную длину строки и все изменяе-
мые параметры редактора на мо-
мент записи.
Процедура форматирования по
фактической длине строк выделен-
ного блока и параметрам формати-
рования должна определять ожи-
даемое уменьшение или увеличе-
ние количества строк. При умень-
шении количества строк особых
проблем не возникнет. В про-
цессе форматирования возникнет
группа пустых строк нулевой дли-
ны, которые нужно будет удалить,
переместив оставшийся текст к
концу отформатированного блока.
При увеличении количества строк
нужно будет предварительно соз-
дать группу пустых строк перед
началом форматируемого блока,
переместив участок текста от на-
чала выделенного блока до конца
загруженной части в конец буфера
радактирования.