В Macintosh Classic 2 обнаружена 34-летняя ошибка, которую скрывала недокументированная функция процессора
Программист Даг Браун обнаружил 34-летнюю ошибку в прошивке компьютера Apple Macintosh Classic 2, которая должна была полностью блокировать его загрузку. Однако устройство успешно работало благодаря недокументированной функции процессора Motorola 68030, которая маскировала проблему.
Исследователь столкнулся с аномалией при эмуляции Macintosh Classic 2 в MAME. В 32-битном режиме эмулятор выдавал ошибку «Sad Mac» при каждой попытке загрузки, тогда как реальное оборудование работало нормально.
Тщательный анализ показал, что во время выполнения кода загрузки система обращалась к недопустимому адресу в памяти. На физическом оборудовании процессор Motorola 68030 автоматически преобразовывал этот адрес в допустимый с помощью недокументированной инструкции.
Для подтверждения теории Браун приобрел и восстановил настоящий Macintosh Classic 2. Тесты подтвердили, что неизвестная инструкция процессора выполняла операцию чтения-изменения-записи и корректировала значение регистра A1, что позволяло системе успешно загружаться.
«Это новообнаруженная инструкция оказалась тем клеем, который случайно удерживает Classic 2 в рабочем состоянии», — пишет Браун. Разработчики MAME не знали о существовании этой инструкции и не реализовали ее в эмуляторе, что и привело к сбоям.
После обнаружения бага разработчики MAME исправили эмуляцию, и теперь Macintosh Classic 2 может загружаться в 32-битном режиме. Браун отмечает, что без эмуляции эта ошибка могла бы остаться незамеченной навсегда, поскольку на реальном оборудовании система работала стабильно.
Это открытие демонстрирует, как недокументированные функции процессоров могут десятилетиями скрывать программные ошибки. Motorola 68030 и другие процессоры семейства 68000 использовались в тысячах устройств — от компьютеров и игровых консолей до принтеров, что оставляет пространство для новых открытий.








0 комментариев