К книге
Проект «Сфера-82»: Цвет и слойГлава 17 Разные архитектуры
36%
Глава 17 Разные архитектуры
17

Слава потянул на себя обычную дверь с матовым стеклом. Из комнаты донеслись гул вентиляторов, тихое жужжание трансформатора и короткий щелчок тумблера: за дверью шла зеленоградская работа с платами, кабелями и собственными схемами.

Лаборатория нестандартного оборудования выглядела обжитой и тесной. Сдвинутые столы образовывали два длинных рабочих острова. На одном высился разобранный осциллограф С1–65 с пульсирующей зеленоватой линией на экране, мотки тонкого провода МГТФ, россыпь керамических конденсаторов и коробки с логическими микросхемами. На другом соседствовали макет видеоконтрольного устройства со снятой задней стенкой и шеренга разномастных чайных кружек. Торцевую стену целиком занимала потертая меловая доска. Она была плотно исписана: схемы дешифраторов, колонки адресов, графики сигналов и вычерченные под линейку раскладки клавиатур.

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

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

— Алексей? — он отложил пинцет и сделал шаг навстречу. — Дмитрий Меркушев. Мы виделись после большого совета, вы еще телефон оставляли… Я тогда спрашивал, можно ли будет собрать вашу «Сферу» здесь, у нас, для простых расчетов.

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

— Добрый день, Дмитрий. Я помню. Мы пришли, чтобы разговор о совместимости «Сферы» и ваших перспективных разработок перестал быть красивым словом.

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

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

— Наслышаны. Сам архитектор владимирской системы, — голос Гальперина прозвучал ровно, без открытой враждебности, но с холодком. — Пришли смотреть, что из макетов НЦ можно загнать под ваш стандарт? Мы предварительные спецификации вашей новой машины видели. У вас опрос клавиш зашит в ПЗУ, а вывод на экран жестко привязан к конкретным адресам памяти… Скажите сразу, какая у вас цель? Хотите, чтобы мы свои разработки свернули и начали клепать переходники под вашу шину?

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

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

Слово «НЦ» для человека вне зеленоградских коридоров тогда почти ничего не объясняло. Оно не означало готовую домашнюю машину, о которой писали бы в газетах, или привычную большую ЭВМ за стеклом вычислительного зала. Это было семейство рабочих замыслов Научного центра: одноплатные микро-ЭВМ, лабораторные терминалы, платы ввода-вывода, клавиатурные корпуса, попытки приспособить отечественный микропроцессор к обычному телевизору и магнитофону. Из таких вещей редко сразу выходит готовый продукт. Сначала появляются макеты, исправленные чертежи, широкие листы АЦПУ, корпуса, которые кто-то подгоняет руками не потому, что так положено по серии, а потому, что иначе машину не поставить на стол.

Позже эту линию будут вспоминать по другому имени. После переделок, упрощений и заводской борьбы из зеленоградского опыта вырастет «БК» — та самая бэкашка, бытовой компьютер, который будут помнить школьные классы, радиокружки и домашние энтузиасты. Но здесь, в начале восемьдесят первого, это еще не была ни музейная подпись, ни серийный товар. Это была чужая живая работа на соседнем столе: не ошибка, не тупик и не приложение к владимирской плате, а настоящая попытка сделать настольную ЭВМ на своей архитектуре.

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

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

Гальперин сухо усмехнулся и скрестил руки на груди.

— Да, Алексей Николаевич. У вас 80-я машина дешевле, проще, шум вокруг нее заметнее. А у нас здесь уже есть свои решения. Мы боимся не ваших макетов, а того, что завтра кто-нибудь наверху решит: раз школьникам годится владимирская плата, значит, все остальное лишнее.

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

Слава поднял ладонь, будто останавливая не спор, а неверное слово.

— Виктор Самойлович, он говорит не про «стандарт Сферы». Скорее про условия: что программа вправе ожидать от машины, если машина сама объявила себя совместимой. Не приказ, а проверяемое обещание.

Гальперин скептически прищурился.

— Совместимость — удобное слово. Только на практике оно часто означает: «откажитесь от своего и делайте как мы». У нас другие принципы обработки сигналов. Мы не станем ломать свою логику.

— И не надо, — сказал Громов.

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

— У вас тут отдельный регистр на данные выделен, — произнес Евгений, считывая архитектуру прямо с меловых набросков. — А в соседнем регистре вы признак готовности отдаете. Вы контроллером аппаратное прерывание дергаете, когда символ с клавиатуры готов?

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

— Дергаем, — подтвердил инженер, машинально опираясь о край рабочего стола. — Аппаратно. Процессор в это время свободен.

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

