Проект «Сфера-82»: Цвет и слой - Станислав Миков
— Начинайте с дисплейного ввода, — ответил Алексей. — Архитектуру мы уже утвердили: ваша прикладная программа работает поверх МикроДОС.
Громов, понимая мысль Алексея с полуслова, шагнул к столу и постучал костяшками пальцев по серому пластику дисковода.
— Базовая система остается за нами, — сказал он. — Вся работа с памятью, печатью и дисководом. Вы пишете прикладную программу строго через системные вызовы. Напрямую в аппаратуру не лезете.
Шрамов нахмурился, чувствуя, как его оттесняют от самого интересного — от машинных кодов и контроля над железом.
— А математика? — спросил он. — Олимпиадные алгоритмы?
— Математику возьму на себя, — спокойно ответил Громов. — Я уже возился с олимпиадным алгоритмом, когда проверял прежние наработки. У меня остались черновые куски, мне банально быстрее подогнать эту логику под наши ограничения. Я вычищу все расчеты и выдам вам согласованный вызов подпрограммы. Отправите в нее свои таблицы, а обратно прилетит просчитанный путь или сигнал сбоя.
Шрамов отступил на полшага, недовольно поджав губы.
— Стоп. Если вы держите систему, и вы же пишете расчет… А мне что остается? Знакоместа по экрану гонять да поля ввода размечать?
Морозов подался вперед, опираясь локтями о колени.
— Ваш участок — пульт, Юрий Павлович, — сказал Морозов. — Женя отдаст вам готовый расчетный модуль, а ваша задача — сделать так, чтобы уставший диспетчер не повесил машину случайной опечаткой.
Шрамов недоверчиво прищурился.
— Значит, если алгоритм насчитал чушь, вопросы к Громову, — хмыкнул он. — А если диспетчер промахнулся мимо клавиши и машина встала — вопросы ко мне. Справедливо.
Горелов, до этого молча слушавший перепалку, одобрительно кивнул.
— Грамотно, — произнес Горелов. — Разделение ответственности. Но Ширяев на приемке спросит строго. Как мы докажем заказчику, что пульт обращается именно к утвержденной подпрограмме Громова, и что оператор не влезет в алгоритм напрямую?
— Через контрольные суммы и строгий регламент вызовов, — ответил Громов, доставая из коробки дискету. — Подпрограмма расчета маршрутов будет лежать в выделенном блоке памяти. Прикладная программа сможет обратиться к ней только по одному конкретному адресу, передав массив исходных данных. Никакой самодеятельности.
Шрамов медленно выдохнул. Комплекс «МАРШРУТ-82В» — это то, с чем каждый день предстоит работать живому человеку за пультом.
— Принято, — кивнул он. — Тогда давайте к практике. Показывайте системный диск. На чем операторскую часть писать будем и как готовить образ для ПЗУ?
Щелкнул замок дисковода. Громов опустил флажок, фиксируя дискету, и нажал аппаратный сброс. Шаговый двигатель затрещал, выставляя магнитную головку на нулевую дорожку. Экран мигнул, очистился, и кинескоп высветил строчки приветствия «МикроДОС».
Евгений набрал команду чтения каталога. По экрану побежал ровный столбец имен файлов: текстовый редактор, макроассемблер, символьный отладчик, несколько служебных программ для работы с блоками памяти. Рабочая полка системщика.
— Спартанский набор, — хмыкнул Шрамов, вглядываясь в светящиеся буквы. — Всю прикладную программу на ассемблере писать будем? Код, конечно, выйдет компактным, но листинг разрастется так, что сопровождать замучаемся. Захочет заказчик втиснуть новую строку или сдвинуть позицию ввода — мы с ума сойдем координаты знакомест пересчитывать и ветвления править.
Громов усмехнулся.
— Не обязательно. Алексей Николаевич привез из Зеленограда компилятор языка Си. Работает прямо под МикроДОС. Он отлично справляется со структурами данных и указателями. Логику экранов и бланков на нем писать в разы быстрее, мы уже обкатали это на топологиях.
Шрамов недоверчиво прищурился.
— Си? Что за экзотика? Я его не знаю, Заказчик тем более. Если мы завяжем оборонный контур на язык, который в стране понимают полтора человека, нас первый же нормоконтроль на куски порвет. Где ГОСТы? Где методички?
— Согласен со Шрамовым, — кивнул Горелов. — Мне нужна проверяемость при сдаче. Код должен быть читаемым для комиссии.
— Нормоконтролю нужен структурный исходный текст, — возразил Морозов. — Ассемблерные простыни комиссия всё равно не поймет, а Си выглядит как нормальная понятная математика. Для логики диспетчера — самое то.
Шрамов скептически хмыкнул, взвешивая варианты.
— Ладно, посмотрю ваш Си на досуге. Но скелет начну на ассемблере, чтобы время не терять. Громов, у тебя распечатка вызовов «МикроДОС» под рукой?
Громов молча вытащил из стопки бумаг скрепленную скрепкой методичку и пододвинул по столешнице.
— Держи. Системные вызовы консоли — с первого по одиннадцатый. Базовый BIOS уже прошит, напрямую с железом возиться не придется. Опрос клавиатуры, позиционирование каретки, печать строки — все там.
— Отлично, — Шрамов бегло пролистал страницы. — Оберну эти вызовы в макросы и начну собирать экраны ввода. Сначала голый скелет, потом прикрутим расчеты.
Дверь открылась, пропустив Егорову с тяжелой картонной папкой под мышкой. Следом шагнул Ширяев, держа в руке перетянутую резинкой пачку желтых телеграмм.
Егорова подошла к столу, аккуратно сдвинула методичку и опустила ношу прямо перед клавиатурой.
— Я подготовила реальные рабочие срезы предприятия за прошлую неделю, — произнесла она. — Товарные накладные, диспетчерские журналы, сводки. Почти везде есть неполные коды, исправления карандашом поверх чернил и путаница в единицах измерения.
Она прижала ладонь к плотной обложке.
— Выходит, операторской части придется фильтровать этот поток до того, как данные уйдут в подпрограмму расчета, — произнес Шрамов. — Без строгого контроля ввода машина просто умножит ошибки.
Ширяев забрал папку, чтобы не загромождать пространство вокруг клавиатуры и рабочих дискет, и шагнул к свободному приставному столику. Развязав тесемки, он принялся методично доставать бумаги.
На гладкую столешницу легли широкие бланки с выцветшими синими графами и стопки плотных картонных карточек с пробитыми отверстиями по краям. Следом Ширяев выложил помятые желтые бланки телеграмм и несколько склеенных внахлест длинных бумажных полос, обозначавших узловые станции. Уральский промышленный узел предстал перед инженерами в реальном, бумажном виде.
Ширяев оперся обеими руками о край стола, нависая над бумажным хаосом. Его тяжелый взгляд скользнул по лицам присутствующих.
— Вот ваши рабочие данные. — Ширяев ткнул пальцем в плотную стопку карточек. — Справочник узла. Перегоны, длина путей, наличие тяжелых кранов. Это постоянная база, которая пойдет в ПЗУ.
Он придвинул к себе стопку желтых телеграмм.
— А это оперативная обстановка, — Ширяев прихлопнул листки ладонью. — То, что диспетчер вводит на смене. Навалочная станция забита углем, пустых вагонов нет. Соседний перегон закрыт путейцами. С завода идет литерный состав. Программа «МАРШРУТ-82В» должна переварить эти вводные.
Егорова вытянула из пачки несколько бланков. Быстро просмотрев заполненные от руки строки, она разложила листы на потертой столешнице перед Шрамовым.