Окончание. Начало см.: Информатика и образование. 1990. № 4.
И. ПАНЧЕНКОВ
Приручение БК
Теперь рассмотрим проблему копирования программ. В её решении наметились два подхода: программный и приборно-программный.
Первый, не требующий никаких дополнительных устройств, воплощён в примерно двух десятках программ-копировщиков. Среди них есть программы, целиком умещающиеся в стековой области БК и поэтому не теряющиеся при перезапусках БК; есть настолько «увешанные» сервисными возможностями, что их невозможно исчерпать в реальной работе. Для повседневной работы хороши ASCOP2 и HELP2. Первая копирует файлы не длиннее 37К[1], вторая длину файлов не ограничивает, в остальном они очень похожи: обеспечивают переименование файлов, удвоенную плотность копирования, смещение адреса загрузки, изменение длины, фиктивное чтение. Копирование ведётся через загрузку программ в экранную память, что позволяет визуально контролировать процесс - это весьма ценно.
Из приборно-программных способов лучше всего зарекомендовал себя предложенный Ю.А. Зальцманом (Алма-Ата). В его основе - использование простого согласующего устройства (рис. 6) и специально разработанного пакета программ-копировщиков, в котором наиболее интересна КОПИФН, позволяющая в автоматическом режиме копировать 32 файла, предварительно задав списком их имена. При прочтении копируемой ленты все «заказанные» файлы копируются дважды, остальные игнорируются. Недостатком является невозможность копирования с удвоенной плотностью и с изменением параметров программ (имён, адресов загрузки и т.п.). Полная автоматизация копирования, однако, искупает все недостатки.
Рис. 6
Есть ещё один способ копирования - простейший, но запрещённый инструкцией к БК: непосредственное переписывание программ с магнитофона на магнитофон. При хорошо отлаженной технике он даёт приемлемый результат в 95% случаев, а при использовании специального устройства - регенератора цифровых сигналов, разработанного П. Чирковым и Р. Булычом (описано в «ИНФО» № 5 за 1989 г.), обеспечивает качество копий, нередко превосходящее оригинал, и предельно автоматизирует процесс копирования любых программ, даже... защищённых от перезаписи!
К сожалению, на процесс копирования оказывает влияние такое количество мелких и, казалось бы, несущественных обстоятельств, что рассказать обо всех просто невозможно - лучше дать одну глобальную рекомендацию: чистите и смазывайте магнитофон как можно чаще (например, раз в неделю)!
Поскольку число сохраняемых программ, своих и чужих, имеет только одну тенденцию - к росту, довольно скоро перед обладателем БК встаёт проблема их каталогизации. Её решают программы-каталогизаторы, формирующие перечни программ, записанных на кассету. Обычно эти списки включают названия файлов, адреса их загрузок, длины и общее число файлов на кассете.
Наиболее простые каталогизаторы фиксируют по мере считывания абсолютно все имеющиеся на кассете файлы; в результате получаются труднообозримые и неудобные для использования списки. Это, например, CATALOG и CATALOGM. В более удобных программах, примером которых является VERIFY2 А. Тереховского[2], не только более продуман интерфейс пользователя, но и производится иллюстрирование процесса считывания файлов путём загрузки в экранную область.
К сожалению, VERIFY2 не подсчитывает контрольную сумму файла[3], которая сегодня приобретает важное значение: с её помощью можно опознавать авторские версии программ и, быть может, в дальнейшем удастся использовать её для защиты прав авторов от посягательств фальсификаторов и несанкционированного копирования. Подсчёт контрольной суммы предусмотрен в каталогизаторе ТСТФ Ю.А. Зальцмана, однако у него есть свои недостатки (например, восьмеричная запись номеров файлов, избыток незначащих нулей в цифровой информации). Одним словом, пользователь и здесь (как и вообще в области системных программ) находится в положении Агафьи Тихоновны из гоголевской «Женитьбы»: «Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича...»
Теперь пришла пора заняться поисками нужного файла на магнитной ленте. Способом, ускоряющим эту весьма утомительную процедуру, является предварительная разметка ленты равноотстоящими друг от друга записями числовых отметок (маркерами), которые при считывании ленты воспроизводятся на экране, и запись файлов на размеченную ленту таким образом, чтобы перед началом каждого файла читался хотя бы один маркер, отыскать который не так уж трудно. Для разметки ленты можно воспользоваться такой, например, программой:
1.10 S A=1444 1.20 S A=A-2;I (FX(1,A)-2534)1.2,1.3,1.2 1.30 А "Включите магнитофон на запись и введите начальный номер маркера" N 2.10 S M=FITR(N/100);S B=A+6;D 3 2.20 S M=N-M*100;S B=A+B;D 3 2.30 T %4.00,N;D 9;S N=N+1;G 2.1 3.10 X FX(-1,B,12336+2S6*M-2559*FITR(M/100)) 9.90 L S 0000
Неудобство этого способа в том, что разметка постепенно теряется, если поверх старых записей делать новые.
Более удобен способ, предложенный М. Медведевым (Москва). Он основан на использовании электронного счётчика оборотов приёмного подкассетника и специальной программы DIR, которая позволяет создать в начале ленты файл-каталог всех программ, записанных на ленту, и соответствующих им показаний электронного счётчика. Пользуясь каталогом, можно выбрать нужный для чтения файл и под контролем DIR выйти на него в режиме ускоренной перемотки ленты вперёд, после чего остановиться и загрузить файл в ОЗУ. Этот способ остроумен и эффективен; в какой-то степени он имитирует специальные лентопротяжные механизмы больших ЭВМ. В числе его недостатков - необходимость перемотки ленты в начало перед загрузкой каждого файла, но удобства всё равно перевешивают.
В заключение стоит упомянуть, что для магнитофонов с хорошим обзором окна кассеты может быть рекомендовано предложенное А. Барсуковым (Минск) использование специальных измерительных линеек, наклеиваемых на кассету («ИНФО» № 3). При известном навыке этот метод даёт примерно те же результаты, что и обычный механический счётчик метража ленты, так некстати отсутствующий в самых дешёвых магнитофонах.
Впрочем, это нехитрое приспособление может быть встроено практически в любой магнитофон при наличии минимальных слесарных навыков, и сделавшие это не останутся внакладе.
Теперь настала пора сказать о том, как разумнее всего накапливать сведения о содержимом своих кассет. Эта проблема становится совсем нешуточной, когда число записанных программ начинает измеряться трёхзначными числами. Как быстро отыскать нужную программу в бесконечных каталожных файлах? Как узнать об избыточности или, наоборот, недостаточности своей коллекции программ? Как сгруппировать имеющиеся программы? Такие или подобные вопросы постоянно встают перед каждым серьёзным пользователем ПЭВМ.
Ответить на них позволяет программа BASE (авторы - А. Гречишкин, С. Фоменко, П. Успенский, известные под псевдонимом ASP corp., Зеленоград), формирующая так называемую базу данных, т.е. файл или систему файлов с произвольной организацией данных и доступа к ним. Именно в такой базе данных удобнее всего накапливать различные сведения, в том числе и об имеющихся программах. BASE позволяет классифицировать информацию по 22 (!) параметрам, связанным друг с другом так, что по любому из них можно отыскать совокупность всех остальных. Если учесть ещё и продуманный сервис, предоставляемый BASE, становится ясно, что использование её для упорядочения коллекции программ сулит много не только пользы, но и удобств. Ну а для более простых классификационных задач теми же авторами создана программа MBD (МиниБаза Данных), оперирующая только двумя параметрами. Она очень удобна для составления различных словарей, справочников и т.п.
Создание, хранение и классификация информации - лишь один из элементов работы на ПЭВМ. Следующий неизбежный шаг - распространение, передача информации. «Штатный» для БК путь - использование магнитофонных кассет - всё чаще дополняется использованием принтеров и плоттеров. По продуманности подключения внешних устройств БК не уступает лучшим компьютерам; к нему одинаково легко подключаются как неуклюжая отечественная, так и элегантная импортная периферия. Обеспечивает это хорошо продуманный порт ввода-вывода (64-контактный разъём на задней стенке компьютера).
Но как практически реализовать подключение всех внешних устройств к единственному разъёму порта ввода-вывода? Здесь-то и пригодится разъём, вынутый из блока МСТД: он станет частью специального коммутационного устройства, построенного по принципу обычного розеточного тройника.
Но подключиться - ещё не всё. Каждое периферийное устройство работает под управлением своей специальной программы (эти программы называются драйверами). Иногда драйверы входят в состав более крупных программ - например, некоторые текстовые редакторы содержат драйверы принтеров, игровые программы - драйверы джойстиков.
Многообразие периферийных устройств порождает многообразие драйверов. Например, только за последние годы появились драйверы принтеров УВВПЧ 30-004, ТПУ15ВВВП80-002, ROBOTRON (ГДР), Think Jet (Hewlett-Packard, США), EPSON (США), DZM и D-100 (Польша); существуют драйверы и множества экзотических печатающих устройств - кассовых аппаратов, например, или почти антикварных электрических пишущих машинок «Консул»... Выбор драйверов огромен, а вот выбор принтеров сильно затруднён их дороговизной и дефицитностью.
Нелегко выбрать и оптимальный текстовый редактор для БК: нужно отдать предпочтение одной из 27 (!) программ. Впрочем, большинство пользователей БК «голосуют» за EDASP10, созданный уже упоминавшейся ASP corp, и улучшенный А. Шеломановым (г. Жуковский). Большой набор сервисных услуг этого редактора и формат записи обработанных им текстов считаются образцом для подражания, хотя мне кажется, что чрезмерность сервиса делает этот редактор громоздким и малоспособным справляться с основной задачей - созданием текстов максимальной длины с минимальными затратами времени и сил. Конечно, это дело вкуса, но не могу не противопоставить EDASPy редактор, включённый С. Кумандиным (Коломна) в состав ассемблера MIKRO10K (или MIKRO10KM для «высокой» клавиатуры), в котором оставлен только самый необходимый сервис и за счёт этого в 2,5 раза увеличена длина обрабатываемого текста. И это преподносится пользователю между прочим, «в нагрузку» к ассемблеру! А очаровательная идея динамического распределения свободной памяти между текстом и буфером текста!..
Однако есть недостаток и у этого редактора - в нём отсутствует драйвер принтера, и в этом он проигрывает EDASPy, в котором драйвер есть. Есть драйвер принтера и в редакторе BED, а кроме того, в нём есть возможность форматировать текст, т.е. придавать ему типографский вид - выравнивать по правому краю, красиво разбивать на абзацы, центрировать; однако большого распространения BED почему-то не получил.
Обычно для форматирования используют программу ФОРМАТ2 А. Дьякова (Москва), позволяющую творить чудеса с текстами, написанными в формате EDASP (любой версии - от 0-й до 10-й). После обработки тексты приобретают чрезвычайно репрезентативный вид и могут быть распечатаны с помощью специального драйвера PRINT2 едва ли не на любом принтере, подключаемом к БК по параллельному способу ввода-вывода.
Комбинация EDASP, ФОРМАТ2 и PRINT2 вне конкуренции при обработке текстов, но эти программы пасуют, когда нужно работать с графической информацией - рисунками, схемами, диаграммами. Тут нужны так называемые графические редакторы, способные работать с изображениями так же легко, как текстовые редакторы с буквами. В основе подавляющего большинства их лежит классический принцип лупы, т.е. построение и редактирование рисунка в выделенной области экрана, где во внутренней системе координат воссоздаётся увеличенная в нужное число раз часть рисунка. Для примера можно назвать редакторы ГРЕД (0-4) (Д. Баранов), POINT (А. Ромашевский, Минск), ГРАТЕП (Л. Радченко), V003, GR30, GR30E, ГРАФРЕД. Из общего ряда заметно выделяется Р01М (А. Бакерин, Москва), ориентированный на использование устройства координатного ввода типа «мышь» (УВК-01 производства ПО «Марсианка»). Он позволяет создавать многоцветные (до 24 псевдоцветов) изображения и пользоваться спецалфавитом, обладает хорошо продуманной системой сервиса, вплоть до выдачи изображения на принтер и записи на МЛ. P01M знаменует переход к качественно новому программному обеспечению, рассчитанному на дальнейшее расширение возможностей БК-0010, и в первую очередь - памяти этого компьютера.
Надо сказать, что предпосылки к этому уже созданы: разработаны различные дополнительные платы памяти ёмкостью до 128К, эмуляторы электронных дисков, платы ПЗУ, хранящие наиболее важные и отработанные системные программы. А что вы скажете, если нам удастся в корпусе блока МСТД, который вы, надеюсь, сохранили, разместить дополнительное ОЗУ на 10 страниц по 16К байт?
Однако эта тема слишком сложна для того, чтобы обсуждать её походя, и ей, я надеюсь, будут посвящены специальные публикации в следующих номерах «ИНФО».
Здесь же осталось рассмотреть вопросы, касающиеся работы на разных языках: ведь БК - сущий полиглот.
Сперва - о программах, ускоряющих ввод операторов Фокала и Бейсика. Это делается просто: некоторые клавиши (вплоть до почти всей клавиатуры) кодируются на ввод операторов и различных сочетаний символов. Из таких программ наибольшее распространение получили KEYBAS (С. Филатов, К. Гусев, Москва) для работы на MSX-Бейсике и FOKEY2 (А. Тереховский, Ленинград) для работы на Фокале. Для Фокала разработаны также программы FUNKEY и KEY1, являющиеся частными случаями более общей программы А. Тереховского.
Все эти программы позволяют записать выбранную кодировку клавиш на МЛ и при необходимости возвращаться к ней. Использование перекодированной клавиатуры резко повышает производительность труда при написании программ, сокращает время отладки.
Не всегда удаётся составить программу «на одном дыхании»; возникают фрагменты, вставки и т.п. Ни в Фокале, ни в Бейсике БК нет средств для сведения их воедино, но коллективный разум пользователей преодолел леность разработчиков: были созданы специальные программы сшивки. Для Фокала это СБОРКА и FOSBOR, а для Бейсика - MERGES и MERGE. Настоятельно рекомендую начинающим пользователям БК обзавестись этими прекрасно работающими программами: с ними не страшны никакие цейтноты, работу можно в любой момент прервать, можно начать с любого места, а уже затем скомпоновать получившиеся куски так, как надо.
В работе на Фокале есть ещё один тупик, запланированный разработчиками: невозможность автоматической перенумерации строк программы. Эта операция часто бывает необходимой, и если в MSX-Бейсике она реализуется оператором RENUM, то в Фокале приходится использовать специальную программу ФОНОМ.
Что же ещё сделано для БК? Очень многое! Например, созданы программы-трансляторы, переводящие тексты из форматов Бейсика и Фокала в классический формат EDASP и таким образом ликвидирующие ту или иную недостаточность заводской комплектации БК языками.
Созданы системные программы, расширяющие возможности Фокала, например XFOCAL (С. Зильберштейн, г. Киров), не только «подтягивающий» этот язык по возможностям к Бейсику, но даже делающий его в чем-то более мощным.
Созданы прекрасные отладчики программ (MIRAGE, OS0010F и т.д.).
Специальные программы МАШКОД и ФОКОД позволяют заниматься смешанным программированием, вставляя в Фокал-программы куски, написанные в кодах.
Создаются программы, позволяющие производить последовательную загрузку и выполнение нескольких программ под контролем самого БК, причём с сохранением промежуточных результатов в выделенной области памяти (COM, COMM.ASC, COMK.BIN*).
Усилиями в основном ленинградцев БК снабжён теперь ещё языками Форт и Си. Сегодня известны ленточные версии языка Форт под названиями FORTH1.0, FIGFORTH и FORTH-83/8K с документационными файлами FORTHBOOK1-3 (или FORTDOK1-3) и редактором ЭДИТФ, а также ленточная версия языка Си, созданная А. Цаплевым (Ленинград) с документационным файлом DOCEDIT0 и несколькими тестирующими программами.
И наконец, с появлением систем, полностью управляющих магнитофоном (перемотка вперёд и назад, включение режимов записи и воспроизведения), БК, несмотря на отсутствие дисковода и малое ОЗУ, становится универсальным компьютером, способным выполнять практически любую работу.
Конечно, в одной статье о многом рассказать не удалось. Я хотел дать лишь первоначальную ориентацию в сложном, противоречивом и пока плохо информационно организованном окружении БК-0010, ставшего самым распространённым компьютером в нашей стране. Надеюсь, мне удалось немного развеять туман предубеждённости и плохой информированности, окружающий этот весьма скромный по замыслу, но тем не менее таящий в себе весьма серьёзные возможности компьютер.
[1] Разработанная А. Соколовым, автором ASCOP2, программа ASCOP4 лишена этого недостатка.
[2] Её описание опубликовано в «ИНФО» № 3 за 1990 г.- Примеч. ред.
[3] За время подготовки статьи к печати А. Тереховским разработан каталогизатор VERIFY2M, лишённый этого недостатка.
Калейдоскоп
Уважаемая редакция!
Мной разработаны схемы расширения ОЗУ БК «+32», «+128», «+256», не требующие «потрошения» внутренностей и сохраняющие аппаратную совместимость с существующим программным обеспечением. Расширение предоставляет пользователю адресное пространство до 4М байт при организации «быстрого» обмена с внешними устройствами как с ячейками памяти.
Эти схемы не требуют экзотических деталей, доступны для повторения радиолюбителям средней квалификации и позволяют создать мощное программное обеспечение. Прошу откликнуться энтузиастов-программистов, готовых принять участие в разработке операционной системы для «БК+». Схемы расширений могут быть опубликованы.
А. М. КОНЮШЕНКО.
220030 Минск-30, а/я 1 (UC2AAU).
Для эффективного использования БК-0011 необходимо немедленно, пока не накоплено практически никакого программного обеспечения к реализованной на нём операционной системе, создать ОС в стандарте MSX с учётом прогрессивных идей, обеспечивающих лёгкость расширения и однородность известной MS DOS для IBM PC.
Г. В. МИРОШНИЧЕНКО, В. В. ГОРБУНОВ.
Ленинград.
Имею более 500 программ для БК-0010, хочу обмениваться. Ищу программу вывода информации на телетайп в коде МТК-2.
С. П. ТАЛАНОВ.
612220 Кировская обл., Яранск,
ул. Некрасова,
39, кв. 1.
Обменяюсь программами для БК. Имею систему «Рига», Е-практикум, игровые, обучающе-контролирующие программы. Запись на дискеты (ДВК-3).
А. А. ДЕРБЕНЕВ.
457131 Челябинская обл., Троицкий р-н,
с. Песчаное, ул. Труда, 7.
Поклонник MSX-Бейсика БК-0010 предлагает обмен программами. Располагаю также широким выбором программ на Фокале, Форте, Т-языке, К-Фокале, в машинных кодах.
Е. Г. ОБЛОЖКОВ.
634062 Томск, пр. Фрунзе, 98, кв. 119.
РЕДАКЦИОННЫЕ СООБЩЕНИЯ
От А.А. Барсукова получено сообщение, что он заканчивает разработку планшета-дигитайзера для ввода графической информации в БК. Основой планшета является визир, индуктивно связанный с полем считывания информации; размер последнего - 250x250 мм, точность считывания положения визира - 0,1 мм, вес прибора 1,5 кг.
Мы надеемся в скором времени опубликовать подробное описание планшета.
В журнале «Радио» (№ 6 за 1990 г.) опубликованы схемы подключения ПЭВМ к телевизорам 2УСЦТ и ЗУСЦТ. (прим.gid: не нашёл в этом номере журнала такого)