К книге
Проект «Сфера-82»: Цвет и слойГлава 33 Пять и пятнадцать
70%
Глава 33 Пять и пятнадцать
33

Дверь лаборатории КБ-3 поддалась не сразу, скрипнув петлями под нажимом плеча. Иван Михайлович Ильин протиснулся в проём спиной вперёд, тяжело ступая стоптанными ботинками по линолеуму. В руках он держал массивную картонную коробку, перевязанную суровой бечёвкой, с размашистыми фиолетовыми штампами ОТК на боку. Следом, так же придерживая вторую коробку снизу, вошёл Морозов.

Воздух лаборатории смешался с запахом холодного складского помещения, промасленной бумаги и технического вазелина.

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

Саша Птицын торопливо сгреб со столешницы провода и пустые чашки. Михалыч с кряхтением опустил коробку на стол. Висящая над ними лампа дневного света едва заметно мигнула. Морозов поставил ношу рядом, выдохнул, разминая затекшие пальцы, и смахнул с рукава пыль.

За дверью в коридоре стояли еще три такие же коробки.

Олег Тимофеев, до этого прозванивавший переплетение проводов на макетной плате цветового модуля, выпрямился, потирая переносицу. Володя Артемьев и Зоя Мельникова, стоявшие у зоны комплектовки, подошли ближе. Даже из дальнего угла, где обитали аналоговики, высунулись две любопытные головы.

— Вот ваши железные драгоценности, — Михалыч хлопнул ладонью по картону, выбивая облачко серой пыли. — Пять ИЗОТов. Добыты с боем, потом и такой-то матерью через зеленоградский контур и товарища майора.

Володя не отрывал взгляда от коробок. Пять абсолютно новых дисководов были редкостью. Зоя уже прикидывала, в какой журнал вписывать серийные номера.

Евгений Громов отодвинулся от клавиатуры.

— Пять штук, — кивнул Громов. — А партия новых машин у нас сколько? Пятнадцать.

— Пока пятнадцать, — ответил Морозов.

— Прекрасная арифметика, — усмехнулся Громов. — Значит, пять машин у нас будут умными, с дисководами и операционной системой, а десять останутся глухими калькуляторами с кассетным магнитофоном? Или мы будем носить эти ИЗОТы по столам, перетыкая шлейфы, пока разъемы не сотрутся в пыль?

— Сергеев обещал выбить еще десять, — сказал Морозов, присаживаясь на край стола. — Но ты сам знаешь, сколько весит обещание без точной даты в накладной. Может, через месяц. Может, к лету. А может, нам пришлют не болгарские ИЗОТы, а что-то другое, что внезапно появится на складе.

Зоя тихонько вздохнула: ровная комплектовка партии не складывалась. Птицын переводил взгляд с Морозова на Громова, пытаясь понять, радоваться дисководам или готовиться к новому авралу.

* * *

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

Громов подошел ближе, сдвинул пенопласт и заглянул внутрь, выискивая разъем для шлейфа данных.

— Массивненько, — оценил он. — Шаговый двигатель, судя по весу, от трактора.

Птицын протиснулся между Михалычем и Громовым, заглядывая в коробку.

— Алексей Николаевич, а разве нельзя просто написать под этот ИЗОТ жесткие процедуры и забыть? — спросил Саша. — У нас же есть описание интерфейса. Шаг вперед, шаг назад, опустить головку, прочитать дорожку. Если мы знаем, что у нас пока только эти пять штук, почему не сделать систему прямо под них? В прошлых «Сферах» ведь тоже ИЗОТы стоят.

Громов шумно выдохнул.

— Саша, — начал он. — Если я напишу систему прямо под этот болгарский трактор, то завтра, когда Михалыч принесет нам не ИЗОТ, а, скажем, киевский накопитель или вообще ГДР-овский «Роботрон», твоя аккуратная программа пойдет прахом. Станет гвоздем, которым намертво прибили дверь.

Морозов поднял руку.

