Продолжение статьи «Советские домашние компьютеры 1980-х: краткая история» Владимира Трушкина (первая часть тут).
История создания БК-0010 оказалась непростой и достаточно долгой. Еще в 1979 году в зеленоградском Научно-исследовательском институте точной технологии (НИИ ТТ) был разработан первый вариант недорогого компактного персонального компьютера для широкого применения «Электроника НЦ-8010», способного работать совместно с телевизором в качестве устройства отображения информации и с магнитофоном для хранения информации. Его окончательная конструкция появилась в 1981 году. Это был мощный 16-разрядный двухпроцессорный (!) ПК на основе однокристальных микроЭВМ К1801ВЕ1 с архитектурой «Электроника НЦ», на базе которой в НИИ ТТ с середины 1970-х годов было спроектировано несколько удачных универсальных микроЭВМ. ПК НЦ-8010 имел 64 Кбайт ОЗУ и графику 512×256 точек. Затем он неоднократно перерабатывался с целью упрощения конструкции и в соответствии с решением руководства Министерства электронной промышленности СССР о полном переходе на архитектуру PDP-11.
В результате к началу 1983 года был создан тот самый БК-0010, ставший основой для серийного ПК, производство которого было освоено заводом «Экситон» в подмосковном Павловском Посаде. В том же 1983 году завод выпустил первые несколько десятков компьютеров (главные конструкторы ПК — А. Н. Полосин и С. М. Косенков). Интересные подробности о создании НЦ-8010 и БК-0010, а также других отечественных ПК можно найти в замечательной статье Б. М. Малашевича «Зеленоградские бытовые и школьные компьютеры. Инициатива наказуема исполнением».
Итак, в середине 1984 года в Советском Союзе на прилавках магазинов «Электроника» наконец-то появился первый отечественный домашний компьютер — «Электроника БК-0010». Стоил он сначала 540, затем 600 рублей — примерно как цветной телевизор или хороший музыкальный центр, что было не дешево, но вполне доступно для большинства населения. Надо заметить, что к тому времени люди, увлекающиеся вычислительной техникой, из книг и журналов уже хорошо знали, что такое ПК и зачем он нужен, поэтому интерес к БК-0010 был велик. А когда в 1986 году главный советский научно-популярный журнал «Наука и жизнь» начал публиковать материалы о БК-0010, о нем узнали миллионы читателей. С другой стороны, не следует преувеличивать спрос на такие ПК в те годы и их значение — большинство людей вполне логично воспринимали их как дорогую игрушку, не имеющую серьезного практического применения. Но для любителей-энтузиастов появление в продаже домашних компьютеров стало важнейшим событием.
Процессор
Первое, что следует отметить, это была совершенно оригинальная советская разработка, не имеющая явных зарубежных прототипов. Второе — это был один из первых в мире полностью 16-разрядный домашний компьютер. Причем во многих источниках написано еще конкретнее: первый в мире домашний 16-разрядный ПК. То есть у БК были 16-разрядный процессор, 16-разрядное ОЗУ, 16-разрядное ПЗУ и 16-разрядный видеоконтроллер, поэтому и передача данных шла сразу 16-битными словами, и обработка в процессоре тоже выполнялась сразу над 16 битами данных; все регистры процессора, естественно, тоже были 16-разрядными. Напомню, в те годы подавляющее большинство недорогих ПК были либо полностью 8-разрядными, либо частично 16-разрядными, поэтому выпуск полностью 16-разрядного бытового ПК стал большим шагом вперед.
Процессор БК-0010 — знаменитый К1801ВМ1 — содержал 50 тыс. элементов (около 17 тыс. транзисторов), в то время как процессоры 8-разрядных ПК — всего лишь от 3,5 до 8,4 тыс. транзисторов, что уже говорит о явном преимуществе 16-разрядных. Отмечу, что чем выше разрядность процессора, тем быстрее он производит сложные вычисления и в среднем быстрее обрабатываются данные, особенно многоразрядные (16, 32, 64 бит и т. д.), но скорость выполнения простых программ и несложных вычислений непосредственно от разрядности почти не зависит. При этом скорость работы процессора во многом зависит от тактовой частоты и его архитектуры, особенно от способности выполнять несколько команд одновременно (наличия конвейерной обработки). Так вот, процессор БК-0010, представлявший первое поколение 16-разрядных микропроцессоров (МП), как и большинство применявшихся в то время зарубежных 16-разрядных процессоров, на практике по скорости работы чаще всего мало отличался от типичных 8-разрядных моделей, зато К1801ВМ1 был гораздо удобнее для программиста, поскольку имел чрезвычайно удачную и любимую многими систему команд машины PDP-11. Процессор БК работал на достаточно высокой частоте — 3 МГц (причем К1801ВМ1 мог штатно работать на частоте до 5 МГц, а на практике и до 6 МГц), однако значительно тормозился контроллером памяти и дисплея, снижавшим его производительность примерно на 20–30%. В результате максимальная скорость процессора при исполнении программ в ОЗУ была всего 250 тыс. оп/с. Впрочем, 16-разрядная архитектура с удачной системой команд позволяла БК вполне уверенно конкурировать по скорости с типичными 8-разрядными ПК, оснащенными процессорами с максимальной производительностью 500 000–1 000 000 оп/с.
ОЗУ и ПЗУ
Кроме процессора, важное значение имеют и другие параметры компьютера: объем ОЗУ и постоянной (постоянное запоминающее устройство — ПЗУ) памяти, графические и звуковые возможности, особенности клавиатуры, способность работать с внешними устройствами, возможности расширения. По этим параметрам БК-0010 находится на вполне нормальном среднем уровне, не слишком отличаясь в ту или иную сторону от зарубежных аналогов середины 1980-х. А советских аналогов в то время просто не существовало.
Объем оперативной памяти составлял 32 Кбайт и был поровну поделен между видеопамятью, в которой хранилось изображение, выводимое на экран, и памятью для программ пользователя. То есть для хранения программ и данных выделялось всего около 16 Кбайт — это не много, но не так уж и мало: аналогичная ситуация с памятью, а то и гораздо хуже, была и на многих зарубежных домашних ПК. Даже первые IBM PC в самой простой, но отнюдь не дешевой (1565 долларов США без всякой периферии) комплектации имели всего 16 Кбайт ОЗУ, наряду с недорогими вариантами таких популярных ПК тех лет, как ZX Spectrum, Acorn BBC и др. А известнейший Commodore VIC-20 (предшественник Commodore 64), в начале 1980-х первым среди всех ПК преодолевший планку в 1 млн проданных экземпляров, имел всего 5 (!) Кбайт ОЗУ. Кстати, главный американский заочный конкурент БК — TI-99/4A (также имевший 16-разрядный процессор) — был укомплектован просто издевательским ОЗУ пользователя: всего-навсего 256 байт! Правда, видеопамять у 99/4А тоже составляла 16 Кбайт.
Под постоянную память (ПЗУ) в БК-0010 было отведено 32 Кбайт, из которых обычно использовалось лишь 24 Кбайт, то есть установлено три микросхемы по 8 Кбайт и одна панелька оставалась пустой — туда при необходимости можно было воткнуть ПЗУ с программами пользователя. Причем два гнезда для ПЗУ (одно из которых пустое) находились под специальной съемной крышкой, расположенной прямо на передней панели БК слева от клавиатуры. Таким образом, для замены ПЗУ даже не нужно было разбирать корпус. Забегая вперед, заметим, что и клавиатура БК-0010 предполагала простую возможность замены обозначений клавиш, то есть разработчики предусмотрели все, чтобы пользователь, заменяя ПЗУ и даже меняя обозначения клавиш, мог легко адаптировать его под свои собственные задачи.
Впрочем, подавляющее большинство владельцев БК использовали стандартные ПЗУ из комплекта ПК и не испытывали потребности в замене раскладки клавиатуры. К тому же имелась еще одна маленькая деталь: сделать собственные ПЗУ для замены штатных было не просто: микросхемы постоянной памяти КР1801РЕ 2, применявшиеся в БК, программировались только на заводе в процессе изготовления кристалла микросхемы (так называемые «масочные ПЗУ») и «прошить» их самостоятельно, с помощью какого-либо программатора, не представлялось возможным. Микросхемы КР1801РЕ 2 можно было заменить аналогичными по структуре ППЗУ (программируемые ПЗУ) К573РФ3 с ультрафиолетовым (УФ) стиранием, но они были в большом дефиците и малодоступны; использовать какие-то более распространенные микросхемы (например, популярные 8-разрядные ППЗУ с УФ-стиранием) теоретически было возможно, однако более сложно из-за специфичности архитектуры КР1801РЕ 2 и К573РФ3 (они специально рассчитаны на подключение к 16-разрядной шине МПИ).
Посмотрим, что находилось в ПЗУ БК-0010. Главная его часть — программа-монитор и драйверы устройств, занимавшие одну 8-килобайтную микросхему. Здесь же находились важнейшие драйверы, обеспечивающие ввод с клавиатуры, вывод на экран, работу с магнитофоном и т. д., а также простая программа-монитор, которая использовалась в основном для загрузки и запуска программ в машинных кодах. Вторая микросхема ПЗУ на 8 Кбайт — это тестово-диагностическая программа, позволявшая проверить работоспособность всех устройств БК. Естественно, на нормально работающем компьютере она была просто не нужна и вообще использовалась редко, поскольку особых проблем с надежностью у этого ПК не было. Наконец, третью микросхему занимал интерпретатор языка Фокал (расшифровывается как «формульный калькулятор»).
Наличие в ПЗУ Фокала вместо уже стандартного в то время Бейсика служило одной из главных мишеней для критиков БК-0010. Действительно, программ на Бейсике тогда публиковалось огромное количество, а Фокал был известен даже не всем программистам. Однако сам по себе Фокал считался простым и достаточно удобным языком, позволявшим создавать программы любого назначения. И хотя у него имелись некоторые важные отличия от Бейсика, они были направлены на упрощение программирования, так что освоение Фокала выглядело ничуть не более сложным, чем обучение Бейсику. Владельцы БК быстро привыкали к Фокалу и особых неудобств от его наличия вместо Бейсика вроде бы не испытывали. При этом Бейсик тоже можно было использовать, загружая его в оперативную память с магнитофона. Правда, объем ОЗУ пользователя и без того был невелик, так что в этом случае для программ на Бейсике оставались считаные килобайты.
Использование в БК-0010 Фокала оставалось большой загадкой для всех его владельцев. Однако все объясняется просто. Дело в том, что на момент начала выпуска БК для подобных ПК уже был разработан почти подходящий компактный, размером около 8 Кбайт, интерпретатор Бейсика — так называемый Бейсик-ДВК (версия, адаптированная для компьютеров ДВК), но он отличался чрезвычайно низкой скоростью работы и отсутствием поддержки графики. Вряд ли разработчиков БК смутила скорость работы, скорее всего, они просто не смогли уместить эту версию Бейсика, переделанную для БК с добавлением графических и других команд, в 8-килобайтное ПЗУ.
В то же время для PDP-совместимых компьютеров существовала версия интерпретатора Фокала размером около 6 Кбайт. Даже после расширения простейшими функциями работы с графикой и магнитофоном она легко помещалась в 8-килобайтное ПЗУ вместе с полными текстами сообщений об ошибках и краткой справкой об управляющих клавишах, командах и функциях Фокала. К тому же программы на Фокале работали нередко в разы быстрее, чем на Бейсике-ДВК. Были у Фокала и другие достоинства.
В этих условиях разработчики БК-0010 приняли в 1983 году простое решение: не пытаться создать новый Бейсик размером до 8 Кбайт либо отвести под него 16 Кбайт, либо ужать существующий Бейсик-ДВК (который и без того был очень упрощенной версией), а взять уже готовый, очень компактный интерпретатор Фокала. Впрочем, разработку нового транслятора Бейсика специально для БК все же заказали Вильнюсскому госуниверситету, и в 1985 году вышла первая его версия размером 9 Кбайт для загрузки в ОЗУ БК с кассеты, а в 1986 году — 24-килобайтная версия для размещения в ПЗУ (о вильнюсском Бейсике речь пойдет ниже).
Графика и звук
БК-0010 имел чисто графический экран с двумя основными разрешениями: 256 строк по 512 точек в строке и 256 строк по 256 точек. Первое поддерживало только два цвета для любой точки, второе — четыре, причем эти цвета постоянны: черный, красный, зеленый и синий. Белый цвет в цветном режиме не отображался. Программируемой палитры не было. Специальный текстовый режим с минимальным объемом видеопамяти отсутствовал: как и на многих других ПК, символы выводились в графическом режиме в виде маленьких картинок, что позволяло без особых проблем показывать на экране любые символы и буквы любых алфавитов. На экране отображалось 24 строки по 32 или 64 символа в каждой, вверху экрана была расположена служебная строка, на которой выводились текущие режимы работы и подсказка о назначении «функциональных» клавиш. В служебной строке отображалась и характерная для БК «гребенка», на которой отмечались заданные пользователем позиции табуляции. Имелась достаточно редкая для того времени функция аппаратного плавного вертикального скроллинга — прокрутки экрана.
БК оснащен двумя видеовыходами — цветным RGB для подключения цветного монитора или телевизора (ТВ) и черно-белым композитным — для подключения черно-белого монитора или ТВ. Правда, во многих БК выход RGB на заводе почему-то не устанавливался, и его приходилось допаивать уже самому владельцу ПК. Высокое разрешение (512×256) поддерживалось только черно-белым выходом, а при подключении через цветной изображение на экране в таком разрешении приобретало странный вид с непонятными цветными контурами и точками. При этом разобрать надписи было можно, но нормальной такую работу не назовешь. Владельцам цветных телевизоров приходилось подключать БК двумя кабелями: один от черно-белого выхода БК к композитному входу телевизора, другой — от цветного выхода БК к RGBвходу ТВ, а в процессе работы переключать входы в зависимости от разрешения, используемого в программе. Впрочем, большинство программ, особенно игровых, задействовало только цветной режим с разрешением 256×256, и частое переключение не требовалось. К тому же при работе в Фокале, Бейсике или в системном мониторе можно было с клавиатуры быстро переключать разрешение экрана, приводя его к нужному виду.
Кстати, подключить БК, как и почти все остальные отечественные ПК, к цветному телевизору в цветном режиме было не так-то просто: большинство телевизоров не имели RGB-входа, хотя на многих моделях его установка была предусмотрена. Дело в том, что до массового появления домашних ПК к видеовходам просто-напросто было нечего подключать. А устройства наподобие видеомагнитофонов или игровых телеприставок, работавших в паре с телевизором, практически всегда имели обычный антенный выход, подключавшийся соответственно к антенному входу любого ТВ. В общем, владельцам БК приходилось либо производить несложную доработку своих телевизоров, либо лицезреть даже на цветном телевизоре только черно-белое изображение.
Следует заметить, что на БК существовал еще так называемый режим расширенной памяти (РП), в который можно было быстро переключиться с клавиатуры. В этом режиме для вывода изображения отводилась только верхняя четверть экрана, зато ОЗУ пользователя расширялось до 28 Кбайт. То есть при необходимости, например для проведения сложных расчетов или создания баз данных и т. д., предусматривалась возможность значительно увеличить длину программ, не требующих задействования всего экрана. Интересно, что некоторые программы, вроде копировщиков файлов, использовали часть экранной памяти для хранения программ и данных и без перехода в режим РП — тогда на экране появлялись области шума из случайных точек случайного цвета.
Звуковые способности у БК-0010 самые обычные: никакого специального звукогенератора, звук воспроизводится чисто программно изменением бита в регистре (точнее, двух битов). Такое решение было весьма характерно для многих советских и зарубежных ПК того времени. Встречались даже компьютеры вовсе без звука, например «Роботрон-1715» (ГДР). Конечно, звучание такого синтезатора было совсем простым — обычно одноголосный звук с прямоугольной волновой формой одинаковой амплитуды, и всё. Хотя при более хитрых алгоритмах вывода звука на БК можно было синтезировать и многоголосную музыку, и шумовые эффекты, и даже имитировать изменение громкости. Кроме того, использование специального встроенного аппаратного таймера БК позволяло получить интересные звуковые эффекты. Однако в моменты воспроизведения звука процессор БК, как правило, был полностью загружен, поэтому вывод звука в процессе игры сильно тормозил работу, а о постоянном звучании музыки в игре речи обычно вообще не шло. В некоторых играх музыка все же звучала, но выводилась она короткими фрагментами, в промежутках между которыми процессор успевал выполнять другие задачи вроде перемещения объектов на экране. Или же использовались более сложные алгоритмы, задействующие встроенный таймер и т. д.
Клавиатура
Еще один интересный момент — клавиатура БК-0010. Самый первый вариант БК снабжался так называемой мембранной клавиатурой, представлявшей собой совершенно ровную поверхность с отпечатанными обозначениями клавиш. Под рисунком каждой клавиши в некотором углублении находятся контакты, которые замыкаются довольно сильным нажатием пальца. Такая конструкция, как и на других ПК, использовавших подобный вариант клавиатуры (например, Atari 400), сильно отличалась от привычных объемных клавиш типа пишущей машинки и вызывала много нареканий. В результате производители БК через некоторое время заменили мембранную клавиатуру на другой вариант, внешне похожий, но внутри заметно отличный: вместо мембранной пленочной клавиатуры были установлены обычные кнопочные переключатели с невысокими пластиковыми площадками-толкателями, а сверху все это накрывалось бумажным листом с цветными обозначениями клавиш и прозрачной защитной пленкой. Работать с такой клавиатурой было намного приятнее, хотя опять же привычная тактильная связь, характерная для объемных клавиш, здесь отсутствовала — поверхность клавиатуры оставалась совершенно гладкой, да и ход клавиш был совсем небольшой. Тем не менее этот вариант оказался довольно удачным и надежным.
Общее количество клавиш — 86, что совсем не мало. К примеру, у знаменитого ZX Spectrum их было всего 40. При этом у БК клавиши разного назначения выделены разными цветами.
Бросается в глаза не только веселенькая расцветка клавиатуры, но и большое количество непривычных и загадочных клавиш с обозначениями на русском языке: ГРАФ, ШАГ, ПОВТ, БЛОК РЕД, ИНД СУ, ЗАП, УСТ ТАБ, СБР ТАБ, ВС, ГТ и т. д. И все они выполняли какие-то важные и нужные функции. Например, кнопка ГРАФ переводила ПК в режим непосредственного рисования на экране, когда вместо привычного текстового появляется «графический» курсор, который можно перемещать с помощью стрелок, а кнопками ЗАП и СТИР включались режимы записи или стирания, чтобы курсор оставлял след (можно было выбрать один из 4 цветов) или стирал ранее нарисованное. То есть разработчики БК предусмотрели даже простейший графический редактор, встроенный в ПЗУ, и этот редактор, несмотря на свою примитивность, оказался очень полезен — он активно использовался для ввода в ПК даже весьма сложной графики (обычно она сначала рисовалась на миллиметровке или в школьной тетради в клетку, а перевести ее по точкам на экран было совсем уже просто, поэтому необходимости в использовании более сложного графического редактора часто просто не возникало).
Кнопки УСТ ТАБ и СБР ТАБ позволяли устанавливать или удалять на экране произвольные позиции табуляции (тоже весьма полезная функция), ГТ перемещала курсор на восемь позиций вправо, ШАГ позволял выполнять программу на Фокале или Бейсике пошагово (очень удобно при отладке программ), ИНД СУ включала отображение на экране управляющих символов (аналог кнопки «Пи» в современном MS Word). Кнопка ПОВТ служила для повтора последней нажатой клавиши (автоповтора при долгом удержании кнопки у БК в стандартном режиме не предусматривалось).
Кстати, особенностью контроллера клавиатуры БК являлось то, что он не мог отслеживать несколько одновременно нажатых кнопок — код клавиши выдавался только один, что несколько затрудняло управление в играх. Впрочем, при использовании нестандартных приемов можно было определить и несколько нажатых клавиш. К тому же почти во всех играх был предусмотрен выбор клавиш самим пользователем. А еще в играх очень помогал джойстик, который в этом случае, конечно, был намного удобнее клавиатуры.
БК-0010–01
Разработчики компьютера довольно быстро отреагировали на критику пользователей и в 1986 году создали усовершенствованный вариант БК под названием БК-0010–01, в котором исправили два наиболее спорных момента: во-первых, наконец поместили в ПЗУ Бейсик вместо Фокала, а во-вторых, поменяли клавиатуру на привычный вариант с объемными полноходовыми кнопками. При этом число клавиш сократили до 74, и качество клавиатуры вызвало не меньше замечаний, чем у первых моделей. Дело в том, что клавиши БК-0010–01 имели не слишком удачную конструкцию и были подвержены такому явлению, как «дребезг контактов», когда при однократном нажатии кнопки выдается сразу несколько одинаковых символов. Эта проблема в большей или меньшей степени присутствует во всех типах клавиатур, но обычно легко решается программным или аппаратно-программным способом. К сожалению, в БК-0010–01 предусмотренные конструкторами меры по защите от «дребезга контактов» оказались недостаточными, и в этом отношении новая клавиатура была явно хуже старой. Впрочем, пользователи БК как могли сами решали эту проблему, переделывая разными способами кнопки или просто нажимая на них короткими, четкими ударами. Интересно, что в новой модификации БК была убрана съемная крышка на передней панели для быстрой замены ПЗУ, да и способность замены обозначений клавиш пропала со сменой типа клавиатуры — словом, возможности адаптации компьютера под задачи пользователя несколько снизились. Видимо, это было сделано в связи с очень малой востребованностью этих функций в реальной жизни.
Бейсик в ПЗУ БК-0010–01 занимал три микросхемы — 24 Кбайт и представлял собой так называемый вильнюсский Бейсик, разработанный в середине 80-х в Вильнюсском университете, — очень интересный вариант транслятора компилирующего типа, позволявший выполнять многие программы в разы или даже в десятки раз быстрее, чем это делали интерпретаторы Фокала или Бейсика-ДВК. При этом для пользователя работа с таким транслятором практически не отличалась от работы с обычным интерпретатором. Бейсик БК был очень развитой версией, аналогичной стандарту MSX (Machines with Software eXchangeability) и поддерживающей почти все его графические и другие операторы, способной работать с целыми числами, а также с вещественными одинарной и двойной точности.
Правда, были у вильнюсского Бейсика и существенные недостатки: например, невозможность размещения нескольких операторов в одной строке и высокие требования к объему памяти. Первое ограничение — один оператор в строке — весьма непонятное и необъяснимое (тем более что упрощенная 9-килобайтная версия этого же Бейсика, предназначенная для загрузки в ОЗУ, позволяла писать несколько операторов в строке!). С памятью же ситуация была такая: поскольку Бейсик БК после подачи команды RUN (запуск на исполнение) сначала транслировал программу в особый промежуточный код, который исполнялся гораздо быстрее, чем это делали классические интерпретаторы, то в памяти БК должны были храниться исходный текст программы и как бы скомпилированный ее вариант или, по крайней мере, нужно было резервировать место под скомпилированную программу. Таким образом, для программы на Бейсике отводилась лишь половина пользовательской памяти БК, а фактически даже меньше — порядка 7 Кбайт, ведь нужно было еще оставить место под переменные и служебные данные. При этом на Фокале программа могла занимать порядка 15 Кбайт. Так что ситуация с памятью у Бейсика БК была очень странная: максимальная длина программы на Бейсике была в три с лишним раза меньше размера самого транслятора Бейсика. С другой стороны, 7 Кбайт все же хватало для составления почти всех учебных программ, а также для многих расчетов и даже вполне приличных игр. К тому же не следует забывать о режиме расширенной памяти, позволявшем увеличить размер программ почти вдвое за счет уменьшения объема видеопамяти.
Для совместимости с первым вариантом БК в комплекте БК-0010–01 поставлялся специальный блок МСТД, подключаемый к системному разъему и содержащий две микросхемы ПЗУ — с Фокалом и тес тово-диагностической системой. Таким образом, объем ПЗУ у БК-0010–01 мог доходить до 48 Кбайт (одновременно — не более 32 Кбайт), то есть вдвое больше, чем у БК-0010.
Интересно, что выпуск усовершенствованного варианта БК не означал автоматического прекращения производства старого. Оба компьютера — БК-0010 и БК-0010–01 — некоторое время выпускались вместе. При этом вариант 01 был на 50 рублей дороже — обычно он стоил 650 рублей (а в самом начале 1990-х — 750 рублей).
О памяти, звуке и периферии
Несколько слов об оперативной памяти БК. Конечно, ее объем был маловат для работы с большими программами или стандартными операционными системами, но создатели программ активно использовали драйверы устройств и знакогенератор, находящиеся в ПЗУ всех версий БК, что позволяло сократить размер программ на несколько килобайт. Стандартное, несменяемое ПЗУ БК-0010 содержало драйверы вывода текста на экран, рисования точек и линий, ввода с клавиатуры, чтения с магнитофона и записи на него и др. Оно же содержало и графические образы всех символов, отображаемых на экране. Это значительно облегчало задачу программиста и сокращало требования к объему ОЗУ. Впрочем, возможность задействования ресурсов штатного ПЗУ активно использовалась и на других ПК (например, на «Спектруме»), хотя и не на всех: скажем, у «Вектора-06Ц» в ПЗУ никаких драйверов устройств и знакогенераторов не предусматривалось — всё это должно было загружаться в ОЗУ в качестве составной части любой программы, что несколько сокращало, так сказать, полезный объем ОЗУ пользователя и на несколько килобайт увеличивало размер программ. С другой стороны, по этой причине в большинстве программ, включая игровые, на БК используется одинаковый шрифт и очень похожее оформление заставок игр, в то время как на «Векторе» оформление гораздо разно образнее.
О выводе звука создатели ПК того времени особо не заботились: в советских компьютерах не было ни выхода на наушники, ни специального линейного выхода. В каждом ПК имелся маленький, но довольно громкий динамик или пьезодинамик, а для получения большей громкости и лучшего качества звука использовался магнитофонный разъем ПК, куда поступал звук не только с магнитофонного выхода, но и с выхода отдельного звукосинтезатора, если он, конечно, был. К этому разъему легко подключался любой усилитель, в роли которого чаще всего выступал тот же магнитофон, ставившийся на паузу в режиме записи. Соответственно, наушники подключались уже к магнитофону или усилителю.
К концу 1980-х для БК-0010 выпускалось несколько дополнительных устройств, расширяющих его возможности: например, джойстики для игр, манипулятор типа «мышь» под романтичным названием «Марсианка», простой многоголосный музыкальный синтезатор «Менестрель», контроллер флоппи-дисководов и даже компактный рулонный графопостроитель.
БК-0011 и БК-0011М
Советские покупатели домашних ПК, люди, как правило, образованные и осведомленные о зарубежных достижениях в этой сфере, вовсе не были на всё согласными и неразборчивыми потребителями. Напротив, наши пользователи близко к сердцу принимали недостатки отечественной техники и с удовольствием слали разработчикам и изготовителям первых ПК свои замечания и предложения по их усовершенствованию. Главными недостатками БК считались малый объем ОЗУ, малое число отображаемых цветов, сравнительно медленный процессор, нестандартная клавиатура и наличие в ПЗУ Фокала вместо Бейсика. Как уже упоминалось, часть этих недостатков была исправлена в 1986–1987 годах выпуском БК-0010–01. В те же годы была разработана и значительно усовершенствованная модель БК-0011, имеющая вчетверо больший объем ОЗУ — 128 Кбайт (при этом ОЗУ пользователя (96–112 Кбайт) — в 6–7 раз больше, чем у БК-0010!), более высокую тактовую частоту (4 МГц вместо 3 МГц), контроллер флоппи-дисководов, два экранных буфера по 16 Кбайт и разные варианты цветовой палитры.
Однако, по имеющимся данным, серийный выпуск ПК БК-0011 начался только в 1989 году, причем через год он был заменен на БК-0011М — модель, имевшую улучшенную совместимость с БК-0010. Внешне БК-0011 был копией БК-0010–01, но внутри отличия довольно большие.
К сожалению, вопреки ожиданиям многих пользователей, в новой модели не оказалось существенных изменений графических возможностей — ни увеличения числа одновременно отображаемых цветов до 16, ни программируемой палитры. Разработчики добавили только выбор одной из 16 фиксированных па литр и второй кадровый буфер.
Иными словами, графика в программах для БК-0011/0011М стала заметно разнообразнее: в частности, появился-таки белый цвет в цветном режиме! — но радикального ее улучшения не произошло. Впрочем, в отношении графики БК-0011/0011М среди массовых советских домашних ПК уступали только «Вектору-06Ц», ПК8000 и отчасти клонам «Спектрума». Остальные компьютеры одновременно отображали либо те же 4 цвета, либо 8 цветов в низком разрешении, либо имели монохромную графику (белое на черном), либо вообще не имели графического режима.
Внешняя память
В качестве внешнего запоминающего устройства в первые годы жизни БК-0010 использовались обычные бытовые магнитофоны. Стандартная скорость записи выбрана достаточно высокой — 1 200 бит в секунду (у многих зарубежных ПК 1980-х она в 2–4 раза ниже), то есть загрузка программ занимала примерно одну-две минуты, и это было вполне терпимо. Причем в этой части конструкции разработчики БК-0010 использовали оригинальное решение: для вывода на магнитофон задействовалось 2 бита выходного регистра (фактически 2-битный ЦАП), а не 1 бит, как у всех остальных ПК. Это позволяло использовать для записи на магнитофон как минимум три уровня сигнала, а не два, как обычно, что повышало надежность хранения данных за счет применения для более коротких импульсов более высокого уровня сигнала.
На одну 60-минутную кассету при стандартной скорости записи помещалось около 500 Кбайт данных, а это порядка 30–50 типичных программ. Кроме обычного формата записи, любителями-энтузиастами было создано несколько так называемых турбокопировщиков, позволявших увеличить скорость записи в несколько раз. Соответственно, увеличивалась емкость кассеты и уменьшалось время загрузки программ. В общем, магнитофоны и кассеты в качестве средств хранения программ и данных были не таким уж плохим вариантом, поскольку магнитофон имелся практически в каждом доме, а кассеты тогда стоили гораздо дешевле дискет и были намного доступнее. Правда, использование магнитофона для разработки программ существенно замедляло и усложняло этот процесс, и здесь уже дисковод для гибких магнитных дисков оказывался более чем кстати. Возможность подключения БК к дисководам удалось реализовать в конце 1980-х годов, и в короткое время для БК было создано или адаптировано не меньше десятка дисковых операционных систем. Впрочем, дисководы тогда стоили очень дорого, нередко в разы больше самого ПК. Так, цена обычного 5,25-дюймового привода в магазинах «Электроника» достигала 1500–2000 рублей, поэтому большинство владельцев БК и в 1990-е годы продолжали пользоваться магнитофонами и кассетами.
Программы
В 1980-е годы нередко критиковалось отсутствие в комплекте поставки БК-0010 большого количества программ, а также сложность их приобретения. Однако это обычная проблема для любых только что выпущенных компьютеров, и БК, конечно, не стал исключением. И хотя программы активно разрабатывались профессиональными программистами и любителями-энтузиастами, приобрести их поначалу было непросто, поскольку заводы-изготовители к этому не очень-то и стремились (их профиль — выпуск электронной техники, а не тиражирование программ на кассетах), а фирм — распространителей программ для домашних ПК в середине 1980-х еще просто не существовало. Тем не менее владельцы этих компьютеров, конечно, с самого начала обменивались программами и информацией, а к концу 1980-х появились кооперативы, занимающиеся тиражированием и распространением ПО для БК-0010 и других домашних компьютеров, причем к тому времени для БК уже было создано огромное количество программ самого разного назначения, включая, естественно, игры, обучающие программы, системные и прикладные. Например, на БК встречалось как минимум три версии Бейсика: уже упоминавшиеся вильнюсские «полукомпиляторы» объемом 24 Кбайт (в ПЗУ) и 9 Кбайт (для загрузки в ОЗУ), а также чистый интерпретатор Бейсик-ДВК размером около 8 Кбайт. Из языков программирования, соответственно, был также популярен Фокал, для которого создавались полезные расширения (Focod, XFocal) и даже компиляторы.
Другая интересная разработка, ориентированная в основном на сферу образования, — так называемый Т-язык, интерпретатор которого позволял создавать довольно быстрые и красочные обучающие, демонстрационные и игровые программы. На БК были и трансляторы таких языков, как Форт и Си. Но, безусловно, главным языком программирования для создания серьезных программ стал Ассемблер, родной язык микропроцессора ПК, для которого существовало множество различных трансляторов, в том числе объединенных с редактором текста, а также дизассемблеры и отладчики.
Программирование на Ассемблере БК довольно просто осваивалось не только программистами, но и любителями-энтузиастами, что позволило в достаточно короткие сроки создать для БК большую библиотеку ПО. Значительно упрощало разработку программ и наличие в ПЗУ компьютера стандартных драйверов ввода-вывода с доступом через программное прерывание EMT. Использование этих драйверов подробно описывалось в документации, прилагаемой к каждому БК. Много хороших игровых, обучающих и прикладных программ создано и на вильнюсском Бейсике, который, будучи как бы полукомпилятором, отличался очень высокой скоростью выполнения простых операций, особенно с целыми числами. При этом в программах на Бейсике часто использовались и подпрограммы в машинных кодах, позволяющие еще больше ускорить какие-то важные действия, например вывод графики на экран.
Для БК известно более 800 игр на Ассемблере и множество на Бейсике и Фокале. Общий уровень игр высокий, много игр оригинальных или почти оригинальных, а не «содранных» один в один с популярных иностранных компьютеров. Отмечу, что если первые игры для БК часто были черно-белыми (что, впрочем, не означает их плохого качества), то к концу 1980-х программисты уже вовсю использовали цветовые возможности ПК, создавая красочные заставки, задействуя псевдоцвета (смешивая основные цвета в шахматном порядке или полосами и т. п.) для преодоления ограничения в 4 отображаемых цвета, программно реализуя цветные «спрайты» с точным наложением на сложный фон.
БК-0010: итоги
Подводя итоги рассказа о первом советском бытовом компьютере «Электроника БК-0010», еще раз отметим его сильные и слабые стороны.
Сильные стороны. В целом компьютер получился, безусловно, удачным. Симпатичный и компактный корпус, высокое качество изготовления, современная полностью 16-разрядная архитектура с очень удобной системой команд микропроцессора — это однозначные плюсы.
Недостатки и спорные моменты. Небольшой объем ОЗУ и малое число отображаемых цветов, с одной стороны, конечно, минус, особенно для конца 80-х — начала 90-х, хотя в начале 1980-х такая память и такие графические возможности были вполне обычными и на других ПК. С другой стороны, памяти могло быть еще меньше (как у некоторых популярных зарубежных ПК начала 1980-х), и хорошо, что поддержка цвета и графики вообще предусмотрена разработчиками БК, поскольку в те годы вполне обычными были компьютеры вовсе без графики и цвета, с чисто текстовым монохромным экраном, как, например, знаменитые TRS-80, Commodore PET или Sinclair ZX81, а позднее отечественные ПК на основе «Радио-86РК». Использование в ПЗУ Фокала вместо Бейсика в первых вариантах БК также для кого-то большой недостаток, но это можно воспринимать и как одну из изюминок нашего первопроходца, отличавшую его от массы зарубежных аналогов, всех, как один, оснащенных Бейсиком.
Сравнение с западными ПК
Сравнивая БК-0010 с иностранными домашними компьютерами того времени, можно заметить, что по всем параметрам он выглядит вполне достойно. Если посмотреть на широко известные недорогие иностранные ПК, появившиеся примерно в то же время, в 1982–1984 годах, то ничего сверхъестественного мы там не увидим — ни каких-то мощных процессоров, ни огромного объема памяти, ни невероятной графики.
В качестве процессоров использовались всё те же 8-разрядные модели, что и в середине-конце 1970-х, с тактовой частотой от 1 до 4 МГц, в среднем мало отличавшиеся по скорости от 16-битного процессора БК-0010 с частотой 3 МГц. Оперативная память составляла от 8 до 64 Кбайт (чаще всего от 32 до 64 Кбайт), видеопамять — от 6 до 20 Кбайт, ПЗУ — от 16 до 32 Кбайт, то есть никаких явных отличий в худшую сторону от среднего зарубежного уровня у БК мы не видим, скорее наоборот.
С графическими возможностями ситуация еще интереснее: с одной стороны, многие «иностранцы» в те годы уже поддерживали более многоцветную графику — обычно 8 или 15–16 цветов (вместо 4 у БК), но графика значительной части зарубежных ПК была ориентирована исключительно на игры, как, например, у Commodore 64, Atari или MSX, и отличалась большими ограничениями в плане разрешения экрана или произвольного выбора цветов точек. К примеру, у знаменитого ZX Spectrum при доступных 15 цветах имелись очень серьезные ограничения, связанные с атрибутной структурой цветного изображения: в каждом знакоместе экрана размером 8×8 точек (а это 64 точки) можно использовать лишь два цвета, что приводит к полной неспособности выводить детализированное многоцветное изображение. В результате из-за сложности формирования динамичной цветной картинки многие игры для него имели просто двухцветное игровое поле, то есть фактически монохромную графику, а в неигровой сфере графика ZX Spectrum отличалась ярко выраженным так называемым блочным эффектом, когда при выводе сложной картинки вместо четких разноцветных точек и линий отображались непонятные и незапланированные цветные квадратики.
Похожая проблема и у ПК стандарта MSX: у них в графическом режиме тоже подобная атрибутная графика с 15 цветами, но размер блока гораздо меньше — 1×8 точек. Здесь при выводе произвольной графики артефакты менее заметны, но также присутствуют.
При этом БК-0010 имеет меньшее количество доступных цветов, зато позволяет свободно выбирать из них цвет любой точки без всяких атрибутных ограничений, что дает возможность отображать гораздо более четкую и правильную произвольную графику. Кроме того, те же MSX и ZX Spectrum имеют лишь одно разрешение экрана, притом невысокое — 256×192 точки, а БК поддерживает не только среднее разрешение — 256×256, но и высокое — 512×256, что очень важно и полезно для профессионального и учебного использования ПК, такого как редактирование текста, работа с таблицами, графиками и т. д.
Также можно заметить, что ни MSX, ни ZX Spectrum не имеют плавного аппаратного вертикального сдвига экрана, а у БК он предусмотрен, и это очень полезно, прежде всего для игровых и некоторых других программ, выводящих динамичную графику (да и просто для работы с текстом). У таких домашних ПК, как Commodore 64 и Atari 400/800/XL/XE, графические возможности хорошие, но при этом они полностью ориентированы на игры. В неигровой сфере их способности сильно ограничены. Кстати, игры для С64 и Atari также чаще всего использовали сравнительно низкое разрешение порядка 160×200 точек, что зачастую делало графику в них достаточно грубой, простоватой и несовременной, и даже сравнительно широкая цветовая палитра не могла спасти ситуацию.
Еще одна популярная модель (гораздо более дорогая, чем ранее упомянутые) — Apple IIe — также имела странные параметры графики: хорошее основное разрешение — 280×192 точки — как бы при 6 цветах, но с очень специфическими ограничениями на выбор цветов, привязанными к американскому стандарту цветного телевидения NTSC, а также и другими недостатками. Качество цветной графики у нее как в играх, так и в неигровой сфере обычно было достаточно примитивным. Даже простой текст на цветном мониторе у Apple II выводился с очень заметными цветовыми помехами.
Наконец, даже у появившихся в 1983 году довольно дорогих IBM PC/XT основными видеокартами были CGA, отображавшие в цветном графическом режиме одновременно лишь 4 цвета, правда, с возможностью выбора из двух или трех палитр, но подбор цветов в палитрах вызывал еще больше вопросов, чем у БК. Кстати, процессор у PC/XT (Intel 8088), хотя и относился к классу почти 16-разрядных, но также не показывал выдающихся скоростных данных: во многих тестах PC/XT находился примерно на уровне массовых 8-разрядных моделей.
Как уже говорилось, звуковые способности БК-0010 и БК-0011 достаточно обычные, примерно такие же, как у Apple IIe, ZX Spectrum и IBM PC. Звук воспроизводился чисто программно с существенной загрузкой процессора, поэтому непосредственно во время игры звуковые эффекты, как правило, были минимальными и кратковременными, а музыка звучала в основном только на заставках и в паузах. В то же время игровые зарубежные ПК, такие как Commodore 64, Atari и MSX, имели более сложные звуковые синтезаторы, позволявшие выводить трех-четырехканальную музыку и эффекты без загрузки процессора, поэтому звуковое и музыкальное оформление игр на этих ПК, безусловно, более богатое. Между тем БК не являлся чисто игровым ПК, так же как, например, Apple II и IBM PC, поэтому отсутствие продвинутого звукового генератора для него вполне простительно и оправданно.
Вообще говоря, здесь напрашивается интересная мысль, что БК-0010 и БК-0011 по своим характеристикам действительно ближе к таким универсальным и даже профессиональным компьютерам, как Apple IIe, Acorn BBC и IBM PC, поскольку видеосистема БК также ориентирована на отображение произвольной графики, а не игровой; звуковой генератор также более характерен для неигровых ПК, да и 16-битный процессор примерно такой же, как в отечественных профессиональных ПК и микроЭВМ серий ДВК, «Электроника» и др. Соответственно, по большому счету такие ПК заслуживают более серьезного и уважительного отношения, чем компьютеры-игрушки или игровые приставки, ориентированные исключительно на такое интересное, но, к сожалению, почти бесполезное занятие, как компьютерные игры.
Впрочем, это не значит, что для БК не было игр, — конечно же, были, причем очень много, очень хороших и часто ничуть не хуже, чем на зарубежных игровых ПК. При этом владелец БК мог не только играть, но и, к примеру, заниматься творчеством, составляя программы для рисования на экране цветных графиков, узоров, витражей, фрактальных множеств, клеточных автоматов и т. д. и т. п., получая при этом четкое и детальное цветное изображение (хотя и не многоцветное), а не месиво из цветных квадратиков и прямоугольников, как на ZX Spectrum, MSX или С64.
Хотелось бы еще раз подчеркнуть, что БК-0010 находился на очень приличном уровне для недорогого домашнего ПК и вполне мог конкурировать с распространенными 8-битными зарубежными моделями (а стоимость 16- и 32-битных зарубежных ПК была многократно выше). Отдельные недостатки БК-0010, такие как сравнительно небольшой объем оперативной памяти и малое число отображаемых цветов, были практически исправлены в модели БК-0011/0011М. Программное обеспечение для БК — наиболее развитое среди советских домашних ПК. Вообще, серия БК-0010/БК-0011 была одной из наиболее массовых в СССР, входя в пятерку самых распространенных в СССР компьютеров (наряду с IBM-совместимыми, Spectrum-совместимыми, УКНЦ и ДВК). По имеющимся у нас данным, за все годы производства таких компьютеров их было выпущено около 162 тыс. При этом БК использовались не только дома, но и как учебные ПК, а частично и как профессиональные либо управляющие ЭВМ.
Кто первый?
Затронем еще один интересный момент, связанный с БК-0010. Был ли он действительно первым в мире, как утверждается во многих источниках, полностью 16-разрядным домашним ПК? Однако досконально разобраться в этом вопросе совсем не просто.
В начале 1980-х годов персональные компьютеры начали выпускать сотни фирм по всему миру, включая США, Великобританию, Германию, Францию, Японию, Южную Корею, Гонконг, Австралию, Бразилию, соцстраны и т. д. Но если посмотреть на известные модели, о которых можно найти достоверную информацию в Интернете, получается, что действительно до 1983–1985 годов 16-разрядных домашних ПК (во всяком случае, массово доступных по цене) не выпускалось и первым недорогим полностью 16-битным был именно наш БК-0010! На первый взгляд это довольно странно, поскольку 16-разрядные микропроцессоры появились еще в середине-конце 1970-х.
В частности, тот же Intel 8088 (16-битный внутри и 8-битный снаружи), ставший основой для первых IBM PC, был заявлен еще в 1979 году. Более того, на рубеже 1970–1980-х годов уже появились практически 32-разрядные микропроцессоры вроде знаменитого Motorola 68000. Однако в те годы производители и потребители домашних компьютеров были вполне удовлетворены возможностями самых дешевых 8-разрядных процессоров. К тому же конкуренция заставляла заботиться о минимальной себестоимости продукции, а 16- и 32-разрядные процессоры, как и другие компоненты для таких ПК, были в разы дороже. Так что, как ни странно, но, по-видимому, именно в СССР, в отсутствие конкурентной борьбы и «рыночной целесообразности», без особой шумихи был впервые разработан и с 1983–1984 года начал производиться недорогой 16-битный домашний компьютер.
Нередко можно встретить утверждение, что американская фирма Texas Instruments (TI) — очень известный в то время производитель калькуляторов, часов и другой электронной техники — еще в 1979 году выпустила на рынок 16-битную модель TI-99/4, и именно этот ПК был первым в мире 16-разрядным домашним компьютером.
Однако при этом не учитывается, что TI-99/4, как и выпущенный в 1981 году немного усовершенствованный TI-99/4A, имея действительно 16-разрядный процессор, не был полностью 16-разрядным ПК. Более того, фактически он даже не был ПК в привычном нам смысле этого слова, поскольку не имел оперативной памяти пользователя! Первоначально 99/4 создавался как почти 8-битный ПК (а конструктивно это была скорее игровая приставка с клавиатурой) со специальным процессором, который содержал встроенные 8 Кбайт ПЗУ и 256 байт ОЗУ и был 16-битным лишь внутри, а все остальные компоненты должны были оставаться 8-битными. В результате из-за технологических трудностей разработка процессора провалилась, и TI была вынуждена использовать в этом ПК уже выпускавшийся 16-битный процессор TMS9900, а конструкция ПК стала совсем странной: процессор, 256 байт статического «сверхоперативного» ОЗУ и примерно треть ПЗУ (8 Кбайт из 26) были 16-битными, а всё остальное (видеоконтроллер, ОЗУ видеоконтроллера, частично заменявшее отсутствующее основное пользовательское ОЗУ, внешнее ОЗУ, покупка которого обязательно требовалась для работы многих программ и устройств, основная часть встроенного ПЗУ, внешние картриджи ПЗУ) — 8-битным.
Более того, поскольку в штатном варианте ПК хранить программы в машинном коде было просто негде, разработчики 99/4 придумали специальный язык GPL, интерпретатор которого разместили в 16-битном «системном» ПЗУ, а все программы предлагалось выпускать на специальных 8-битных картриджах ПЗУ, причем не в машинных кодах, а на GPL. Они должны были считываться из картриджей как набор данных (с побайтным регистровым доступом) и исполняться интерпретатором GPL! Все эти несуразности, вызванные неудачей в разработке микропроцессора с 8-битной внешней шиной и стремлением заставить пользователей покупать достаточно дорогие картриджи (специальные чипы для которых производила только TI), привели к появлению одного из самых странных ПК, в котором благородная идея использования достаточно мощного 16-битного процессора и хорошего видео контроллера (8-битного) была сразу обесценена отсутствием пользовательского ОЗУ, 8-битным доступом к большей части внутренней и внешней памяти, а также использованием для написания программ не Ассемблера, а интерпретируемого языка GPL.
Отметим, что в самих же США компьютеры, имевшие 16-битную внутреннюю конструкцию процессора и 8-битную внешнюю (и ли 32-битную внутреннюю и 16-битную внешнюю), редко называли 16-разрядными (32-разрядными). Обычно указывалось лишь то, что у них 16-битный (32-битный) процессор. И это вполне понятно, ведь в таких ПК разрядность большинства важнейших компонентов (ОЗУ, ПЗУ, контроллеров) определялась именно разрядностью внешней шины данных процессора. В советской терминологии подобные ПК обычно именовались «частично 16-разрядными» («частично 32-разрядными») или «8/16-разрядными» («16/32-разрядными»). Яркие представители этого класса ПК — IBM PC и PC/XT. Они тоже имели 16-битную внутреннюю архитектуру процессора (с 8-битной внешней шиной), но 8-битную память (ОЗУ и ПЗУ) и 8-битные контроллеры устройств (видеокарта, контроллеры дисководов и жестких дисков, внешних портов и т. д.), что позволяло несколько снизить себестоимость компьютера. Однако называть такие ПК настоящими 16-битными было бы, конечно, нелогично — все их компоненты (кроме внутренней структуры процессора) были 8-битными.
Советский же БК-0010 имел не только 16-разрядный процессор, но и 16-разрядный доступ ко всей оперативной и постоянной памяти, а также 16-разрядные контроллеры дисплея и параллельного порта, что давало ему право называться настоящим, полностью 16-разрядным ПК.
Кстати, среди персональных компьютеров IBM полностью 16-разрядная модель IBM PC/AT на базе процессора 80286 появилась лишь в 1984 году и стоила она в базовой конфигурации (без жесткого диска, монитора и видеокарты!) от 4000 долларов.
Продолжение следует…
______________________________
Эта статься была опубликована в пятитомнике «Страницы истории отечественных ИТ», совместном некоммерческом проекте группы компаний Аплана (ранее АйТи) и «Виртуального компьютерного музея».