— Грамотно, — признал Евгений, указывая на схему на доске. — А покажите временные диаграммы. Вы дребезг контактов до контроллера гасите или внутри?

Гальперин переглянулся с Беспаловым. Осторожность никуда не делась, но настороженность уступила место профессиональному азарту: спор перешел на территорию сигналов, регистров и признаков готовности. Старший группы кивнул в сторону доски.

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

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

— Хорошее решение, изящное, — сказал Евгений. — У нас матрица висит на шине, мы опрашиваем ряды программно.

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

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

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

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

Евгений провел внутри нижнего блока короткую вертикальную черту.

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

Беспалов медленно кивнул.

— То есть спор не о номерах портов и подобных аппаратных привязках?

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

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

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

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

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

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

— Делать вид, что экраны одинаковые, нельзя, — признал Алексей.

— Значит, совместимость отменяется? — прищурился Гальперин.

— Значит, совместимость должна быть настоящей, — ответил Громов, перелистывая тетрадь. — В паспорте программы пишем минимум: какой нужен экран, сколько памяти, требуется ли дисковая память, какие знаки и управляющие коды обязательны. Если машина этот минимум не объявляет — программа не делает вид, что справится. Либо запускается в простом режиме, либо выдает понятное сообщение об ошибке.

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

Меркушев тяжело вздохнул и указал отверткой на кассетный магнитофон, сиротливо стоявший на краю стола в путанице проводов с «крокодилами».

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

Он перехватил отвертку и покрутил ее в пальцах.

— Транслятор грузится бесконечно долго. За это время можно в столовую сходить, покурить и забыть, зачем вообще включал питание.

Морозов переглянулся с Громовым.

— Дмитрий, тяжелые трансляторы — это задача для перспективной «Сферы-82», там мы ставим болгарские дисководы, — мягко поправил молодого инженера Морозов. — А кассета — это интерфейс «народной» восьмидесятки. Там у людей магнитофон «Весна» и затертая пленка. Но вы абсолютно правы: для школ и любителей аудиокассета — это сущий мрак. Мы бьемся с тем же самым. Жесткий порог срабатывания аппаратного компаратора сразу дает ошибку: достаточно задеть ручку громкости или пустить ленту вкривь, и байт потерян.

Меркушев понимающе кивнул.

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

— Если подобрать постоянную времени, — медленно проговорил Меркушев, — то на плохой ленте схема успеет подстроиться под провал громкости, не потеряв импульс.

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

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

Гальперин скрестил руки на груди, внимательно глядя на владимирцев.

— А взамен что?

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

Слава, до этого тихо стоявший у стеллажей с приборами, чуть заметно улыбнулся. Разговор перестал быть обменом подозрениями и стал нормальным инженерным спором.

После кассет разговор перешел к программам. Гальперин пододвинул к себе толстую картонную папку, развязал тесемки и выложил на стол стопку распечаток. Широкие листы АЦПУ пестрели колонками цифр, перфорационными отверстиями по краям и карандашными правками.

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

Громов придвинул распечатку к себе и просмотрел несколько строк листинга.

— Для лаборатории — правильно, — сказал он. — Наша версия для «Сферы-80» беднее и меньше. Мы делали ее как общий вход для школьных классов, кружков и простого управления внешними устройствами. Значит, спорить надо не о том, чей бейсик главный, а о том, какое подмножество обязано работать везде.

— Подмножество — это опять красиво, — заметил Беспалов. — А на практике что?

Морозов повернул к себе чистый лист и провел посередине короткую черту.

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

Гальперин не перебивал, но пальцы его легли на папку с распечатками жестче.

— То есть вы хотите, чтобы наш бейсик стал вашим?

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

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

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

— Значит, нам нужно определить минимальный набор общих правил, — предложил Алексей. — Как загруженная программа понимает возможности машины? Как проходит самопроверка памяти?

Услышав про самопроверку, инженеры НЦ оживились. Гальперин отложил папку с распечатками и снова повернулся к доске.

— Память мы сейчас гоняем простыми шаблонами, — ответил Гальперин. — Пишем в ячейки разные шаблоны, прогоняем несколько проходов, смотрим, нет ли повторяющихся ошибок. Для макетного стола хватает.

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

— Готовые тесты под вашу плату мы писать не будем.

— И не надо, — ответил Морозов. — Нам нужна методика: какие случаи вы считаете опасными, какие ошибки ловили на своих макетах, какие входные примеры должны дать один и тот же ответ. Код под наше железо напишем мы. Код под ваше — вы, если решите поддержать этот стандарт.

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

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

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

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

— С нашей — ваш список того, что проверить во Владимире, — сказал Морозов.

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