— Женя абсолютно прав, — Морозов взял со стола чистую перфокарту и повернулся к Птицыну и Володе Артемьеву. — Парни, представьте, что прикладная программа — это пассажир в такси, которому нужно доехать до вокзала. Это и есть команда «прочитай сектор». Ему абсолютно все равно, как водитель выжимает сцепление, какой жиклер стоит в карбюраторе и как именно поворачиваются колеса.

Морозов нарисовал на перфокарте две горизонтальные линии, разделив пространство на три слоя.

— Если мы пришьем логику чтения жестко к ИЗОТу, наш пассажир будет вынужден сам рулить. И когда мы поменяем машину на другую, он не сможет ехать, потому что педали будут в другом месте. Наша МикроДОС должна быть разделена. Верхний слой — программы. Средний слой — логика файлов и распределения дискового пространства. А вот нижний слой, самый зависимый от железа, должен прятать в себе всю механику.

Громов коротко кивнул.

— Программа просит: дай мне логический сектор номер десять, — подхватил Громов. — А нижний слой лезет в таблицу параметров. Смотрит: ага, у нас сейчас подключен ИЗОТ. У него столько-то дорожек, такой-то шаг, задержка после перемещения головки — пятнадцать миллисекунд. И сам крутит этот шаговый двигатель. Все остальное железо нас не волнует.

Володя Артемьев, внимательно слушавший разговор, почесал затылок.

— Подождите, Алексей Николаевич. А как мы тогда партию собирать будем? — спросил он. — У нас пятнадцать плат. Если дисководов всего пять, значит, машины будут физически разными? Одни с контроллерами, другие без?

Зоя тут же открыла толстую прошнурованную тетрадь, готовясь записывать.

— Вот именно, — поддержала она Володю. — Как мне их по ведомости проводить? «Сфера-82 полноценная» и «Сфера-82 обделенная»?

Морозов улыбнулся.

— Нет, Володя. Машины будут абсолютно одинаковыми. Системная плата, память, порты — всё это ставится на все пятнадцать штук. Разъем под контроллер дисковода паяем везде. Машина без установленного ИЗОТа остается стандартной «Сферой-82», которая просто ждет свой привод.

— Запиши нормальными словами для паспорта, — попросил Громов Зою. — «Базовая конфигурация, подготовленная к установке накопителя». И пусть только кто-нибудь попробует припаять провода напрямую к плате вместо того, чтобы поставить нормальный разъем. Я лично этому рационализатору руки оторву.

* * *

Ближе к полудню в кофейной комнате на шатком столике у окна зашумел электрический чайник. Рядом стояли ручная мельница и несколько кружек.

Морозов стоял у окна, глядя на заснеженный внутренний двор института. Громов сидел на подоконнике с кружкой, в которую плеснул сгущенки. Птицын примостился рядом.

— Пять дисководов на пятнадцать машин, — задумчиво произнес Морозов, не оборачиваясь. — Ждать милости от снабжения мы не можем. Зеленограду нужны рабочие стенды. Школе нужны машины. Нам самим нужно на чем-то гонять тесты.

— Кассеты, — мрачно предложил Громов. — Будем грузить МикроДОС с ленты по десять минут, слушая писк. Как в каменном веке.

— Нет. Это убьет саму идею профессионального рабочего места. Человек не должен ждать загрузки операционной системы дольше, чем выкуривается сигарета. — Морозов повернулся к лаборатории. — Жень, что мы можем достать быстрее и в больших объемах, чем точную механику?

Громов прищурился.

— Кремний. ПЗУшки. Микросхемы памяти достать проще, чем прецизионные моторы.

— Именно. Значит, часть стартовой логики должна переехать в ПЗУ.

Громов резко поставил кружку на подоконник, едва не расплескав кофе.

— Алексей, тормози. Только старт. Если ты сейчас предложишь зашить всю операционную систему в постоянную память, я уволюсь. Я потом каждую ошибку в коде буду исправлять паяльником и ультрафиолетовой лампой! Обновляемость системы — это святое.

