Цифровая археология: как спасают давно утерянные данные

7db300ae279946f3b1474dc20eddb629.jpgЧертежи позабытых процессоров, исходные коды легендарных игр, неизвестные произведения искусства, — чего только не находят в архивах любители старины. Их задача — восстановить, надёжно сохранить и каталогизировать.

Может показаться, что мы живём в век, когда информация практически не способна потеряться: что однажды было оцифровано или создано на компьютере, будет, имей оно хоть какую-то ценность, тиражироваться и вечно кочевать с одного цифрового носителя на другой. Это, к сожалению, не совсем так: стандарты и форматы меняются с поразительной скоростью, а носители информации (в особенности — магнитные диски) имеют крайне ограниченный срок службы. «Цифровая археология» — то есть извлечение данных со старых носителей и перекодирование в современные форматы становится всё более актуальной дисциплиной. В этой области существуют специалисты, и раз за разом появляются истории о том, как они героически извлекли из цифровых руин нечто, имеющее неоспоримую ценность.

Исходные коды Prince of PersiaИгра Prince of Persia была разработана в 1989 году, но вспоминают о ней до сих пор. Приключения принца, который выбирается из подземелья дворца, чтобы спасти свою возлюбленную, захватили умы и заставили игроков потратить бесчисленные часы, чтобы заучить каждый закоулок на каждом уровне. Изначально «Принц» был сделан на компьютере Apple II, но вскоре его портировали на все тогдашние платформы. На данный момент вышло девять продолжений и голливудский фильм (а также книга Виктора Пелевина, в которой мотивы из «Принца» переплетаются с советской реальностью).ec8149fe15e14a00bc886b2a79e121b1.gif

8dd5adff395e4ff7b473472a05eac7e9.gif

Во время разработки игры Prince of Persia: The Sands of Time для Playstation 2 у её создателей возникла интересная идея:, а не добавить ли в качестве «пасхального яйца» возможность запускать и оригинальную игру образца 1990 года? Джордан Мехнер, её создатель, выступал консультантом при проекте и навещал монреальскую студию Ubisoft, где делали Sands of Time, так что связаться с ним не составило труда. Мехнер с готовностью согласился прислать исходники и принялся рыться в коробках со старыми дискетами, которые никогда не выбрасывал. Но вот неудача: нужная дискета исчезла.

The Sands of Time был завершён в 2003 году и разошёлся тиражом более двух миллионов экземпляров, а об исходных кодах оригинального «Принца» так ничего и не было слышно. Об этой потере никто бы не узнал, не получи эта история развитие в 2012 году. Как Мехнер позже рассказал репортёру журнала Wired, ему позвонил отец и сказал, что нашёл у себя коробку с какими-то старыми дискетами, явно принадлежавшими сыну. Когда Мехнер младший получил коробку и стал перебирать дискеты, он увидел, что на одной из них было написано «Prince of Persia, исходный код, 1989». Какая неожиданная удача!

11bd00ace83a4c33a1b4164cc194aa51.jpg

e20ea0e963184c6eaacf48018f6851d1.jpg

Но что делать с пачкой старых пыльных дискет, если под рукой нет ни совместимого компьютера, ни пятидюймового дисковода, ни вообще какого-либо дисковода? Если на дискетах записано что-нибудь столь же важное, как исходники легендарной игры, то есть смысл обратиться к профессионалам. Домой к Мехнеру прибыли двое: коллекционер старых компьютеров с целым грузовиком, на котором он привёз несколько исправных Apple II, и сотрудник организации The Internet Archive с чудесным устройством под названием KryoFlux.

Что такое KryoFlux 5808faa2d24e4b9e87bb1433f771d1fd.jpg

Этот дисковод с виду напоминает любой другой старый пятидюймовый привод, но модифицирован таким образом, чтобы медленно, но верно считывать самые застарелые дискеты. В результате его работы создаётся образ диска, максимально напоминающий исходник. KryoFlux поставляется в комплекте с адаптером USB, и может быть подключен к современному компьютеру. По сути, это устройство служит мостиком между временами старых компьютеров и современными технологиями. Создали его в фирме Software Preservation Society, «Обществе сохранения софта». SPS начинал как клуб любителей Amiga, но потом разросся и, как мы видим, даже обзавёлся чем-то вроде хардверного подразделения. Правда, крошечного — KryoFlux производят исключительно на заказ, а цена на него составляет около тысячи евро.

