категории | RSS

Программист Даг Браун обнаружил критическую ошибку в компьютере Macintosh Classic 2 1991 года, которая должна была полностью блокировать загрузку системы. Однако машина работала без проблем благодаря недокументированной инструкции процессора Motorola 68030, о существовании которой никто не подозревал более трех десятилетий.

Баг обнаружился случайно, когда Браун попытался запустить эмулированный Macintosh Classic 2 в MAME – эмуляторе, известном поддержкой аркадных систем и классических компьютеров. При загрузке в 32-битном режиме эмулированная машина неожиданно выдавала критическую ошибку. Macintosh Classic 2 мог работать в двух режимах – 24-битном и 32-битном, и именно второй вариант приводил к сбою в MAME, хотя на реальном железе всё функционировало нормально.

Браун провел детальную отладку кода и выяснил причину проблемы. Во время выполнения загрузочной последовательности компьютер делал переход по некорректному адресу памяти, расположенному в регистре A1. При попытке выполнить следующую инструкцию система оказывалась в неправильном месте, что приводило к краху загрузки. Для проверки программист протестировал код на Macintosh IIci той же эпохи с аналогичным процессором и обнаружил странность – реальное железо каким-то образом преобразовывало некорректный адрес в валидный.

Теория Брауна звучала невероятно: Apple выпустила Macintosh Classic 2 с критическим багом в ROM, который должен был вызывать сбой при каждой загрузке, но разработчики компании никогда об этом не узнали, так как процессор 68030 случайно исправлял значение регистра A1 через выполнение недокументированной инструкции. Чтобы подтвердить догадку, программист купил подержанный Macintosh Classic 2, извлек материнскую плату и восстановил её работоспособность. Он собрал тестовый стенд с современным блоком питания ATX и Raspberry Pi для захвата видеосигнала.

После написания тестовых инструкций Браун окончательно подтвердил открытие. Процессор MC68030 выполнял недокументированную операцию чтения-модификации-записи, которая одновременно изменяла значение регистра A1. Именно эта инструкция случайно удерживала Macintosh Classic 2 в работоспособном состоянии – без неё компьютер не мог загрузиться. Разработчики MAME никогда не знали о существовании этой инструкции, поэтому не реализовали её в эмуляторе, что и привело к обнаружению бага спустя десятилетия.

Браун отмечает, что без MAME эта ошибка навсегда осталась бы необнаруженной, так как на реальном железе никаких видимых проблем не возникало. Открытие показывает, сколько скрытых багов может существовать в устройствах, которые считаются полностью отлаженными. Контрибьютор MAME уже исправил ошибку, и теперь Macintosh Classic 2 корректно загружается в эмуляторе в 32-битном режиме.



Источник новости: shazoo.ru

DimonVideo
2025-11-19T22:43:02Z

Здесь находятся
всего 0. За сутки здесь было 0 человек