Морозов рассмеялся, примирительно подняв руки.

— Успокойся. Только старт. В ПЗУ будет лежать минимальный загрузчик. Таблица входов нижнего слоя. Базовый опрос клавиатуры и вывод на экран, чтобы машина могла хотя бы моргать курсором. И самое главное — она должна уметь прочитать первый блок с диска.

— А если диска нет? — тихо спросил Птицын. — Если это одна из тех десяти машин, которым ИЗОТ не достался?

Морозов ободряюще кивнул.

— Хороший вопрос, Саш. Если диска нет, машина должна запросить этот загрузочный блок по кабелю у той, где он установлен.

Мимо кофейного столика как раз проходила Люба Ветрова. Услышав последнюю фразу, остановилась.

— По кабелю? — переспросила Люба. — Через весь стол? Алексей Николаевич, вы помните, что у нас тут не вакуум? Сначала докажите мне, что этот ваш обмен не будет ловить помеху от каждого включенного паяльника в комнате. И от того, что Михалыч в соседнем кабинете настольную лампу включил.

— Докажем, Люба, — кивнул Морозов. — Будем делать нормальную развязку. Оптопары, коаксиал, правильная земля.

— Ловлю на слове, — Люба поправила очки и пошла дальше.

Громов проводил ее взглядом, чуть прищурившись, и повернулся к Морозову.

— То есть, ты хочешь сказать, что машина без дисковода будет кричать в линию: «Дайте систему!»? — уточнил Громов.

— Да. По тому самому кольцу, — кивнул Морозов. — Узел с дисководом получает маркер и отправляет загрузочный блок по нужному адресу.

Птицын нахмурился, оценивая алгоритм.

— Запросы физически следуют по очереди с маркером. Если загрузки ждут несколько машин, они начнут просить одни и те же блоки друг за другом. Мы получим многократные последовательные чтения дискеты на каждый ответ.

Громов отрицательно качнул головой.

— Предварительное чтение. Ведущий узел при запуске сетевого загрузчика один раз считывает системную область в выделенный буфер ОЗУ. На время загрузки других машин он занят кольцом. На запрос мастер выдает нумерованный блок из буфера. Ошибка контрольной суммы принятого по линии блока ведет к повторной передаче того же блока из оперативной памяти.

— Для передачи используется чистая системная область с дискеты. Текущее содержимое памяти ведущей машины остается в стороне, — добавил Морозов. — Повторное чтение дискеты нужно только после смены системного носителя, нового запуска сетевого загрузчика или в случае, если контрольная сумма самой системной области в буфере не совпала с эталонной.

Они подошли к закрепленному на стене листу ватмана. Морозов взял карандаш и нарисовал четыре прямоугольника, соединив их линиями. Олег Тимофеев оторвался от осциллографа. Наташа Рогова, заполнявшая таблицу уровней сигналов, подошла ближе.

— Наше кольцо, — Морозов коснулся грифелем верхнего прямоугольника. — Здесь машина с ИЗОТом. Узел номер один, мастер-загрузчик. А внизу, — он обвел три нижних прямоугольника, — стоят три рабочие машины, которым привод сейчас не достался. Узлы два, три и четыре.

Птицын внимательно смотрел на ватман. До этого он возился со статусами передачи, а теперь схема требовала написания полноценного загрузчика.

— Саш, стендовый загрузчик — твой участок, — сказал Морозов. — Маркер ходит по кругу. Пустая машина получает право говорить и просит: «Жду загрузочный блок ноль». Узел один ловит запрос, берет данные из буфера, дожидается маркера и выдает блок в линию.

— Я же только базовый обмен с буфером наладил, — произнес Птицын, с тревогой глядя на схему. — Одно дело просто пакеты туда-сюда гонять и ошибки сумм ловить, а тут надо систему в пустую память укладывать и управление ей передавать.

Громов усмехнулся, опираясь плечом о край доски.

