Старый Philips PM5139 научили новым сигналам, сначала запустив его 8051 в эмуляторе
У измерительного генератора есть два тела: аналоговый тракт, который формирует напряжение на BNC-разъёме, и маленький контроллер, который решает, какую ручку пользователь повернул и какие узлы надо переключить. В Philips PM5139 этот второй слой оказался гораздо доступнее первого. Два 64-KiB дампа EPROM позволили заглянуть в прибор через его 8051, хотя полного service manual для модели почти нет.
Прошивка как стенд для самого прибора
Проект doctormord не остановился на дизассемблировании. Оригинальная прошивка исполняется в Python- и JavaScript-эмуляторах 8051; исследователь вызывает подпрограммы с контролируемыми входами и смотрит, что меняется в RAM и какие телеграммы уходят по C-bus к аналоговым микросхемам. Так были разобраны пути установки частоты, амплитуды и смещения, режимы AM/FM, sweep, burst и symmetry. Эмулятор превратил старый EPROM в стенд, где гипотезу можно проверить без бесконечного цикла «стереть ПЗУ — прошить — включить прибор — ловить сигнал осциллографом».
У цифрового пульта нашлась вполне конкретная физика. Внутри описаны PCB80C652/8051, EPROM 27512, I²C-периферия, LCD-драйвер PCF8576, NVRAM PCF8570 и EEPROM X28C64, хранящая пользовательские формы. Сам PM5139 штатно работает от 0.1 mHz до 20 MHz. Контроллер не рисует синус самостоятельно: он координирует память, интерфейсы и аналоговые узлы, поэтому трассировка его решений даёт карту прибора даже при пробелах в схеме.
Где на самом деле появились новые формы
Исправленная V2.0 меняет две встроенные ROM-таблицы: одна стала логарифмическим chirp, другая очищена и вычислена заново. Скрипт сборки также правит идентификационную строку, индикацию версии и контрольную сумму. Шесть действительно новых ARB-форм лежат в отдельном образе для X28C64: sinc, затухающий звон с Q около 6, ECG, 16-ступенчатая лестница, выпрямленный синус и пятитоновый multitone. Здесь проходит важная граница: один ROM V2.0 не добавляет памяти для новых сигналов; для них требуется прошить отдельную EEPROM D310.
Автор сообщает, что V2.0 запущена на одном реальном PM5139, а шесть слотов работают. Это сильнее красивого дизассемблера, но ещё не полноценный отчёт о качестве выхода: независимых осциллограмм, спектров и измерений THD для модифицированных форм нет. Сам эмулятор не моделирует waveform RAM и аналоговый тракт, поэтому порядок байтов, режим записи и уровень выхода приходилось сверять на железе.
Что эмулятор ещё не способен доказать
Отдельная opt-in сборка умеет проигрывать мелодию первого уровня DOOM. Этот бонус хорошо показывает масштаб вмешательства: прибор сохранил свою измерительную роль, но его тридцатилетний контроллер теперь исполняет код, которого на заводе Philips для него не существовало. Для ремонта и расширения старой лабораторной техники вывод полезнее мелодии: сначала можно заставить микроконтроллер объяснить свои действия, и лишь потом идти в плотный лес аналоговых переключателей, ЦАП и формирующих каскадов.