Д.Ю. Усенков

ИСПОЛЬЗОВАНИЕ ВОЗМОЖНОСТЕЙ ВИЛЬНЮССКОЙ ВЕРСИИ БЕЙСИКА ДЛЯ ВЫВОДА ТЕКСТА НА ПРИНТЕР

Все пользователи БК-0010, имеющие принтер, стараются раздобыть какую-либо программу - текстовый редактор, чтобы получить возможность ввода, редактирования и "форматирования" (выравнивания строк по правому краю, расстановка пробелов после точек, запятых и т.д.) и вывода готового текста на принтер. Однако всем уже известны трудности, связанные с приобретением программного обеспечения для БК. И сегодня, несмотря на широкое распространение БК-0010 и на не менее широкую сеть торгующих программами для БК кооперативов, достать хороший текстовый редактор, подобный TED6, весьма непросто. Не исключена и такая ситуация: из-за поломки магнитофона невозможно считать текстовый редактор с ленты, а напечатать небольшой текст нужно срочно. Выручить вас в этом случае может небольшая программа на Бейсике.

Ниже приводится листинг этой программы. Для работы с текстом нужно ввести строки с 10 по 60, ввести команду KEY <номер>, "DATA "+CHR$(34), а затем, перейдя в "узкий" режим экрана, вводить в режиме AUTO требуемый текст строка за строкой. Здесь где строки являются стоящими в кавычках аргументами оператора DATA. Сам оператора DATA и открывающая кавычка вводятся с помощью ключа (для этого и была нужна введённая ранее команда KEY!/: АР2+ <номер ключа>. Это позволяет ускорить ввод текста и не переключать то и дело регистры РУС - ЛАТ. Строки 70 - 190 листинга представляют собой пример ввода текста. При этом строки 80 и 170 содержат пробелы, необходимые для пропуска строки при печати на принтер, а содержащаяся в строке 180 пустая текстовая строка ("") является признаком конца текста. Ввод текста удобно производить в режиме узких символов (64 символа в строке), если принтер включён на режим печати 80 символов в строке. Если же необходима печать широкими символами (40 символов в строке на принтере), можно вводить текст в режиме 32 символа в строке.

Допустимыми являются все символы БК, для которых имеются аналоги в знакогенераторе принтера (например, печатать на МС6312 символы полуграфики невозможно, вместо них могут выводиться цифры и некоторые знаки, искажающие вид текста). Исключаются из применения также и кавычки ("), используемые в Бейсике как ограничители текстовых строк и поэтому не печатаемые на принтере и на экране. Вместо них можно использовать апострофы (‘). Редактировать текст можно в пределах текущей строки с помощью клавиш редактирования, а уже введённые строки можно переставлять, удалять, копировать вставлять между ними новые строки и вызывать уже введённую строку на редактирование. Всё это делается так же, как и при работе со строками обычной программы на Бейсике. Чтобы при вводе и выравнивании каждой строки по правому краю (это достигается вставкой между словами дополнительных пробелов, чтобы увеличить длину строки ровно до 64 или 32 символов) не подсчитывать каждый раз количество символов, можно использовать простой приём: при вводе открывающие и закрывающие кавычки должны располагаться так, как показано в данном примере:

(Левый и правый края прямоугольника соответствуют краям экрана).

К сожалению, Бейсик не предназначен для ввода текста, поэтому объём печатаемого за один раз текста не должен превышать одной печатной страницы. В противном случае БК "выкидывает" "Ошибку 7" ("Не хватает места в памяти для программы"). При этом БК начинает "терять" строки с текстом, отказывается от выполнения команд, и тогда остаётся только перезапуск БК и ввод текста заново.

После того, как текст введён полностью, команда RUN вызывает вывод текста на экран БК (для контроля), строка за строкой. В этом случае возможны "неучтённые" пропуски между "полными" строками, которые на принтер не выводятся. Остановив текст клавишами СУ+@, можно проверить размещение заголовков, Отступы абзацев и внешний вид текста. При выводе должен быть установлен тот же режим (32 или 64 символа в строке), что и при вводе текста.

Когда текст проверен и готов к печати, вызовите строку 50 на редактирование и приведите её к виду:

50 LPRINT TAB (<отступ>); А$.

Здесь <отступ> - число, задающее отступ при печати по левому краю, то есть размер полей слева. Для режима печати 80 символов и длины текстовой строки 64 символа можно взять отступ, равный 10: 50 LPRINT ТАВ(10); А$. После этого нужно включить принтер, вставить бумагу и, повторяя нужное количество раз команду RUN<ВВОД>, отпечатать нужное количество копий.

Программа приведена здесь в упрощённом виде. Пользователи, умеющие работать с Бейсиком, легко могут доработать её по-своему: ввести отсчёт страниц с их нумерацией (для печати на коротких листах бумаги), предусмотреть возможности для локального переключения режимов печати (подчёркивание, верхние и нижние индексы, жирная печать и т.п.) с помощью ESC-последовательностей.

10 CLS
20 RESTORE
30 READ А$
40 IF А$="" THEN END
50 PRINT TAB(0); A$
60 GOTO 30
70 DATA " Пример вывода текста на принтер".
80 DATA" "
90 ' пробел для пропуска строки при печати
100 DATA Допустимыми являются все символы БК, кроме символов полуграфики"
110 DATA "и символа 'кавычки'."
120 DATA "Редактирование текста производится в текущей строке перед нажа-
130 DATA "тием клавиши <ВВОД> с помощью редактирующих клавиш, а также с по-"
140 DATA "мощью команд Бейсика для редактирования программных строк."
150 DATA "ВНИМАНИЕ! Вместо обычных кавычек в тексте нужно использовать"
160 DATA "апостроф (').
170 DATA " "
180 DATA ""
190 ' последняя строка - признак конца текста

ЗАКЛЮЧЕНИЕ РЕЦЕНЗЕНТА

Программа проверена на машине БК 0010.01. В результате выяснились некоторые особенности её использования. Безусловно, следует признать верным использование автором аппарата программируемых ключей для облегчения ввода заголовков строк. Однако при вводе ESC-последовательностей как символьной строки большинство кодов игнорируются процедурой ввода БЕЙСИКА, вследствие чего их приходится вводить как аргумент функции CHR$.

Для принтеров, обеспечивающих автоперевод строки при выводе, например, каждых 80 символов, выгоднее запись нескольких физических строк текста в одном операторе DATA. Это позволяет несколько сэкономить память под текст.

Выяснилось также, что убедить БЕЙСИК не артачиться и запомнить побольше текста можно при помощи директивы CLEAR, выделив под символьные переменные большее число байт ОЗУ. Например, в режиме 64 символа в строке после выполнения директивы CLEAR 800 в памяти уместилось помимо текста программы 28 строк DATA по 240 символов в каждой. Дальнейшее увеличение буфера символьных переменных чревато нехваткой памяти под саму программу, а уменьшение - отказом при обработке длинных строк в операторах DATA.

При определённых трудностях в использовании магнитофона и отсутствии другого редактора у пользователя предложенный автором способ применения редактора БЕЙСИКА выглядит вполне оправданным.

А.В. Милюков

Performed by © gid, 2012-2022.