— Вот именно. Транспортный уровень ты поднял, молодец. Теперь поверх этих пакетов тебе надо написать строгий автомат, о котором мы только что говорили. Цикл приема блока, склейка в памяти, подтверждение или повтор. И так по кругу, без самодеятельности, пока весь стартовый код не окажется в оперативной памяти.

— А сколько байтов в блоке? — спросил Птицын.

— Не больше ста двадцати восьми, — не задумываясь, ответил Громов, — Небольшой кусок. Чтобы не съедать рабочую область буферами, и чтобы, если помеха его побьет, можно было быстро запросить его заново.

Олег Тимофеев шагнул вперед, глядя на схему.

— Кольцо на доске и кольцо на монтажном столе — это разные физические миры, Алексей Николаевич, — заметил он, крутя в пальцах обрезок провода. — Нам нужны аккуратные коаксиальные кабели. Нормальные байонетные разъемы на задней стенке. И понятное поведение линии, если кто-то пнет кабель ногой или выдернет его на ходу. Кольцо не должно обрываться целиком из-за одного дурака.

— И делать это все будем последовательно, — сказала Наташа, — Сначала стабильное кольцо на двух узлах. Снимаем уровни, пишем в протокол. Если чисто — цепляем третью машину. И только потом, Саша, пускаем твой реальный загрузочный блок, а не всё сразу.

Морозов кивнул, соглашаясь со всеми условиями. Схема на доске постепенно обрастала реальными номиналами и допусками.

— Принято, — кивнул Морозов. — Саш, слышал Наташу? Сначала стабильная физика на двух узлах, потом транзит, потом обрыв.

Птицын глубоко вздохнул, пряча исписанный блокнот в карман.

* * *

Пять коробок с дисководами стояли у стены. Володя Артемьев раскладывал на столе системные платы, сверяя их с чертежами. Зоя сидела за столом над ведомостью.

Михалыч стоял рядом.

— Значит так, молодежь, — гудел Михалыч. — Железо само себя не учтет. У меня на балансе пятнадцать комплектов деталей для плат и пять приводов. Дефицит не должен расползтись по ящикам. Каждая пайка — строго по схеме.

Володя поднял голову от платы.

— Иван Михайлович, Алексей Николаевич, — позвал он, заметив проходящего мимо Морозова. — Я хочу уточнить. Если мы собираем одинаковые машины под кольцо, значит, на каждой из пятнадцати плат я должен впаять разъем для сетевого кабеля? И микросхемы приемопередатчиков?

— Верно, Володя, — подтвердил Морозов, останавливаясь. — Схема сопряжения для кольца становится базовой комплектацией «Сферы-82».

— А ПЗУ с загрузчиком? — не унимался Володя. — Его тоже на все пятнадцать?

— На все. Даже та машина, у которой будет свой ИЗОТ, должна иметь возможность загрузиться по сети, если ее собственный привод выйдет из строя.

Зоя пощелкала костяшками счетов.

— Алексей Николаевич, тогда как мне маркировать готовые изделия? — спросила она. — Они же вроде одинаковые, но на деле — разные.

Морозов придвинул стул и сел рядом со сборщиками.

— Зоя, давай добавим в паспорт раздел для отметок контроля. База у всех одинаковая. Пиши: «дисковый тракт проверен с эталоном», «сетевой обмен проверен» и подписи. А в самом конце просто указывай комплектацию: либо номер локального ИЗОТа, либо «режим ожидания накопителя».

Михалыч кивнул.

— Вот это дело. Без бумажки мы букашки, а с бумажкой — вычислительный центр. Пять ИЗОТов прямо сейчас получат инвентарные номера краской на задней стенке. Я вам не дам их путать.

Громов крикнул из-за соседнего стола:

— И подпишите на каждом приводе, по какой таблице параметров его отстроили! А то вы их потом перепутаете, и мы будем полдня искать, почему одна машина читает нормально, а другая хрустит головками, как трактор на щебёнке!

Михалыч погрозил Громову сухим, узловатым пальцем, но спорить не стал. Он и сам понимал, что программист прав.

