Evgeny Pashigorov
tensor@urgal.dvgd.ru
БКашка, моя первая любовь.

БКашка, моя первая любовь.

Время летит незаметно. Попытался точно вспомнить, когда же я купил БКашку, не получилось. Так-так, думаю, еще несколько лет - и вообще все забуду. Вот и решил: запишу-ка я все, что еще не забыл, для памяти.

По крайней мере, это был или конец 1989, или начало 1990 г. Мой друг Толик Кадников привел меня в компьютерный класс (в котором он сам смонтировал локальную сеть из 10 компьютеров БК0010-01 и машины учителя ДВК-3) и показал мне ее.


Нет, это не БКашка. Но это ее родственники: ДВК-4, внешне такая же, как ДВК-3 (была машиной учителя в КУВТ-86), только монитор цветной , и справа - УК-НЦ (двухпроцессорная машина), тоже с цветным монитором (впоследствии я для своей БКашки купил такой же)

Компьютер я хотел иметь всегда. Еще когда прочитал Стругацких "Понедельник начинается в субботу". В то время компьютеры были большими... Воображение рисовало картины в виде здоровенных панелей с россыпями лампочек, переключателей, клавиш, ползущей из щелочки перфоленты, экранов осциллографов... И уже тогда я знал, что напишу программу для игры "Жизнь" Конуэя. Когда я прочитал про нее в книжке Гарднера, меня очень увлекла идея игры, и я даже пытался "вручную" проследить эволюцию простых конфигураций с помощью карандаша и ластика, но это было слишком медленно.

1977 год. Университет, первый курс, программирование... Первый язык программирования - алгол-60. Оглядываясь назад, одобряю выбор наших преподавателей. Мощный, структурный, понятный. В качестве первого языка программирования очень даже хорош. (После него стандартный ПАСКАЛЬ показался мне каким-то упрощенным или недоделанным.) Польская машина "Одра", устройство ввода - перфолента, вывода - печатающая машинка "Консул". Память у нее была на ферритовых колечках (каждое колечко - 1 бит). Как на такой машине работал компилятор, сейчас даже представить не могу!

Пятый курс. Друг Сашка Бредихин приобрел себе программируемый калькулятор "Б3-34". Как я ему завидовал! Это же был настоящий компьютер! Он мог запомнить 98 шагов программы, 98 нажатий на клавиши. А я считал интеграл для своего диплома на простом калькуляторе всю ночь (так и не знаю до сих пор, сколько раз я нажал не ту клавишу %) .

Я купил себе похожий калькулятор ("МК-51") уже когда стал работать, в году примерно 1985-86. И даже запрограммировал для него пару игр, и еще пару взял из "Науки и жизни". Удивился, что оказалось возможным реализовать самообучающийся алгоритм ("Чет-нечет"). С завистью читал в "Науке и жизни" про отечественный калькулятор с Бейсиком. Он со страшной силой превосходил по всем параметрам мой МК-51. Но в продаже его так и не видел никогда.

Были даже планы собрать компьютер самому. Тогда это было модно. Точнее сказать, иначе просто негде было его достать. Помню, было на выбор несколько вариантов: "Спектрум", "Радио-86РК" и "ЮТ-88". Больше всего меня привлекал "ЮТ-88". У него была очень удачная концепция: начиналось все с программируемого калькулятора (на базе К580ВМ80), затем, добавляя модули, постепенно расширяли клавиатуру, память, дисплей, и в конце-концов получался нормальный комп.

Но в нашем медвежьем углу я не смог насобирать деталей даже для него. (думаю, что это было к лучшему, иначе я мог бы и не обратить внимания на БКашку, которую расхваливал мне Толик в "дисплейном классе").

Надо сказать, что это не была любовь с первого взгляда. Никакого впечатления она на меня не произвела. Смешная неуклюжая клавиатура, смешные цветастые буковки на цветных мониторах (ужасного качества), их и прочесть-то невозможно было (правда, Толик их читал совершенно свободно, и со временем оказалось - читаются запросто!).

