Проект «Сфера-80»: Олимпиада - Станислав Миков
Книгу Проект «Сфера-80»: Олимпиада - Станислав Миков читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!
Шрифт:
Интервал:
Закладка:
На центральном монтажном столе разворачивалась битва за визуализацию. Олег Тимофеев и Наташа Рогова склонились над макетной платой видеоконтроллера. То, что лежало перед ними, напоминало кусок текстолита, на который кого-то вырвало цветной медной проволокой. Десятки тончайших жил тянулись от микросхем к разъемам, образуя трехмерную паутину. Рядом громоздился массивный корпус осциллографа. Его экран светился в полумраке душной комнаты, рисуя две ломаные линии сигналов.
Чуть поодаль стоял обычный черно-белый телевизор, переделанный под монитор. На его выпуклом экране плясала бешеная, раздражающая глаз рябь. Белые вспышки, хаотичные полосы, срывы синхронизации. Классический, эталонный «снег». Когда оба устройства одновременно пытались обратиться к памяти, происходила коллизия, и на экран летел цифровой мусор.
Олег держал в руке паяльник. Его пальцы едва заметно подрагивали от перенапряжения и выпитого за день растворимого кофе. На кончике жала дымилась крошечная капля припоя.
Наташа не отрывала взгляда от экрана осциллографа. Ее пальцы мягко, с хирургической точностью крутили ручки развертки на передней панели С1–70, растягивая зеленую линию сигнала так, чтобы увидеть фронты импульсов.
— Не сходится, Олег, — негромко произнесла она, вглядываясь в фосфоресцирующий график. — Мы снова пытаемся вклиниться в цикл шины, когда процессор выставляет адрес. У него приоритет жесткий.
— Нам придется полностью перепаять блок арбитража, — констатировала она, придвигая к себе справочник. — Мне нужны временные диаграммы процессора. Точные задержки от среза первого такта до выдачи адреса…
Морозов отлепился от окна. Процесс пошел. Архитектура начала обретать плоть, избавляясь от детских болезней прямой конфронтации. Он оставил инженеров-аппаратчиков наедине с их миллиметровкой и медными проводами, и неторопливо пошел вглубь лаборатории.
Там, за отдельным столом, огражденным от остального мира высокими стопками технической документации, сидел Евгений Громов.
Если на столе Олега царил хаос из металла и припоя, то у Громова разворачивалась бумажная трагедия. На столе, на стульях и даже на полу длинными, бесконечными складками лежали распечатки с АЦПУ. Широкая перфорированная бумага «гармошкой», испещренная моноширинным шрифтом, напоминала внутренности какого-то поверженного бюрократического монстра. Рядом стоял граненый стакан с давно остывшим, черным, как деготь, кофе.
Евгений сидел, ссутулившись, обхватив голову руками. Перед ним лежал толстый кусок кода BIOS операционной системы CP/M, который они скопировали в московском подвале. После того как первая же попытка выполнить команду чтения каталога привела к аппаратному зависанию всей системы, Громов взял на себя программную часть вины. Он был уверен, что сможет обойти конфликт доступа программно, вставив циклы задержки между обращениями к болгарскому дисководу ИЗОТ.
Морозов остановился за спиной программиста. Слышно было, как тяжело дышит Громов.
Для Евгения концепция разделения системы на слои не представляла сложности. Он прекрасно понимал, как базовая дисковая операционная система общается с ядром, а ядро — с железом через систему базового ввода-вывода. Проблема лежала в иной плоскости. Перед ним находился код, написанный по ту сторону океана для контроллеров, которых не существовало в советской природе.
Громов пытался написать процедуру ПДП для дисковода вслепую.
На полях распечаток виднелись десятки вариантов расчетов машинных тактов. Громов пытался вычислить безопасные циклы ожидания методом простого перебора. Чтобы не гонять код каждый раз через транслятор на большой институтской ЕС ЭВМ, он работал «на живую». Через примитивную программу-монитор, прошитую в макете, он вбивал шестнадцатеричные коды пустых операций (NOP) прямо в оперативную память. Вбивал измененный код, передавал управление ядру, и система снова и снова намертво висла: контроллер и процессор не успевали обслужить поток байтов в пределах одного оборота диска, а протокол обмена требовал жестких временных рамок.
Евгений с раздражением отбросил карандаш. Грифель с сухим треском сломался о поверхность стола.
— Это черный ящик, Леша, — прохрипел Громов, не оборачиваясь. Голос его был сухим от табачного дыма. — Помнишь, в американских исходниках БИОСа была дурацкая таблица трансляции секторов? Я решил, что это программный костыль под их специфический контроллер, и выкинул ее из кода, пустив чтение подряд, один к одному. А теперь я пытаюсь вставлять заплаты с пустыми тактами NOP, чтобы процессор успевал за дисководом. А он не успевает! Контроллер шлет прерывание раньше, шина схлопывается, и мы получаем ту самую «пилу» на осциллографе. Мы бьемся лбом в кирпичную стену.
Алексей смотрел на измятые листы распечаток. В его прошлой-будущей жизни, если программист сталкивался с подобной проблемой, он открывал браузер, вбивал номер чипа и через три секунды получал подробный даташит в формате PDF. Информационный голод был побежден. Здесь же, в тысяча девятьсот восьмидесятом, информация являлась самым страшным дефицитом.
Но у Морозова был чит-код. В свое время он написал несколько программных эмуляторов старых процессоров чисто из академического интереса, досконально изучив физику работы их периферии.
Алексей придвинул к себе свободный табурет и сел рядом с Громовым. Он взял со стола обломок карандаша и придвинул к себе чистый лист бумаги.
— Ты не там ищешь проблему, Женя, — ровным, лишенным эмоций голосом произнес Морозов. — И очень зря выкинул таблицу. Ты пытаешься затормозить процессор. А нужно было оставить обманку для дисковода.
Громов поднял воспаленные, красные от недосыпа глаза.
— В смысле обманку? Физику вращения блина ты как обманешь? Головка читает сектор за сектором подряд. Если я не успеваю забирать данные, они теряются.
— Американцы читают их подряд только в том случае, если они записаны физически подряд, — Морозов взял карандаш и нарисовал круг, разделив его на сектора, нумеруя их в странном порядке: 1, 4, 7, 2, 5, 8. — Интерливинг. Чередование секторов. Тебе не нужно вставлять пустые такты. Верни в BIOS таблицу трансляции, но пересчитай смещение. Прочитал первый сектор, а пока процессор переваривает данные, головка пропускает два физических сектора. К моменту, когда ядро готово принять следующий блок, под головку как раз подъезжает второй логический сектор. Для нашего кварца и болгарского блина сделай коэффициент чередования три к одному. Шина разгрузится аппаратно.
Громов рефлекторно потянулся за своей тетрадью, но рука его замерла на полпути. Евгений смотрел на листок бумаги. В его глазах отражалась сложная гамма эмоций. Сначала — вспышка чистого понимания изящного алгоритмического решения. Это было настолько просто и гениально, что решало проблему без единого аппаратного костыля.
Но следом за пониманием пришло нечто иное. Подозрение.
Громов медленно перевел взгляд на Алексея.
— Леша… — Евгений произнес это имя так, словно пробовал его на вкус. — Откуда ты это взял? Я полдня бился над этой таблицей в
Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.
Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.
- 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
- 2. Просьба отказаться от оскорблений, угроз и запугиваний.
- 3. Просьба отказаться от нецензурной лексики.
- 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.
Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.
Оставить комментарий
-
Гость granidor38521 май 18:18
Помощь с водительскими правами. Любая категория прав. Даже лишённым. Права вносятся в базу ГИБДД. Доставка прав. Смотрите всю...
Развод с драконом. Вишневое поместье попаданки - Софи Майерс
-
Гость Алена19 май 18:45
Странные дела... Муж якобы безумно любящий жену, изменяет ей с женой лучшего друга. оправдывая , что тем самым он благородно...
Черника на снегу - Анна Данилова
-
Kri17 май 19:40
Как же много ошибок, автор, вы бы прежде чем размещать книгу в сети, ошибки проверяли, прочитку делали. На каждой странице по 10...
Двойня для бывшего мужа - Sofja