* * *

Вечером Морозов подошел к столу видеогруппы. Олег и Наташа сидели перед раскрытым телевизором. На экране светилась стабильная, хотя и грубоватая цветная мозаика — результат работы второго, графического режима видеоплаты «Сферы-82».

Морозов долго смотрел на экран. Цвета были чистыми, границы прямоугольников почти не дрожали. Наташа проделала огромную работу по стабилизации синхросигналов.

— Работает, — негромко сказал Морозов. — Выжали из кинескопа максимум.

— Работает, — эхом отозвалась Наташа, не отрывая взгляда от осциллографа. — Прогрев держит. Питание Люба вылизала, наводок по земле почти нет.

— Хорошо, — сказал Морозов. — С новой машиной понятно. А схему приставки для старой «Сферы-80» пора готовить к публикации.

Олег отложил отвертку:

— Я тут прикидывал. Журнальную доработку надо описать максимально просто. Радиолюбитель или кружок спаяет её на коленке из доступных деталей.

Громов подошел к их столу.

— Главное, чтобы старая машина оставалась черно-белой по умолчанию, — напомнил он. — Основной видеовывод не трогаем.

— Не трогаем, — кивнул Олег. — Плата расширения просто слушает определенный порт. Программа пишет текст, как обычно, а потом кидает координаты и код цвета. Приставка подмешивает цвет поверх монохрома. Никакой графики, только раскраска букв и фона. Схемотехнически это не так сложно: регистр-защелка, немного логики, простой ЦАП на резисторах.

— И программное управление простейшее, — добавил Громов. — Вызов порта командой OUT в Бейсике. Пока никаких переделок ПЗУ.

Пусть сначала побалуются раскраской из-под Бейсика или через маленькую кассетную библиотеку. Если приживется — тогда будем думать о новой версии системы для восьмидесятых. Главное — чтобы старая программа даже не догадывалась, что она работает в цвете, пока сама его не попросит.

Птицын, пришедший забрать осциллограф, с интересом спросил:

— А мои цветовые тесты, которые я для 82-й машины написал, придется сильно переделывать под эту приставку?

Громов усмехнулся.

— Придется, Саша. Адресация портов другая. И мы это обязательно перепишем. Но только после того, как ты покажешь мне, как твой сетевой загрузчик без ошибок загружает систему в пустую память по кольцу десять раз подряд.

* * *

На центральном столе стоял один из распакованных дисководов ИЗОТ. Толстый плоский шлейф тянулся от него к плате опытной «Сферы-82». Володя Артемьев наклеивал на заднюю панель привода бирку с инвентарным номером.

Зоя Мельникова сидела за столом, перенося карандашные отметки в чистовик ведомости. В графе «Комплектация» напротив первых пяти номеров появились галочки, а напротив остальных десяти — четкая надпись: «Резерв под локальный накопитель».

Громов выписывал на листке системные входы для нового нижнего слоя МикроДОС.

Морозов стоял у стены. На столе между двумя платами «Сфер» лежал первый спаянный коаксиальный кабель с массивными разъемами.

Птицын сидел перед экраном второй, «бездисковой» машины. Он запустил простейшую проверочную программу — пока еще не полноценную загрузку по линии связи, а только тест физического уровня поверх программы опроса кольца.

На экране моргнул курсор. Затем появилась строчка:

УЗЕЛ 2: ЗАПРОС МАРКЕРА…

Спустя долю секунды, когда первая машина обработала сигнал и перевела линию в нужное состояние, на экране Птицына высветилось:

МАРКЕР ПРИНЯТ. ПЕРЕДАЧА ТЕСТОВОГО БАЙТА… ОК.

Морозов смотрел на светящиеся буквы. Коробки с дисководами так и стояли у стены — пять штук на пятнадцать машин. Он подошел к столу Птицына, проверил подключение сетевого кабеля к разъему системной платы и кивнул.

Предыдущая главаГлава 33 из 47Следующая глава