Д.Ю.Усенков (г.Москва)
ТЕКСТОВЫЙ РЕДАКТОР
Существует много программ, позволяющих записывать в память ЭВМ и на
дискету текстовые файлы, при необходимости их корректировать, хранить на
каком-нибудь внешнем носителе, а когда понадобится — вывести текст на
экран и даже распечатать его на принтере. У БК-0010 возможности, конечно,
гораздо скромнее: нет принтера, меньше объем памяти, вместо дискеты-маг-
нитная лента, а значит, нельзя, исправив текст, записать его на старое место
(хотя иногда, когда программы на ленте записаны не очень плотно, это все-та-
ки удается, но такой случай скорее исключение, чем правило). Однако и для
БК существуют программы, позволяющие хотя бы записать текст, хранить его
на магнитофоне и потом вывести его на экран. Так, кооперативная служба ти-
ражирования программ СБИС (для интересующихся адрес: 167024, г.Сыктыв-
кар, а/я 430, кооператив СБИС, СТП; телефон в Сыктывкаре: 7-20-69) высыла-
ет наложенным платежом среди прочих программы EDASP (экранный редак-
тор текстов), BASE (база данных: справочники, каталоги и т.п.), MBD (микро-
база для создания словарей) и т.д. Однако эти программы в кооперативе,
мягко говоря, недешевы, да и не очень это просто — по почте переслать
кассету в Сыктывкар и обратно. Кроме того, судя по описанию, эти програм-
мы создают файл только в "своем" формате, т.е. для того, чтобы прочитать
(вывести на экран) записанный текстовый файл, нужно сначала записать в па-
мять программу-редактор, а затем записать в память БК еще и сам текст.
Текстовый редактор для БК хотя и не имеет возможности редактирования
текста, записанного на магнитофон ранее и считанного после этого в память
(можно редактировать текст только в процессе записи и в пределах одного
окна, об этом см.далее), зато созданный с ее помощью текст становится абсо-
лютно самостоятельной программной единицей. И теперь, чтобы вывести
текст на экран, достаточно считать его в память БК и запустить как обычную
программу в машинных кодах с адреса 1000.
А теперь немного о том, как пользоваться текстовым редактором. Сразу
же после запуска Редактора (запускать его можно только из ФОКАЛа, с под-
ключенным блоком МСТД, в режимах ТС или монитора) на экран выводится
краткий текст-подсказка о том, как работать с программой, и приглашение:
PRESS ANY KEY (НАЖМИТЕ ЛЮБУЮ КЛАВИШУ). После нажатия какой-ни-
будь клавиши экран очищается и устанавливается режим "64 символа в стро-
ке". После этого можно вводить текст и команды управления экраном. В слу-
чае ошибки можно тут же ее исправить, пользуясь клавишами редактирования
(см.прилагаемое к БК-0010 "БЕЙСИК". Руководство оператора. § 5.2. Клави-
ши редактирования.). При этом можно перемежать текст рисунками (операто-
ры ГРАФ, ЗАП, СТИР). Однако нужно помнить, что, во-первых, режимы
"32/64 символа в строке", "Инв.экрана", "Курсор" нужно задавать не теми
командами, которые указаны в руководстве пользователя БК-0010, а коман-
дами: "АР2 + "СУ + АР2 + Щ", "АР2 + ^ " соответственно, а во-вторых, все
включенные в данном окне режимы ("Инв.символы", "Подчерк." и т.д.) дол-
жны быть выключены до смены окна, иначе полученный в результате работы
текстового редактора текст не будет соответствовать введенному вами. Когда
экран заполнен текстом (следите, чтобы он не сместился вверх, — это быва-
ет, когда вы попытаетесь перевести курсор ниже нижнего края экрана),
подайте команду смены окна АР2 + ВВОД. При этом экран очистится и устано-
вится в первоначальный режим — БК готов к вводу новой порции текста. Ко-
манда смены окна нужна затем, чтобы потом при чтении записанного текста
БК остановил вывод текста на экран и дал возможность его прочитать. (После
прочтения для продолжения вывода текста достаточно будет нажать любую
клавишу.) Когда текст будет введен полностью, нажмите клавишу КТ. Про-
грамма-Редактор окончит свою работу, сообщит адреса начала и конца запи-
санного текста и выйдет в монитор. После этого вы должны перейти в режим
ТС и записать программу-текст на магнитофон. Переход к ТС из монитора де-
лается так (ответы на запрос БК подчеркнуты): ? <РУС> Т
+ Ш
X
Появление на экране символа-приглашения )Х означает, что режим ТС
включен. После этого с помощью команды МЗ запишите текст на магнитофон
(адрес-адресу начала; длина = адресу конца-1000). Имя можно дать любое
(длина не более 16 символов), но я советую в конце имени писать ".ТХТ", как
это делается, например, в MS DOS. Это позволит потом отличить программу-
текст от других программ в кодах. После того как текст записан на магнито-
фон, вы можете проконтролировать результат работы: режим ТС, команда
1000G. И еще: полученную программу-текст можно запускать как из режима
ТС (1000G), так и из обоих мониторов (команда С1 ООО).
Текст программы "Текстовый редактор" в восьмеричных машинных кодах
(по блокам длиной 200 байт, с контрольными суммами):
1000: 104014 |
012701 |
001052 |
012702 |
37120 |
021127 |
000222 |
001402 |
012122 |
000773 |
005012 |
012701 |
001734 |
012702 |
105000 |
104020 |
104006 |
012702 |
001000 |
000137 |
037120 |
004737 |
037746 |
004737 |
037456 |
005004 |
010201 |
005201 |
005201 |
010113 |
104006 |
020027 |
000212 |
001416 |
020027 |
000003 |
001425 |
020027 |
000201 |
001452 |
110021 |
005204 |
010005 |
104016 |
020127 |
037102 |
103076 |
000756 |
110021 |
005204 |
000241 |
006204 |
103001 |
005201 |
010112 |
010102 |
000734 |
000765 |
112721 |
000212 |
005204 |
000241 |
006204 |
103001 |
Контрольная сумма: 144617 |
|
|
|
|
|
1200: 005201 |
010112 |
005021 |
010104 |
012701 |
037574 |
012702 |
000152 |
104020 |
162704 |
000000 |
032704 |
100000 |
001405 |
012700 |
000061 |
104016 |
000404 |
000445 |
012700 |
000060 |
104016 |
012705 |
000004 |
012700 |
000031 |
104016 |
077502 |
012705 |
000005 |
010400 |
042700 |
177770 |
062700 |
000060 |
104016 |
012700 |
000010 |
104016 |
104016 |
006204 |
006204 |
006204 |
077516 |
000000 |
010146 |
010246 |
012701 |
037524 |
012702 |
000050 |
104020 |
104006 |
012602 |
012601 |
000702 |
032737 |
000100 |
177716 |
001275 |
010500 |
104016 |
011021 |
005204 |
Контрольная сумма: 012374 |
|
|
|
|
|
1400: 012700 |
075000 |
077001 |
000764 |
012705 |
037504 |
012704 |
000010 |
012522 |
021527 |
177777 |
001001 |
010203 |
077406 |
000207 |
104014 |
012701 |
177777 |
012702 |
105000 |
104020 |
104006 |
000137 |
025012 |
025052 |
000000 |
170000 |
166741 |
172361 |
020370 |
160772 |
167760 |
167354 |
167345 |
020341 |
167760 |
167354 |
171757 |
174364 |
000340 |
000000 |
025052 |
005052 |
015414 |
014431 |
171360 |
163757 |
160762 |
166755 |
020341 |
160772 |
167753 |
177356 |
166351 |
020341 |
160762 |
167742 |
172764 |
005056 |
014412 |
160767 |
020373 |
160746 |
166352 |
Контрольная сумма: 044025 |
|
|
|
|
|
1600: 167040 |
164341 |
162357 |
172351 |
170763 |
173440 |
170040 |
166741 |
172361 |
005351 |
170031 |
020357 |
162341 |
162762 |
160763 |
035355 |
030440 |
030060 |
026460 |
005012 |
175031 |
170341 |
171765 |
035353 |
030061 |
030060 |
027107 |
015012 |
015032 |
030625 |
032065 |
112431 |
010046 |
104034 |
030027 |
000001 |
001403 |
012700 |
000233 |
1С4016 |
012700 |
000014 |
104016 |
012600 |
000207 |
000222 |
020341 |
006233 |
116623 |
015621 |
014431 |
014431 |
014431 |
172031 |
165745 |
172363 |
173757 |
165371 |
020040 |
162762 |
160744 |
172353 |
171357 |
015412 |
Контрольная сумма: 151611 |
|
|
|
|
|
2000: 014622 |
164031 |
140722 |
142716 |
144716 |
020305 |
140767 |
144733 |
020310 |
151320 |
143717 |
140722 |
153440 |
014412 |
014431 |
|
152431 |
147704 |
147302 |
145317 |
145454 |
146717 |
140720 |
152313 |
147716 |
020312 |
147706 |
146722 |
027305 |
015412 |
170031 |
147722 |
151307 |
146701 |
140715 |
155040 |
150301 |
151711 |
153731 |
142701 |
020324 |
140767 |
020333 |
142724 |
151713 |
005324 |
020327 |
140706 |
146312 |
145454 |
152317 |
151317 |
145331 |
173440 |
020331 |
147715 |
142726 |
142724 |
155040 |
150301 |
026711 |
151412 |
152301 |
020330 |
Контрольная сумма: 101211 |
|
|
|
|
|
2200: 140716 |
146440 |
143057 |
144054 |
140722 |
144716 |
154324 |
147040 |
020301 |
140715 |
147307 |
152311 |
147716 |
146312 |
147305 |
142724 |
144440 |
153440 |
153731 |
142317 |
152311 |
020330 |
140716 |
156040 |
151313 |
147301 |
155054 |
150301 |
151725 |
145455 |
150701 |
143040 |
145301 |
026314 |
140713 |
020313 |
027720 |
151320 |
153440 |
145440 |
142317 |
144301 |
151440 |
140440 |
026704 |
151012 |
151705 |
020301 |
030621 |
030060 |
111060 |
005056 |
014433 |
151360 |
020311 |
153727 |
142317 |
020305 |
151711 |
147720 |
154314 |
152732 |
152312 |
020305 |
Контрольная сумма: 000174 |
|
|
|
|
|
2400: 147713 |
140715 |
142316 |
035331 |
005012 |
014431 |
031063 |
033057 |
020064 |
014323 |
026430 |
160621 |
031362 |
126453 |
020040 |
111040 |
147311 |
027327 |
027334 |
110455 |
172763 |
160453 |
031362 |
176453 |
111012 |
014431 |
152713 |
151720 |
014030 |
151722 |
026456 |
160621 |
031362 |
131453 |
020040 |
111040 |
147720 |
152327 |
151317 |
110455 |
170074 |
173757 |
037364 |
111012 |
014431 |
142720 |
142722 |
147710 |
020304 |
020313 |
146323 |
142305 |
147456 |
147313 |
026725 |
160621 |
031362 |
036053 |
173767 |
162357 |
111076 |
014431 |
145717 |
147317 |
Контрольная сумма: 166147 |
|
|
% |
|
|
2600: 140736 |
144716 |
020305 |
140722 |
147702 |
154724 |
110455 |
165474 |
037364 |
005222 |
014433 |
151757 |
140724 |
154314 |
154716 |
020305 |
144723 |
153715 |
146317 |
026731 |
142702 |
020332 |
155311 |
142715 |
142716 |
144716 |
015712 |
014431 |
014431 |
110431 |
162766 |
160754 |
020340 |
172440 |
170363 |
164345 |
020341 |
003441 |
003407 |
003407 |
003407 |
003407 |
015407 |
111010 |
071120 |
071545 |
020163 |
062553 |
027171
Контрольная суь |
115432
ма: 150: |
000212 137 |
000000 |
000000 |
000000 |
000000 |
000000 |
Последний блок неполный и имеет длину 160 байт. Все остальные блоки
имеют длины по 200 байт.
Данные для контроля ввода по всей программе:
Адрес: 1000 Длина: 1760 Контрольная сумма: 035170
Программу вводите аккуратно, по блокам, с проверкой по контрольным
суммам каждого блока. (Напомню как это делать: команда
<А1>А<Дл>ДХ — машина продолжит введенную строку: = хххххх, где
<А1> — адрес начала блока программы, <Дл> — длина блока, а
хххххх — выданное машиной значение контрольной суммы.) После ввода по-
следнего блока проверьте контрольную сумму этого блока, а затем конт-
рольную сумму всей программы (команда 1000А1760ДХ). Если ввод произве-
ден верно, запишите программу на магнитофон командой МЗ.
Комментарий автора к программе
Возможно, кто-то будет несколько удивлен, что и сама программа-редак-
тор, и создаваемый ею текст должны запускаться с адреса 1000. Адрес 1000
считается при программировании БК-0010 как бы стандартным — это наи-
меньший адрес памяти, отводимой под пользовательские программы. Поэто-
му было желательно запускать и саму программу, и порождаемый ею текст с
адреса 1000. Достигается это следующим образом: программа-редактор за-
пускается с адреса 1000, при этом начинает работать первая часть программы,
перемещающая загрузчик. Программа, во-первых, выводит на экран текст-
подсказку, а во-вторых, перемещает активную часть программы в самый
"дальний" конец памяти, освобождая, таким образом место для генерируе-
мого программой текста. Закончив свою работу, загрузчик передает управле-
ние основной активной части программы, а потом, при работе редактора, текст
загрузчика, старая активная часть и текст подсказки замещаются вводимым в
редактор текстом. Поэтому после создания и записи на магнитофон текстово-
го файла, если вы захотите записать еще один новый текст, нужно будет счи-
тать с ленты магнитофона программу текстовый редактор заново. И еще: по-
сле того как созданный текст записан на магнитофон, вы можете сразу же, не
выключая компьютер, просмотреть его на экране. Для этого нужно ввести ко-
манду 1000G (в режиме ТС) или С1000 (для монитора).
Заключение рецензента
Созданный с помощью этой программы многоэкранный текст, который может содержать и
рисунки, записывается в файл на магнитной ленте в виде всей последовательности кодов кла-
виш, нажатых при создании текста. Дополнительно к этим кодам в файл автоматически поме-
щается программа, предъявляющая текст при запуске файла на исполнение с 1000-го адреса.
При активизации текста воспроизводится записанная последовательность кодов, вызывающая
появление информации на экране и позволяющая произвольно переходить к следующей стра-
нице по любой нажатой клавише.
К достоинствам программы Д.Ю.Усенкова относятся простота создания текста с рисунка-
ми и удобство просмотра готовой информации. Для просмотра требуются загрузка и запуск
только одного файла, а не двух, как это нужно при использовании, например, редакторов
EDASP.
Объем записываемого в память БК материала существенно зависит от количества сделан-
ных пользователем исправлений при создании файла.
Вследствие запоминания информации в виде последовательности кодов нажатых клавиш,
включая управляющие, можно использовать эту программу и для создания простых "мульти-
ков" и заставок.
К недостаткам следует отнести:
- невозможность повторного редактирования текста, записанного на магнитную ленту;
- необходимость выхода из редактора для записи созданного текста на МЛ и повторной
загрузки редактора после записи на магнитную ленту текста;
- невозможность возврата к предыдущей странице редактируемого материала;
- сохранение на МЛ редактирующих кодов.
Несмотря на недостатки, программа может найти свою "экологическую нишу" в широком
спектре программ — редакторов текстов.
Л.Н.Жариков