Мехнеру повезло: все его дискеты считались почти идеально, драгоценные исходные коды Prince of Persia были получены в полном объёме и тут же запущены на одном из старинных компьютеров. Позднее исходники опубликовали на GitHub, где их может скачать любой желающий (http://goo.gl/JacfnI). Увы, для подробного изучения нужно знание ассемблера Apple II, но тут уж никуда не денешься.Заветная коробка таила и другие приятные сюрпризы: нашлись исходные коды клона игры Asteroids, который Мехнер написал в юношестве (подобно тому, как сейчас ради тренировки пишут клоны Flappy Bird), а также неизвестная миру игра Quadris. С ней, кстати, связана занятная история. В начале восьмидесятых годов Мехнер уже работал в игровом издательстве Broderbund, куда в один прекрасный день поступила необычная новая игра под названием Tetris. Руководство компании решило, что Tetris слишком сложен для простого геймера и не взялось его издавать, а вот рядовые сотрудники играли в творение Алексея Пажитнова днями напролёт. Их попросили удалить Tetris со своих компьютеров — этого требовала рабочая этика (права-то так и не были куплены). Дистрибутивы уничтожили, но играть хотелось — так и появился Quadris — чуть ли не первый, но похороненный на долгие годы клон «Тетриса».

Кстати, если чтение про Prince of Persia вызвало ностальгию и жгучее желание поиграть снова, то сейчас это можно сделать в любой момент и даже без установки DOSBox. С недавних пор достаточно зайти на archive.org, найти игру и запустить прямо в браузере. Это возможно благодаря движку JSMESS, на который портировали DOSBox и эмуляторы множества других старых систем. Так что играм восьмидесятых и девяностых годов пока что не грозит пропасть в глубине времён.

Утерянные картины Уорхола О том, кто такой Энди Уорхол, хотя бы краем уха слышали все, а репродукции самых известных его картин вроде «Супа Campbell» попадаются на глаза тут и там с завидной регулярностью. Уорхол широко известен как изобретатель стиля «поп-арт», а вот как пионер цифровых технологий в применении к искусству — в значительно меньшей степени. И, тем не менее, факт: Уорхол с радостью покупал те компьютеры, которые были доступны в восьмидесятые годы, и использовал их скромные графические возможности в своём творчестве.Наша история начинается куда позже. В 2004 году кто-то оцифровал старую видеокассету с записью презентации нового компьютера Amiga, на которую был приглашён Уорхол. Вот он при помощи цифровой камеры делает фотографию сидящей перед ним Дебби Харри (вокалистка группы Blondie), чтобы потом продемонстрировать снимок на экране и буквально за несколько минут превратить его в картину. Попутно он сообщает, что пробует все новые компьютеры, а этого ждал в особенности. Дело происходило в 1985 году, за два года до смерти художника.

d31f3bb812cb4875b5f1175bdbc61c37.jpg

Презентация интересна сама по себе — сейчас такой концентрации звёзд на сцене не позволяет себе даже Apple. Но деятели культуры видят на этой записи не то же, что любители техники: Кори Аркэнджел — художник и специалист по работам Уорхола, в 2011 году набрёл на это видео и немедленно задался вопросом: «А где же сейчас те картины, которые Уорхол рисовал на Amiga?» Аркэнджел отправил запрос в музей Уорхола и быстро получил ответ: дискеты есть и хранятся среди других вещей Уорхола. Удивительно, что никто не пытался скопировать с них информацию раньше.

Дальнейшая история спасения старых файлов в общих чертах совпадает с рассказом о том, как доставали исходники Prince of Persia. В музей прибыл Аркэнджел, команда добровольцев из Компьютерного клуба университета Карнеги — Меллон и несколько других специалистов. Они привезли с собой рабочие компьютеры Amiga 500 и 1000, уже известный нам дисковод KryoFlux в трёхдюймовой модификации и другие средства для восстановления старых носителей.

Иногда доходит до того, что магнитные диски приходится доставать из пластиковых конвертов и полоскать под краном со средством для мытья посуды, чтобы очистить от пыли и плесени. В случае с архивами Уорхола никаких радикальных средств не понадобилось. Дискет, правда, имелось огромное количество, и хоть большинство и было помечено как дистрибутивы программ, полагаться на эту информацию нельзя: вдруг что-то записано поверх? Копировать пришлось всё и даже проверять, не осталось ли следов стёртой информации.

0433fe62d52d46658140cf790a41f3bf.jpg

72827b29b2c4447baeed56fb64a43670.jpg

Специалисты нашли и безупречно скопировали 28 файлов, потенциально содержащих картины. Заголовки гласили campbells.pic, botticelli.pic, marilyn1.pic и так далее. Однако открыть удалось лишь некоторые — часть картинок программа Graficraft, которой пользовался Уорхол, читать отказалось. Попытки использовать более старые версии редактора тоже ничего не дали, и формат пришлось анализировать вручную. Впрочем, знатоки Amiga быстро обнаружили, что внутри обыкновенные дампы видеопамяти, вероятно созданные самой ранней версией Graficraft. Никаких упоминаний о ней не сохранилось, но изображения удалось легко расшифровать и сконвертировать в PNG.

Оборудование Уорхола тоже оказалось примечательным: два компьютера Amiga 1000 в идеальном состоянии, графический планшет одной из первых коммерческих моделей, цифровая камера DigiView, которая делала чёрно-белые снимки (для цветных требовалось трижды снимать одно и то же через разноцветные фильтры) и Polaroid Digital Palette — устройство, которое позволяло записывать изображения на слайды.

13a6dc90ecc446c18c0d61e5e3ced7b1.jpg

На дискетах также нашлись драйверы для той самой камеры Live, которая применялась на презентации Amiga, их версия была обозначена как »0.0». Самой камеры не было, но очевидно, что у Уорхола она появилась на пару лет раньше, чем у простых смертных. На компьютерах тоже нашли кое-что интересное — стикеры «не для продажи». Явное доказательство того, что художник получал тестовую продукцию одним из первых.

Чертежи процессора MOS 6502 В середине восьмидесятых годов процессор MOS 6502 был большим хитом — за счёт низкой цены и одновременно высокой по тем временам производительности. На момент появления он стоил 25 долларов, в 4–5 раз дешевле, чем конкуренты вроде Intel 8080 и Motorola 6800. MOS 6502 лег в основу Apple I и II, Commodore PET, Atari 2600, NES, советского «Агата», болгарского «Правеца» и ещё массы разновидностей домашних компьютеров. Помнишь строки кода, которые бегут перед глазами T-800 в первом «Терминаторе»? Это ассемблер MOS 6502! Через 15 лет этот факт обыграют в «Футураме»: чип в голове у Бендера носит всё ту же знаменитую маркировку.5c162bfb39cd4f1b9260ee42f8cba17c.jpg

Сейчас нет недостатка эмуляторов машин на этом знаменитом процессоре, но они лишь повторяют набор его инструкций, а это не совсем то же, что настоящее «железо». Чертежи MOS 6502 рисовались карандашом на ватмане — САПР в те времена ещё не существовало. Если репринты тех схем и сохранились, то они очень редки.

Трое американских «цифровых археологов» Грег Джеймс, Барри Сильверман и Брайан Сильверман решили восстановить точную цифровую копию MOS 6502, чтобы она служила аналогом исходников на HDL и могла использоваться для симуляции. Как это сделать? Есть только один способ, и он выглядит очень непростым.

a6f44bcb3aff4dd68f6f7ed345433c76.jpg

Упаковку чипа проплавляют фосфорной кислотой, разогретой до 90 градусов, после чего скрывавшуюся под слоем пластика микросхему фотографируют под микроскопом. Именно таким образом группа энтузиастов получила около 200 снимков, которые затем склеили, чтобы получить цифровую копию микросхемы с разрешением 342 Мп.

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

Проект портировали на JavaScript, и теперь по адресу visual6502.org можно найти замечательный симулятор. Он исполняет команды процессора MOS 6502 и тут же показывает, как они исполняются. Видно не только содержимое памяти и регистров, но и снимок микросхемы с дорожками, подсвечивающимися по ходу исполнения программы.

8b94eaaf3c784221895fbd1022f86764.jpg

Вскрытие, фотографирование и создание симулятора процессора кажутся ужасно непростыми делами, но на деле процесс занял всего около полугода: с ноября 2009 года по май 2010-го. С тех пор разработчики успели добавить симулятор Motorola 6800 и собираются продолжать использовать свою технологию для расширения коллекции. Просят присылать любые старинные микропроцессоры: одного экземпляра оказывается недостаточно, когда речь идёт об обработке кислотой.

Нужно сказать, что обратная разработка процессоров — выдумка совсем не новая. В СССР она широко применялась для клонирования западных технологий (см. «Хакер» №8 за август 2013), да и сейчас встречается. Так ребята с форума emu-russia.net недавно распотрошили процессор приставки PSX и изучают его (подробности можно прочесть по адресу psxdev.ru). PSX — это модификация Playstation 2 и, возможно, она ещё недостаточно устарела, чтобы считать её вскрытие археологией — в голову скорее приходит мысль о пиратстве. Но если это и пиратство, то в его лучшем проявлении. К тому же, пройдёт какое-то время, и никто не станет смотреть косо на подобное занятие.

Советский троичный компьютер «Сетунь» Западная история компьютеров давно разложена по полочкам, и нарыть что-то новое можно только при большом везении. Как насчёт отечественной археологии? С советских времён нам осталось богатое наследие редких компьютеров, необычных историй и давно позабытых достижений.Сообщества любителей старых компьютеров существуют и в России. Одно из них называется «Тринари» и посвящено изучению истории троичной ЭВМ «Сетунь». Слово «троичной» здесь нуждается в пояснении: дело в том, что этот уникальный компьютер был спроектирован для работы с данными в троичном представлении, то есть вместо битов (0 или 1), он оперировал тритами — их принято обозначать -1, 0 и 1. Соответственно, вместо байтов у троичного компьютера трайты, они состоят из шести тритов и принимают значение от -364 до 364. Лёгкость работы с отрицательными величинами, как можно заметить, дана такому компьютеру от рождения.

c88eb83b1c9b4dcdbb31ef1fa09bc81b.jpg

Руководил разработкой «Сетуни» Николай Петрович Брусенцов, заведующий кафедрой вычислительной математики механико-математического факультета МГУ. Первый тестовый компьютер был завершён в 1959 году, и впоследствии Казанский завод математических машин выпустил ещё 46 экземпляров, которые разошлись по НИИ и учебным заведениям. К 1970 году команда Брусенцова разработала следующую модель — «Сетунь-70». Но до серийного производства эта машина так и не добралась — помешала советская бюрократия. Считается, что главной проблемой стала вовсе не экзотичность троичных вычислений, а, как ни парадоксально, низкая стоимость компьютера.

«Сетунь-70» в отличие от первой «Сетуни» не только использовала троичное представление данных, но и поддерживала некоторые троичные логические операции. К примеру, троичная логика значительно упрощает сравнение чисел: если аналогичные двоичные операторы могут вернуть лишь значения «больше» или «меньше», то троичное сравнение учитывает возможность равенства чисел.

Александр Обухов из группы «Тринари» по старым схемам разработал эмулятор «Сетуни», причём работающий прямо в браузере. Достаточно открыть страницу trinary.ru/projects/setunws, и оказываешься один на один с панелью управления старинного советского суперкомпьютера. Чтобы разобраться, что к чему, понадобится прочесть книгу «Малая цифровая вычислительная машина Сетунь» —, а это, конечно, осилит не каждый. Но для тех, кого захватила идея троичной логики, такая возможность бесценна.

94c9ffd7a7a04da0a9de3a1d901b23eb.jpg

Другой участник «Тринари», Александр Самсонов, предпринял попытку пойти дальше и создать эмулятор «Сетуни-70», чтобы иметь возможность запускать старые программы, которые ему удалось восстановить с перфолент. В ходе интервью журналу «Компьютерра», Самсонов рассказал о том, как столкнулся с непредвиденными и необычными сложностями. В частности, ПЗУ «Сетуни-70» существует только в виде распечатки в машинных кодах, причём страницы не пронумерованы и перемешаны, а всего их около сорока. Восстановление последовательности в этом случае — задача очень нетривиальная.

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

image

Впервые опубликовано в журнале «Хакер» от 02/2015.

Подпишись на «Хакер»

© Habrahabr.ru