Но! Толик сказал: там 16-разрядный процессор. Я просто не поверил вначале. Самый лучший домашний компьютер в то время, который я знал, был Спектрум который все называли "Синклером"). Но и он внутри имел 8-разрядный Z80 (правда, это был наилучший из всех 8-разрядных микропроцессоров). А во всех журналах рекламировались разнообразные "Векторы", "Партнеры", "Микроши", "Агаты" и пр.,пр., всех не перечислить. Все 8-разрядные. (А еще, оказывается, были и зарубежные домашние компьютеры, о них мы вообще ничего не знали.) Про 16-разрядные процессоры я тогда только в книжках и журналах читал, и ужасно завидовал буржуям, что у них уже это есть. Это и решило дело. И через некоторое время Толик привез мне ее (из Москвы в нашу Тьмутаракань).

Обычная картонная коробка, внутри которой была она, блок питания, черненькая коробочка МСТД, шнуры и две тоненькие книжечки: описание Бейсика и руководство системного программиста. МСТД содержал загадочный язык ФОКАЛ. Бейсик - это было понятно. А вот руководство системного программиста - абсолютно не читалось! Вроде бы на русском языке, но абсолютно ничего не понятно. Умеют все-таки у нас делать описания! (Это, кстати, относится к любой нашей технической документации. Вся она написана так, чтобы невозможно было понять, как и что нужно делать, как это все работает.)

Бейсик - как азбука, изучать было нечего. Но он встроен в БКашку, включил -- и вот он. Работай! Сразу полез в графику, как ставить и стирать точки. Игра Конуэя "Жизнь", вот что надо было сделать для своего компьютера. Быстродействие в 300 тыс. операций в секунду впечатляло. Я же не думал, что это так мало! Моя программа вывела на экран "планер" и задумалась... Следующего хода я не дождался. Когда написал тестовую программу, заполняющую точками экран и увидел, как ползет линия по дисплею, понял: Бейсик мне не поможет, соптимизируй я эту программу и в 100 раз! Пришлось учить ассемблер.

Хорошо, что Толик достал где-то через знакомых книжечку (могу наврать в названии) К. Лин "Архитектура ЭВМ и программирование на языке ассемблера". Вот написал, а такое ощущение, что она называлась совсем не так. Ну ладно. В ней была описана система команд компьютера PDP-11. И почти все подходило к БКашке (ура!). Так как книжку надо было отдать, пришлось переписать в тетрадку все, что было возможно.

Так это и прошло параллельно: писал программу и учил ассемблер. Смешно вспоминать, как все это изучалось, читая "Руководство системного программиста" и пытаясь понять, что все-таки имели в ввиду авторы. Потом как-то сразу пришло понимание (Лин помог).

В результате появилась моя первая программа на ассемблере - реализация игры "Жизнь" Конуэя. Сама программа утеряна, осталась только тетрадка с черновиком программы. Но она работала. :) (Недавно стало интересно попробовать, и я еще переписал "Жизнь" заново. Результат того стоил. Скорость возросла раз в 10.)

А потом Толик привез мне описание и исходные тексты Монитора. Лучшей документации и представить себе было нельзя! Тут уж что было непонятно, выяснялось чтением исходников, к тому же подробнейшим образом комментированных.

Да, мне повезло. И книга толковая попалась, и ассемблер просто замечательный - MICRO1103, и система команд процессора... Это же просто праздник какой-то! После DEC'овского ассемблера на другие и смотреть не хочется. Убогие они все!

Долгое время единственным устройством внешней памяти был магнитофон. В результате разборок с драйвером магнитофона был написан собственный копировщик (а кто их не писал?) с разными скоростями записи-чтения. Этот копировщик я назвал SEZAM (сетевой загрузчик с магнитофона. К тому времени мы смонтировали БКашный класс в поселке Февральск, и повышенные скорости записи пригодились для одновременной загрузки программ с компьютера учителя (тоже БКашки) в компьютеры учеников). Пришло осознание того факта, что на магнитной ленте со штатным драйвером большей скорости, чем двойная, не достичь, падает надежность. После долгих экспериментов был все-таки разработан собственный формат записи и копировщик Compact-Copy (1991 г), который в своем формате записывал в 3 раза плотнее штатного. До сих пор в ящика стола валяется кассета с программами, записанными в этом формате.

К началу 1991 г относится и задумка реализовать язык ЛОГО для БК. В какой-то книжке упоминался С. Пейперт, рассказывалось, как развиваются дети, играя с придуманным им языком и черепашкой ЛОГО.

