БК (бытовой компьютер) — семейство советских 16-разрядных домашних и учебных ЭВМ, совместимых по системе команд и частично по архитектуре с СМ ЭВМ, PDP-11 и ДВК.
Семейство компьютеров БК-0010 было разработано в НИИ точной технологии НПО «Научный центр», г. Зеленоград[2]. Главный конструктор от НИИТТ — Александр Н. Полосин[3], главный конструктор от завода «Экситон» — С. М. Косенков[2]. В январе 1985 года разработчики машины опубликовали статью с описанием БК в журнале «Микропроцессорные средства и системы» (печатный орган Государственного Комитета СССР по науке и технике, номер 1 за 1985 год)[4].
Окончательная разработка БК была осуществлена в 1983 г. на заводе «Экситон»[5], г. Павловский Посад, где и было налажено первое серийное производство в 1985 году[6].
Впоследствии опытные партии модели БК-0010 выпускались на Казанском заводе радиокомпонентов (Завод № 7) и «Нуклон» в городе Шяуляй (Литовская ССР). Последующие модели серийно производились также на заводах «Завод № 7», г. Казань, «Экситон»[5], г. Павловский Посад, «Нуклон» в г. Шяуляй (Литовская ССР)[1] (только модель БК-0010-01), в Армянской ССР (только модель БК-0010-01), а также на Заводе полупроводниковых приборов в Йошкар-Оле (только модель БК-0011). Полный спектр моделей БК производился только на заводе «Экситон».
Всего было произведено более 162 000 единиц БК-0010/0011; завод «Экситон» в 1985—1992 годы изготовил около 125 000 машин: около 78 000 для розничной продажи и более 44 000 в составе школьных классов[1]. Последние произведённые экземпляры БК относятся к 1993 году[7].
Процессор: К1801ВМ1 (совместим по системе команд с LSI-11/03 из семейства PDP-11) на тактовой частоте 3 МГц (в БК-0011/БК-0011М повышена до 4 МГц).
Оперативная память: первые 32 КБ адресного пространства, из которых 15,5 КБ отведено под программы и данные, 512 байт под стек и системные регистры, и ещё 16 КБ — под видеопамять. Имелась возможность перераспределить оперативную память (нажатием определённой комбинации клавиш или выдачей специальной команды) — при этом 12 КБ переназначалось из видеопамяти в память программ; в таком режиме на экране отображалось всего четыре строки текста. В языке «Фокал» БК-0010 командой «V» можно узнать количество свободной памяти (после включения отображает «СВОБОДНО 35776 Б. ОЗУ» — это в восьмеричнойсистеме счисления, в десятичной — 15358 байт)[8].
Постоянная память: последние 32 КБ адресного пространства. Из них 8 КБ отводилось под драйверы клавиатуры, дисплея и магнитофона (аналог BIOS) и мониторную систему (простой вариант операционной системы с командной строкой); небольшой диапазон адресов в конце адресного пространства процессора занимали системные ячейки, управляющие периферийными устройствами, такими как магнитофон и параллельный интерфейс.
Стандартным устройством хранения данных служил бытовой кассетный магнитофон с функцией управления двигателем, или без неё. В компьютере имелось реле для запуска/остановки двигателя магнитофона.
В качестве дисплея использовался бытовой чёрно-белый или цветной телевизор (после доработки) или, реже, специальный монитор.
Особенность устройства отображения, собранного на контроллере К1801ВП1-037, заключается в наличии только графического режима. Текстовый режим отсутствует; буквы при выводе преобразуются в их графические изображения и выводятся как картинка.
Графический режим только один (если не считать режим сокращения графического ОЗУ в пользу памяти программ), с двумя способами вывода на экран телевизора. Для программ нет разницы, каким из них картинка выводится на экран — организация видеопамяти не меняется. Разницу ощущает лишь пользователь, смотрящий на экран. Компьютер имеет два разъёма для подключения к телевизору: чёрно-белый (телевизионный сигнал с яркостной составляющей) и цветной (синхронизация + RGB). Способ вывода на экран определяется только тем, к какому из разъёмов подключён телевизор.
В видеосигнеле, выдающемся с разъёма чёрно-белого изображения, один бит ОЗУ видеопамяти кодировал ровно одну точку на экране, которая, соответственно, могла иметь только два состояния: чёрное и белое. Визуальые полутона могли достигаться при помощи дробления изображения (дизеринга). Каждое машинное слово кодировало 16 точек в строке, начиная с левого верхнего угла экрана. Всего в строке отображалось 512 точек, изображение состояло из 256 строк.
В видеосигнала, выдающемся с разъёма цветного изображения, каждая точка кодировалась парой битов. Соответственно, количество точек в строке уменьшалось вдвое, однако при этом каждая точка могла иметь один из четырёх цветов: красный, зелёный, синий или чёрный. Каждое 16-битное машинное слово кодировало 8 соседних точек в строке.
Драйвер дисплея может выводить в графическое ОЗУ текст двумя способами, адаптированными под два способа вывода информации графического ОЗУ на экран. При первом способе матрица символа из ПЗУ выводится так, что каждая её точка попадает ровно в один бит ячейки графического ОЗУ (64 символа в строке, оптимизация под чёрно-белый режим). При втором способе каждый бит матрицы транслируется в два соседних бита памяти (32 символа в строке, оптимизация под цветной режим, учитывается информация о текущем цвете букв). Режимы переключаются с клавиатуры или передачей специального кода драйверу дисплея.
В таблице матриц символов изображение символа с кодом 36, которое в кодировке ASCII соответствует символу доллара ($), заменено на изображение общего знака денежной единицы (¤).
Чёрно-белый режим отображения
Чёрно-белый режим отображения через цветной разъём
Цветной режим отображения. Горизонтальное разрешение снижено вдвое по сравнению с выводом через чёрно-белый разъём
Контроллер клавиатуры не воспринимает одновременного нажатия нескольких клавиш. Каждое нажатие клавиши сопровождается коротким звуковым сигналом, аналогичным команде «ВЕЕР» во встроенном языке Бейсик.
Не все клавиши при нажатии передают коды в компьютер. Некоторые из них являются чистыми коммутаторами электрических сигналов на входе микросхем: ⇓, АР2, ЗАГЛ, СТР, СУ. Клавиша СТОП в компьютере «Электроника МС 0513» аппаратно вызывает немаскируемое прерывание.
Штатный режим ввода — ввод заглавных букв. Вводить строчные можно, удерживая клавишу ⇓, которую условно можно назвать «Shift наоборот», или включением соответствующего режима клавишами ЗАГЛ и СТР.
В драйвере клавиатуры не реализован автоповтор нажатия клавиши при её удержании. Штатная функция автоповтора последнего введённого символа достигается нажатием и удержанием клавиши ПОВТ.
Компьютер имеет встроенный пьезокерамический динамик. Драйвер клавиатуры БК, размещённый в ПЗУ, при нажатии каждой клавиши генерирует звук, напоминающий английское слово «quick».
Предположительно, модели БК нумеровались в двоичной системе счисления: 0010 (2), 0011 (3), 0100 (4).
Предшественницей БК, по-видимому, была «Электроника НЦ-8010», разработанная в НИИТТ в 1981 году[12]. Эта модель на основе двух процессоров К1801ВЕ1 так и не была запущена в производство.
Базовая модель с мембранной клавиатурой и интерпретатором языка Фокал в ПЗУ.
Конструктив БК-0010 не предусматривал расширения ОЗУ. Периферийные устройства (принтер, НГМД с контроллером) существовали, но в продажу поступали редко и были дефицитными.
Мембранная клавиатура представляла собой печатную плату с установленными на ней 92 переключателями ПКН-150, закрытую цветным плёночным шильдом. На шильде были нанесены обозначения клавиш и функциональных зон. Предполагалась возможность замены шильда в соответствии со спецификой используемого программного обеспечения.[4]
Вариант БК-0010 с механической клавишной клавиатурой МС7008 вместо плёночной и языком BASIC-86 («Бейсик Вильнюс») в ПЗУ. Интерпретатор языка Фокал перенесён в ПЗУ специального подключаемого модуля МСТД (мониторная система тестирования и диагностики). Этот модуль, помимо запуска тестовых программ, позволяет вводить программы в кодах и работать с магнитофоном.
В целях экономии памяти, тексты ошибок Вильнюсского Бейсика не были зашиты в ПЗУ, поэтому ошибки выдаются не текстом, а кодами, например, «ОШИБКА 4». Коды ошибок Вильнюсского Бейсика совпадают с кодами ошибок MSX BASIC.
Компьютер получил механическую 74-клавишную клавиатуру. Хотя она была и более удобна, чем плёночная, кнопки этой клавиатуры были достаточно тугими и подверженными дребезгу. По сравнению с БК-0010 тут на 19 клавиш меньше, в частности, исчезли клавиши ГРАФ, ЗАП, СТИР.[14]
Из конструкции исключена крышка отсека ПЗУ и панелька для подключения дополнительной микросхемы.
«Школьные» модификации, дополнительно комплектовались блоком ИРПС для соединения в комплекс КУВТ-86, состоящий из ДВК-2МШ или ДВК-3 в качестве файлового сервера и до двенадцати БК-0010Ш.
ПЗУ содержало Фокал (прошивка 084, поддерживающая прерывания от ИРПС 3608, 3648). Отличительный признак 084 прошивки — при отключённом ИРПС — в служебной строке надпись ТЛГ ОТКЛЮЧЕH. Эта прошивка позже ставилась куда угодно, даже в БК0010-01 в блок МСТД, где ИРПС было просто некуда втыкать[15].
Выпускалась с конца 1989 года. Отличия от БК-0010[16]:
процессор стал работать на частоте 4 МГц
больший объём оперативной памяти — 128 КБ, постраничная организация памяти, две страницы памяти можно было поочерёдно отображать на экран, что обеспечивало мгновенное обновление информации
цветной экран по-прежнему 4-цветный, но появилась возможность включить одну из 16 экранных палитр, но палитры № 9 и № 10 были почти одинаковыми, а палитры № 5, 6, 7 и 8 содержали только по два цвета, уже имевшихся в других палитрах — таким образом, действительно полезных палитр было 11.
контроллер дисковода стал входить в стандартную поставку
на разъёмы МПИ и УП выведено больше сигналов
возвращена панелька для сменного ПЗУ и крышка соответствующего отсека.
Из-за замены стандартной PDP-11-совместимой мониторной системы на собственную, на данной модели загрузка программ осуществляется путём ввода команды L, а запуск — вводом адреса программы.
Исправленная версия БК-0011. Также называлась «Электроника МС 0513»[13].
Под БК-11 обычно понимается БК-0011М, так как БК-0011 было выпущено немного. Одно из заметных исправлений — на БК-0011 не работал звук в программах, написанных для БК-0010; в БК-0011М эта ошибка была исправлена.
Эта машина в корпусе от УКНЦ, по всей видимости, не пошедшая в серию, упомянута в статье А. Люкшина «Тернистый путь БК в наш дом»[17] и С. М. Косенкова «Новые модели семейства БК»[18]. В неё, помимо 16-разрядного процессора К1801ВМ3, предполагалось ставить второй процессор — 8-разрядный КР580ВМ80А либо 16-разрядный (x86-совместимый) КР1810ВМ86, для совместимости с имеющимися наработками, предназначенными для этих процессоров.
Параллельный 16-разрядный программируемый порт ввода-вывода, выведенный на разъём СНП-58 с обозначением «УП», позволял подключать принтер и другие периферийные устройства по интерфейсу ИРПР. Также в компьютере реализован последовательный интерфейс ИРПС, который при минимальной доработке компьютера выводился на тот же разъём программируемого порта ввода-вывода.
Системная шина частично реализует интерфейс МПИ, выведенный наружу через другой разъём СНП-58. Фактически это аналог разъёма расширения на материнских платах современных ПК.
Выпускалось несколько стандартных заводских модулей, подключаемых к разъёму расширения МПИ:[19]
МСТД (Мониторная Система Тестовой Диагностики) — блок для БК 0010-01, в ПЗУ блока размещался Фокал и диагностические тесты (децимальный номер 3.069.007, прошивка № 018 и № 019); также существуют МСТД для БК-0011 (децимальный номер 3.069.009, прошивка № 203) и БК-0011М (децимальный номер 3.069.010, прошивка № 330), содержащие только тесты.
КМК — Контроллер МоноКанала[26] для связи до 30 штук БК в школьную сеть «ШКОЛОК-0011», также известную как «КУВТ УКНЦ-01»[27], с топологией «общая шина», скорость 57 600 бод, сетевой адрес станции в диапазоне 1—31[28] (децимальные номера 2.165.004 — «Блок КМК», 2.165.006 и 2.165.010 — «Блок КМК10», 2.165.007 — «Блок КМК11»).
КНГМД — интерфейс дисковода (децимальный номер 3.059.001 для БК-0011, ПЗУ № 253, 3.059.014 для БК-0011М, ПЗУ № 326[29][30]). Штатные блоки КНГМД содержали только контроллер дисковода и ПЗУ драйвера дисковода (без ОЗУ), поэтому не годились для БК-0010 и требовали доработки[31]; также продавались контроллеры КНГМД «Альтек» с 16 КБ дополнительного ОЗУ.
КРМП — Контроллер Рабочего Места Преподавателя, подключение дисковода и школьной сети, КНГМД + КМК (децимальный номер блока 3.059.007 для БК-0011, 3.059.015 для БК-0011М[29]).
Блок дополнительного ОЗУ 32К Саратовского завода «Эридан»[32][33] (16 × КР565РУ6 + КР1801ВП1-030 + КР1801ВП1-034)
К разъёму УП подключались:
Блок КПУ с интерфейсом ИРПР — подключение принтера («ПУ»); децимальный номер 3.059.003.
Блок КМ — подключение принтера («ПУ») и мыши «Марсианка»[34] («УВК»); децимальный номер 3.059.016.
Блок КМ10 с подключением только к «УВК» (без подключения к «ПУ»); децимальный номер 3.059.017.
ОС БК-11 — единственная операционная система, поддержанная производителем
В поставке БК-0010 был минимальный набор программ — кассета с примерами на Фокале или Бейсике, игра «Тетрис» и тесты оборудования. Позже для него был также адаптирован простой Бейсик с ДВК (он загружался с магнитофона в ОЗУ, занимая около 8 Кбайт и оставляя для программ порядка 7 Кбайт), а с 1985 года упрощённую (не полностью соответствующую стандарту MSX) версию «вильнюсского Бейсика» поместили в основное ПЗУ.
Однако приобрести профессионально написанное ПО для БК изначально было негде, даже при желании завод-изготовитель не мог распространять ПО самостоятельно из-за отсутствия правовой базы[17]. Основной объём программного обеспечения создавался самими пользователями — с нуля, либо путём адаптации с других ЭВМ близкой архитектуры, например с ДВК. Распространялись программы путём обмена на встречах энтузиастов — обычно на радиорынках. В 1987 году редакция журнала «Наука и жизнь» организовала заочный клуб «Контакт» для обмена программами БК[39][40]. В Москве действовал Московский клуб пользователей БК[41].
Рынок ПО для БК начал формироваться лишь к концу 80-х, с появлением кооперативов, однако для них более выгодным было тиражирование иностранных программ (в основном игр) для ZX-Spectrum. Тем не менее, из ПК оригинальной, разработанной в СССР архитектуры, БК отличался наиболее богатым набором программного обеспечения, включая:[42][43]
Кнопка сброса. Некоторые программы часто зависали, не все игры имели правильно работающую функцию выхода. Без кнопки сброса перезагрузить компьютер можно было выключением и включением питания, но это нередко приводило к преждевременному износу выключателя на блоке питания и к тому же очищало ОЗУ.
Переключатель паузы. Переключатель аппаратно приостанавливал выполнение инструкций процессором. Это было удобно для временной приостановки игр, не имеющих встроенной функции паузы. К сожалению, отдельные игры не возвращались после этого к работе корректно, так как программируемый аппаратный таймер в компьютере продолжал работать даже когда выполнение программы центральным процессором было заморожено.
Переключатель тактовой частоты процессора (переключатель «турбо»). Позволял изменить тактовую частоту со стандартной 3 МГц (в серии БК-0010*) на 4 либо 6 МГц, или со стандартной 4 МГц (в серии БК-0011*) на 3 либо 6 МГц. Не все экземпляры процессоров надёжно работали на частоте 6 МГц; пригодность каждого определялась опытным путём. Изменение тактовой частоты изменяло скорость игрового процесса в динамичных играх. Переключатель частоты обычно ставился вместе с переключателем паузы, так как в простейшей схеме переключателя частоты неизбежный дребезг контактов механического переключателя искажал форму тактового синхросигнала и мог привести к зависанию программы в результате сбоя процессора, если процессор не был остановлен на время переключения.
Выключатель звука, либо плавный регулятор громкости встроенного пьезоэлектрического динамика. Одновременно в корпус мог быть установлен более громкий динамик.
Компьютеру были посвящены многочисленные самодеятельные информационные бюллетени (фэнзины), в частности, «БК-ОБЗОР», газета «MaD Press» (Краснодар), газета «Дон» (Ростов-на-Дону), газета «КПСС»[54].
Митрюхин В. К., Донской А. Н., Михайлов А. В., Немов А. М.Программирование на БК-0010-01. — Чебоксары : РИО Чебоксарской типографии №1, 1993. — 1993 с.