Я
уже рассказывал про свое пребывание на почетной должности "начальника ЭВМ" при советском микрокомпьютере СМ1803. Рассказывал и про то, как
приходилось бороться с проблемами "железа". Но мне пришлось серьезно позаниматься и матобеспечением этого компьютера. Это была отдельная песня!
Главное достоинство семейства СМ1800 (на фото вверху - тумбовый вариант, у меня была полноразмерная стойка в рост человека) - то, что на этих компьютерах могла работать популярнейшая в свое время операционная система (ОС)
CP/M, которая даже послужила прототипом для PC DOS 1.0, первой ОС для IBM PC. Для CP/M существовала куча разнообразного прикладного софта, всякие системы обработки текстов, электронные таблицы, компиляторы практически со всех существовавших языков (для одной Ады я видел штуки 3) и т.д.. ОС могла ставиться практически на любое "железо" при наличии процессора, совместимого с
Intel 8080 (самый популярный в 80-е -
Zilog Z80), для чего в ней впервые появилась концепция BIOS, базовой системы ввода-вывода, отделявшей собственно ОС от аппаратной части. Что впоследствии использовалось в IBM PC, но не так удачно, программисты слишком активно применяли прямой доступ к "железу". Компьютеры с CP/M выпускало множество фирм, они были относительно дешевы, и, несмотря на их недостатки (главный - маленькое адресное пространство 8-разрядных процессоров), IBM PC и аналоги смогли полностью их вытеснить только ближе к концу 80-х.
Кстати, хорошей переносимостью обладала не только сама CP/M, но и программы для нее, такие, например, как экранные редакторы. Ввиду разнообразия "железа" все приходилось делать легко адаптируемым. А вот у советских пользователей клонов
DEC PDP-11 с экранными редакторами долго существовала проблема - фирменные работали только с фирменными же дисплеями, а вот их-то клонов в СССР и не делали. Популярный же редактор для CP/M,
Word Master, я лично настроил под советский дисплей за пару часов, в нем все для этого было предусмотрено. Кто не видел, как редактировали тексты до экранных редакторов - лучше не знать, крепче спать будете.
В общем, для переноса CP/M на новый компьютер надо было только переписать BIOS под него, и эта процедура довольно подробно описывалась в документации. Причем на BIOS отводилось всего 2 Кбайта (вся CP/M 2.2 занимала 8 Кбайт, обратите внимание на размерность, это вам не Windows!). Что и проделали в головной организации по СМ1800,
ИНЭУМ, породив продукт по названием ОС-1800. Ни о каких copyright речь, естественно, не шла, и оригинал нигде не упоминался. Когда я опробовал эту поделку, то был сильно разочарован - работать работает, но пользоваться весьма неудобно. И мне пришлось заняться устранением недостатков.
Во-первых, семейство СМ1800 разрабатывалось совсем не под CP/M. Его делали по договору с норвежской фирмой Micron на базе их компьютера Micron 1, одного из первых в мире на базе 8080. Норвежцы сделали и собственную ОС, довольно примитивную и никому не нужную, ее ядро было зашито прямо в
ПЗУ. Ребята из ИНЭУМа не придумали ничего лучше, как сделать 2-ступенчатую загрузку: сначала вставлялся диск с программой-загрузчиком для CP/M, потом его надо было вынуть и вставить второй - с самой CP/M. Ну, кому это нахрен нужно?! Почесав немного репу, я сообразил, как породить монстра - системный диск CP/M, который выглядит для норвежской системы как "родная" программа под названием "CPM".
Во-вторых, в компьютере использовался очень специфический дисковод для гибких дисков (
8" одностронних одинарной плотности, емкостью 250 Кбайт, самый ранний вариант образца 1971-го года), который требовал специальной поддержки, но в ОС-1800 ее не было. Назывался он PLX45, производили поляки по французской лицензии. Судя по всему, начальная разработка была сделана очень давно, когда отраслевые стандарты еще не установились, поэтому дисковод имел уникальные особенности. Он был сдвоенный, причем раздельными были только головки, а приводы вращения и позиционирования - общие. Ввиду специфики механической конструкции открывать дисковод полагалось только при определенной позиции головок, на "минус первой" дорожке, иначе дверцы блокировались электромагнитом. Эти особенности сильно мешали как при написании BIOS, поскольку CP/M ничего не знала о существовании подобных дисководов, и надо было изображать из него два полностью раздельных, так и в процессе пользования. Как открыть дисковод, если надо поменять диск в процессе работы? Народ просто выключал источник питания дисковода (обесточивался электромагнит), что нехорошо как для источника, так и для механики. Я встроил в ОС функцию открывания дисковода, когда по нажатию одной из служебных клавиш дисплея головки выводились на "минус первую" дорожку.
В-третьих, была проблема с применявшейся тогда в СССР кодировкой. В ней кириллица (только большие буквы) была приделана на место маленьких букв латинского алфавита. Соответственно, если на экран выводился текст, набранный латиницей в 2-х регистрах, то такое получалась, что мама не горюй! Моим решением было использование еще одной служебной клавиши дисплея, по которой включался фильтр, преобразующий все в большие латинские буквы.
Ну, и последняя проблема была связана с форматированием гибких дисков. Форматирование было весьма актуальной операцией, поскольку болгарские диски (а альтернативы и не было, кроме как в богатых конторах, покупавших западные) поставлялись вообще без него, а других советских компьютеров с этой функцией тогда не существовало.
Норвежцы сделали программу форматирования, но только под собственную ОС. В ОС-1800 такая возможность отсутствовала. К тому же диски, сформатированные на СМ1800, почему-то не работали на многих других компьютерах. Озаботившись написанием программы для форматирования под CP/M, я обнаружил, что к довольно задумчивому контроллеру дисков собственной норвежской разработки нет адекватного описания, и мне пришлось ковырять их программу. В процессе чего я нашел, что они пропустили в формате одну из стандартных меток. Потому не везде и работало. Ну, ладно, как делать форматирование, я разобрался. Но надо было еще осуществить это в среде CP/M.
Задачка оказалась непростой, что-то вроде чесания правой ногой за левым ухом. Дело в аппаратных особенностях СМ1800. Память у нее состояла из нескольких частей, динамического
ОЗУ на все адресное пространство (64 Кбайта), ПЗУ на 2 Кбайта с ядром норвежской ОС и быстродействующего статического ОЗУ на 1 Кбайт. И имелся программный переключатель, в одном положении которого все адресное пространство занимало динамическое ОЗУ, в другом в младших адресах включались ПЗУ и статическое ОЗУ. Для нормальной работы CP/M надо было использовать первое положение, поскольку в младших адресах у этой ОС находились системная область и область загрузки программ. Но штука в том, что программа форматирования не хотела функционировать из динамического ОЗУ из-за задержек, возникающих при его работе! Это было связано с примитивностью контроллера дисков, который выполнял только простейшие низкоуровневые операции, а все остальное - центральный процессор, и малейшие задержки приводили к сбоям. Поэтому любой код, связанный с обслуживанием диска, мог нормально работать только из статического ОЗУ. Сие свойство нигде не было документировано и не вполне очевидно, я изрядно потрахался, пока понял, в чем дело.
Пришлось проделывать натуральный цирковой номер - программа загружалась под CP/M в младшие адреса, потом сама себя переносила выше области ПЗУ/статического ОЗУ, затем память переключалась, и нужный фрагмент переносился в статическое ОЗУ. Как все это было удобно отлаживать! Помню, даже написал специальную утилиту для автоматизированной сборки такой кучерявой программы, поскольку стандартное программное обеспечение подобных фокусов не предусматривало. Тем не менее, в целом на все разборки с форматированием (плюс дополнительные функции быстрого копирования/сравнения дисков) ушел месяц упорного труда.
Перенос программы форматирования в CP/M стал последним шагом к созданию удобной для пользователя версии этой ОС для СМ1800.
Свои достижения я не стал таить от народа, поделился с друзьми-приятелями как в Питере, так и в Москве. И через пару лет, видимо, не было в СССР СМ1800, на которой не стояла бы именно моя версия ОС. Особенно приятно было услышать, что на нее перешли в ИНЭУМе. Это ведь был, фактически, мой первый опыт в программировании, и сразу уел профи! Я вскоре ушел в другую контору, но мои бывшие коллеги еще долго принимали желающих получить какую-нибудь помощь со всей страны (в стартовом сообщении ОС был телефон). Часто прибывших не с пустыми руками. Хотя я тоже один раз поимел материальный профит со своей разработки. Моя широкая известность в узких кругах дошла до того, что я был приглашен для консультаций по СМ1800 в личную лабораторию самого
академика Глебова, босса Ленинградского научного центра АН СССР. Заплатили по трудовому договору аж 150 руб.. Но не сразу. Сначала у меня вышел конфликт с престарелым завлабом, который упорно требовал с меня ОС на перфоленте. ДИСКОВУЮ операционную систему. На ПЕРФОЛЕНТЕ. Он, понимаете ли, не доверяет дискам! Так меня достал, что в какой-то момент я не выдержал: нафиг ваши деньги, видеть вас больше не желаю! Академик нажал на мое начальство, и мне пришлось таки вернутся. Но вопрос с перфолентой как-то сам собой снялся.
Вы спросите, а когда же будет про русский язык? Сейчас и до этого дойдем.
В 84-м году моя разработка вышла на международный уровень. Московский приятель из
ИППИ поехал на полгода в командировку в Финляндию, и, поскольку там ему обещали предоставить СМ1800 для работы, взял с собой мою ОС. Через пару месяцев звонит мне оттуда: спасай, случайно затер ОС! Я отвечаю: нет проблем, но как передать? Есть, говорит, один финн, работающий на монтаже АТС в Ленинграде, который должен вскоре поехать в Финляндию, я договорюсь, чтоб он с тобой связался.
Через пару дней под вечер сижу я на хате в этом замечательном доме на фото выше (б.
доходный дом Поршнева), напротив Военно-морской академии и рядом с метро "Черная речка". Заходит ко мне один дружок с парой пузырьков портвешку. Только открыли, раздается звонок. Тот самый финн. Я ему говорю, чтоб подъезжал на "Черную речку", а я выйду к метро, встречу. Успели по одной принять и пошли в расчетное время к метро. Ждем-ждем - нихрена! Чуть не полчаса простояли и вернулись обратно на хату. Не успели войти - звонок. Опять финн. Ну, где же вы, я жду у метро! Неужели, думаю, мы его проглядели?! Опять пошли к метро, все там проверили - нету! Возращаемся - снова звонок! Опять он. Тут я уже понял, что что-то не то, начал задавать наводящие вопросы. И выяснилось, что финн ждет у метро "Чернышевская"! Я, конечно, объяснил ему всю глубину его заблуждений. Пришлось идти встречать в 3-й раз, наконец-то успешно. Предложили финну снять стресс, он не отказался. Но еще несколько раз повторял: "Почему у вас дают станциям такие похожие названия?! "Черная речка" и "Чернышевская" - это же почти невозможно отличить!"
А приятель в благодарность привез мне механический карандаш японской фимы Pentel. Нормальный, не то что советское фуфло с толстенным стержнем. По тем временам в СССР - диво дивное, практически ни у кого такого не было. Я им потом лет 15 активно пользовался, пока совсем на компьютерное проектирование не перешел. Сколько схем нарисовано! И сейчас иногда пользуюсь, он в полном порядке до сих пор, только надписи краской стерлись. Во делали!
Еще по теме:
Сколько нужно человек для обслуживания советской микро-ЭВМ? Ахиллесова пята вычислительной техники СССР. Часть 2.