Энтузиазма хватало, хотелось сделать что-то настоящее, ну и начал потихоньку. Весной 1991 г. начал писать редактор текста для ЛОГО. Работа заняла в общей сложности год. В качестве монитора использовал малюсенький телевизор "Электроника-11", черно-белый, 11 см по диагонали. Хотя и маленький, но картинку он давал отличную, на буквах пикселы сливались, знаки получались четкие-четкие! Внешние носители - аудиокассеты. В корпус от большого, но переносного кассетника я вставил вторую деку, получив два в одном. Удобство значительно возросло. На левой деке - системные программы: ассемблер, отладчик, редактор текста, на правой - файлы разработки.

ЛОГО был полностью завершен на этой системе. Я продал (!) его НПО "Альтернатива" из Барнаула в феврале 1992 г, и они какое-то время поставляли мой ЛОГО в составе программ для КУВТ-86.

Очень не хватало принтера. Но в то время он стоил недешево. Ну что ж, печатали на всем, что печатает! Подключил БКашку к телетайпу F1100, написал программу для печати текстов на нем. Распечатывал документацию, исходники программ. Хоть и медленно печатает, но читать все-таки удобнее с бумаги. Печатал я тексты и на польской "друкарке" DZM-180. Этот принтер был весьма неплохим: мог печатать на перфорированной бумаге (и узкой, и широкой) со скоростью 180 знаков в секунду!

Эх, десятка, десятка! Всем хороша была, но уж больно память куцая. Куда разработчики смотрели, оставляя пользователю 16к из 48к возможной памяти, я не могу понять. Да в общем-то это не единственный недостаток БКашки, но самый крупный. И тем не менее были созданы очень хорошие программы (в большинстве, конечно игры ) именно для 10-й БКашки.

И все же, когда Толик привез мне 11-ю, у меня появилась настоящая персоналка. 128к памяти! На первых порах ее нечем было занять.

Именно в этот период мы сдружились с Пашкой Сизых, тоже счастливым обладателем БК0011М, что позже привело к образованию программистского союза "Flame Associated" на базе амбициозного проекта "Принц", но об этом ниже.

Сперва показалось, что 11-я совершенно несовместима с 10-й. Даже не читала файлы с магнитофона! 11-й Бейсик не понимал бейсиковые программы с 10-ки. После внимательного чтения документации оказалось, что можно заставить читать с магнитофонона десяточные файлы. Загрузили с магнитофона монитор 10-ки, и 11-я превратилась в обычную 10-ку. Но оставалась куча страниц неиспользуемой памяти. Идея сделать RAM-диск просто напрашивалась, и я довольно быстро написал добавку к монитору 10-ки, позволяющую работать с ram-диском в 80к величиной. Учитывая, что программы для 10-ки были не более 16к, на диск помещалось более 5 программ/файлов. Это было клево: запустил ассемблер, скомпилировал программу, тут же ее запустил, посмотрел в отладчике. И ни разу магнитофон не понадобился! Класс!

В 11-й появились палитры. Господи, до чего убогие! Из возможных 16 реально смотрелись на экране 3-4 штуки, остальные глаз совершенно не радовали. И вообще видеоадаптер сделан был просто отвратительно! Решительно не пойму, чего не хватило разработчикам, чтобы добавив 1-2 микросхемки, сделать нормальные видеорежимы (на Пашкиной БКашке мы добавили одну микросхемку, и вместо дебильной палитры с 3 белыми! цветами у него появлялась палитра высокого разрешения 512х256 белый на синем!).

Потом были подключены дисковод и через год - винчестер. Разрозненность разработчиков привела к появлению слишком большого числа "дисковых операционных систем". Мы выбрали для себя ANDOS, как наиболее совместимую и стандартную. А ведь тоже хотели писать свою! Хорошо, что я сумел убедить Пашку, что не стоит изобретать велосипед.

Но он тогда предложил написать для 11-й игру, которая использовала бы все ее возможности - сделать "Prince of Persia". И я позволил ему втянуть меня в эту авантюру! С большими перерывами работа над проектом продлилась около 5 лет. Но "Принца" для БК мы так и не доделали.

Но и кроме "Принца" было сделано много чего.

