В настоящее время существует большое количество различных программ для редактирования текстов на БК. Вариант, предлагаемый вам, несколько отличается от традиционных программ-редакторов и может найти своих поклонников. Нужно только набраться терпения и ввести исходный код в память БК.
Д.Ю. Усенков (г.Москва)
ТЕКСТОВЫЙ РЕДАКТОР
Существует много программ, позволяющих записывать в память ЭВМ и на дискету текстовые файлы, при необходимости их корректировать, хранить на каком-нибудь внешнем носителе, а когда понадобится - вывести текст на экран и даже распечатать его на принтере. У БК-0010 возможности, конечно, гораздо скромнее: нет принтера, меньше объем памяти, вместо дискеты - магнитная лента, а значит, нельзя, исправив текст, записать его на старое место (хотя иногда, когда программы на ленте записаны не очень плотно, это всё-таки удаётся, но такой случай скорее исключение, чем правило). Однако и для БК существуют программы, позволяющие хотя бы записать текст, хранить его на магнитофоне и потом вывести его на экран. Так, кооперативная служба тиражирования программ СБИС (для интересующихся адрес: 167024, г. Сыктывкар, а/я 430, кооператив СБИС, СТП; телефон в Сыктывкаре: 7-20-69) высылает наложенным платежом среди прочих программы EDASP (экранный редактор текстов), BASE (база данных: справочники, каталоги и т.п.), MBD (микробаза для создания словарей) и т.д. Однако эти программы в кооперативе, мягко говоря, недешёвы, да и не очень это просто - по почте переслать кассету в Сыктывкар и обратно. Кроме того, судя по описанию, эти программы создают файл только в "своём" формате, т.е. для того, чтобы прочитать (вывести на экран) записанный текстовый файл, нужно сначала записать в память программу-редактор, а затем записать в память БК ещё и сам текст.
Текстовый редактор для БК хотя и не имеет возможности редактирования текста, записанного на магнитофон ранее и считанного после этого в память (можно редактировать текст только в процессе записи и в пределах одного окна, об этом см. далее), зато созданный с её помощью текст становится абсолютно самостоятельной программной единицей. И теперь, чтобы вывести текст на экран, достаточно считать его в память БК и запустить как обычную программу в машинных кодах с адреса 1000.
А теперь немного о том, как пользоваться текстовым редактором. Сразу же после запуска Редактора (запускать его можно только из ФОКАЛа, с подключённым блоком МСТД, в режимах ТС или монитора) на экран выводится краткий текст-подсказка о том, как работать с программой, и приглашение: PRESS ANY KEY (НАЖМИТЕ ЛЮБУЮ КЛАВИШУ). После нажатия какой-нибудь клавиши экран очищается и устанавливается режим "64 символа в строке". После этого можно вводить текст и команды управления экраном. В случае ошибки можно тут же её исправить, пользуясь клавишами редактирования (см. прилагаемое к БК-0010 "БЕЙСИК". Руководство оператора. §5.2. Клавиши редактирования.). При этом можно перемежать текст рисунками (операторы ГРАФ, ЗАП, СТИР). Однако нужно помнить, что, во-первых, режимы "32/64 символа в строке", "Инв.экрана", "Курсор" нужно задавать не теми командами, которые указаны в руководстве пользователя БК-0010, а командами: "АР2 + ↓", "СУ + АР2 + Щ", "АР2 + ↑" соответственно, а во-вторых, все включённые в данном окне режимы ("Инв.символы", "Подчёрк." и т.д.) должны быть выключены до смены окна, иначе полученный в результате работы текстового редактора текст не будет соответствовать введённому вами. Когда экран заполнен текстом (следите, чтобы он не сместился вверх, - это бывает, когда вы попытаетесь перевести курсор ниже нижнего края экрана), подайте команду смены окна АР2 + ВВОД. При этом экран очистится и установится в первоначальный режим - БК готов к вводу новой порции текста. Команда смены окна нужна затем, чтобы потом при чтении записанного текста БК остановил вывод текста на экран и дал возможность его прочитать. (После прочтения для продолжения вывода текста достаточно будет нажать любую клавишу.) Когда текст будет введён полностью, нажмите клавишу КТ. Программа-Редактор окончит свою работу, сообщит адреса начала и конца записанного текста и выйдет в монитор. После этого вы должны перейти в режим ТС и записать программу-текст на магнитофон. Переход к ТС из монитора делается так (ответы на запрос БК подчёркнуты):
? <РУС> Т + ТС ¤
Появление на экране символа-приглашения ¤ означает, что режим ТС включён. После этого с помощью команды М3 запишите текст на магнитофон (адрес - адресу начала; длина = адресу конца-1000). Имя можно дать любое (длина не более 16 символов), но я советую в конце имени писать ".ТХТ", как это делается, например, в MS DOS. Это позволит потом отличить программу-текст от других программ в кодах. После того как текст записан на магнитофон, вы можете проконтролировать результат работы: режим ТС, команда 1000G. И ещё: полученную программу-текст можно запускать как из режима ТС (1000G), так и из обоих мониторов (команда С1000).
Текст программы "Текстовый редактор" в восьмеричных машинных кодах
(по блокам длиной 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 |
104016 |
|
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 |
146715 |
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 |
000212 |
000000 |
000000 |
000000 |
000000 |
000000 |
Контрольная сумма: 150337
Последний блок неполный и имеет длину 160 байт. Все остальные блоки имеют длины по 200 байт.
Данные для контроля ввода по всей программе:
Адрес: 1000 Длина: 1760 Контрольная сумма: 035170
Программу вводите аккуратно, по блокам, с проверкой по контрольным суммам каждого блока. (Напомню как это делать: команда <А1>А<Дл>ДХ - машина продолжит введённую строку: = хххххх, где <А1 > - адрес начала блока программы, <Дл> - длина блока, а хххххх - выданное машиной значение контрольной суммы.) После ввода последнего блока проверьте контрольную сумму этого блока, а затем контрольную сумму всей программы (команда 1000А1760ДХ). Если ввод произведён верно, запишите программу на магнитофон командой М3.
Комментарий автора к программе
Возможно, кто-то будет несколько удивлён, что и сама программа-редактор, и создаваемый ею текст должны запускаться с адреса 1000. Адрес 1000 считается при программировании БК-0010 как бы стандартным - это наименьший адрес памяти, отводимой под пользовательские программы. Поэтому было желательно запускать и саму программу, и порождаемый ею текст с адреса 1000. Достигается это следующим образом: программа-редактор запускается с адреса 1000, при этом начинает работать первая часть программы, перемещающая загрузчик. Программа, во-первых, выводит на экран текст-подсказку, а во-вторых, перемещает активную часть программы в самый "дальний" конец памяти, освобождая, таким образом место для генерируемого программой текста. Закончив свою работу, загрузчик передаёт управление основной активной части программы, а потом, при работе редактора, текст загрузчика, старая активная часть и текст подсказки замещаются вводимым в редактор текстом. Поэтому после создания и записи на магнитофон текстового файла, если вы захотите записать ещё один новый текст, нужно будет считать с ленты магнитофона программу текстовый редактор заново. И ещё: после того как созданный текст записан на магнитофон, вы можете сразу же, не выключая компьютер, просмотреть его на экране. Для этого нужно ввести команду 1000G (в режиме ТС) или С1000 (для монитора).
Заключение рецензента
Созданный с помощью этой программы многоэкранный текст, который может содержать и рисунки, записывается в файл на магнитной ленте в виде всей последовательности кодов клавиш, нажатых при создании текста. Дополнительно к этим кодам в файл автоматически помещается программа, предъявляющая текст при запуске файла на исполнение с 1000-го адреса. При активизации текста воспроизводится записанная последовательность кодов, вызывающая появление информации на экране и позволяющая произвольно переходить к следующей странице по любой нажатой клавише.
К достоинствам программы Д.Ю. Усенкова относятся простота создания текста с рисунками и удобство просмотра готовой информации. Для просмотра требуются загрузка и запуск только одного файла, а не двух, как это нужно при использовании, например, редакторов EDASP.
Объём записываемого в память БК материала существенно зависит от количества сделанных пользователем исправлений при создании файла.
Вследствие запоминания информации в виде последовательности кодов нажатых клавиш, включая управляющие, можно использовать эту программу и для создания простых "мультиков” и заставок.
К недостаткам следует отнести:
- невозможность повторного редактирования текста, записанного на магнитную ленту;
- необходимость выхода из редактора для записи созданного текста на МЛ и повторной загрузки редактора после записи на магнитную ленту текста;
- невозможность возврата к предыдущей странице редактируемого материала;
- сохранение на МЛ редактирующих кодов.
Несмотря на недостатки, программа может найти свою "экологическую нишу" в широком спектре программ - редакторов текстов.
Л.Н. Жариков