Я разработал и собрал "модемы" для БК, и мы с Пашкой получили возможность обмениваться файлами, не выходя из дома. "Модем" в кавычках, потому что это было просто согласование БК с телефонной линией, в программе для передачи/приема использовался драйвер магнитофона, доработанный с целью повышения скорости. Программа позволяла также набирать номер (гудки передавались на внутренний динамик БК).

Добыли и подключили к БК звуковой сопроцессор AY1810. Заработали крутые музыкальные демонстрашки и игры, Паша набирал музыку в Rock Monitor'е и даже сочинял сам.

Был также разработан АЦП для однобитной оцифровки звуков, для которого на ходу писалась программа, которая позже превратилась в настоящий звуковой редактор, позволяющий перегонять звуковые файлы и с IBM в разных форматах в однобитный формат, который БК играл на свой динамик (а с моего АЦП записывали и речь, и даже музыку, поток был около 1Кб/сек, на 11-ю БК влезало почти 1.5 минуты записи), а файлы COVOX'а можно было играть на AY.

Еще была разработана приставка для захвата видеоизображения с ТВ-сигнала. Но работала она не очень хорошо, думаю, из-за поганых микросхем памяти 155 серии, как-то они подозрительно сильно грелись.

Проводились эксперименты и с формирователем палитр высокого разрешения. В общем-то там ничего сложного не было, и вполне возможно было сделать выбор двух цветов для режимов разрешением 512х256 (как я уже говорил, на Пашкиной машине работала схема белый на синем), заменив ими наиболее шизнутые палитры стандартного набора. Но я прекрасно понимал, что это приведет к несовместимости, поскольку уж никак не рассчитывал, что моя схема пойдет в серию, и проект так и заглох.

Ну и конечно, программировали.

По мотивам статей в ж. Монитор я реализовал несколько упаковщиков, мы с Пашкой выбрали самый быстрый и сделали архиватор LZ. И очень скоро у нас все было им заархивировано, поскольку место на дисках экономилось вдвое, а времени на упаковку/распаковку тратилось немного.

Написали игрушку Color lines. А дело было так. Моей дочери очень нравилась эта игра, IBM-ки тогда еще дома не было, и я решил сделать ее для БКашки. Прийдя ко мне как-то, Пашка увидел на экране монитора мои потуги (а в графике я никогда силен не был, вся графика в наших программах - это полностью Пашкина заслуга), спросил, это что, "Линии" что-ли? Что за фигня (а в общем, это и правда была фигня, я делал плоские кружочки, считая, что на БК объемные все равно не получатся)? Ну-ка, дай я... И он сел за клавиатуру и минут за 10 нарисовал такой шикарный шарик, что я глазам не поверил. И поле сделал объемным. А какую заставку нарисовал! Да что говорить, игра удалась!

А в планах был и Zeliard, и Wizardry, и Dangerous Dave... И теперь, с опытом работы с "Принцем", трудностей в реализации просто никаких бы не было. Не успели. Как-то очень быстро БКашка отошла от дел. Доконали ее IBM-ки своей сумасшедшей производительностью и доступностью. Уже у меня дома с год стояли одновременно 486-я и БКашка, а Паха свою БКашку примерно столько же времени не включал, работая в эмуляторе.

Я еще успел сделать схемный редактор SET, "Сапера", и начал в одиночку уже без Пашки (он уже совсем тогда БКашку забросил) большой проект "Верная шпага короля" по одноименной книге-игре Браславского. И уже моя доча совершила подвиг, вколотив вручную более 200 страниц книги в БКашку, и уже заработал движок (можно было продвигаться по игре, выбирая альтернативы как в книге). Осталось добавить драки, еду, деньги и т.п. мелочи. Нарисовать картинки... Но... по указанным выше причинам, и еще по некоторым объективным, и этот проект так и остался незавершенным. Увы!


* * *

И все-таки моя БКашка жива. Она живет в моем домашнем компьютере, живет в моем маленьком ноутбуке (блин! он меньше БКашки!) и жива в моей памяти. Я всегда могу вспомнить, как это все было, взглянуть на позабытые игрушки, перечитать "запылившиеся" БКашные газеты, вздохнуть, сожалея о незаконченных проектах, и порадоваться тому, что в моей жизни был этот компьютер, моя первая любовь - БКашка.

* * *

май-июль, 2003 г.