В общем, решил расчехлить свой МХ2 и попробовать на железе.
Дизассемблировал выгрузку байта РАМФОСа. Физика оказалась простой. Если не брать в расчет тот момент, что есть компенсация задержки на выполненные команды (чего нет в обычном и я об этом говорил), то физика следующая.
1. Длинный период означает лог.0, а короткий - лог.1.
2. Раккорд это серия коротких периодов.
3. Каждый байт начинается со стартового бита, длинный период (лог.0?).
4. Затем идут 8 бит данных, причем "ногами вперед" (младший бит первый).
5. Следующим идет бит четности (по логике АЛУ ВМ80), причем если она лог.0, то просто выдается 1 длинный период, а если лог.1 то 2 коротких периода.
6. Завершает его стоповый бит, короткий период (лог.1?).
7. Каждый блок кодов начинается с раккорда, затем 2 байта длины (младший вперед) и потом сам код.
При этом никаких контрольных сумм не вычисляется, т.к. каждый байт содержит четность. В случае ошибки, сам рамфос прерывает чтение, а мы можем попробовать продолжить анализировать входящий поток, уменьшая потери вплоть до 1 байта. Это все крайне не очевидно в дизассемблировании от Винксру. Надо теперь написать анализатор.
Вот руками раскидал заголовок и все сошлось:
Код:0 1 1 1 1 0 0 0 0 1 1 1 X 0F 15 0 0 0 0 0 0 0 0 0 1 1 1 X 00 0 0 1 1 0 0 1 0 1 1 0 1 1 D3 . 0 1 1 0 0 1 0 1 1 0 1 2 D3 . 0 1 1 0 0 1 0 1 1 0 1 3 D3 . 0 0 0 1 1 0 0 1 0 0 1 4 4C L 0 1 1 1 1 0 1 1 0 1 1 1 5 6F o 0 1 0 0 0 0 1 1 0 0 1 6 61 а 0 0 0 1 0 0 1 1 0 0 1 7 64 d 0 0 0 1 0 0 0 1 0 1 1 1 8 46 F 0 1 1 0 0 1 1 1 0 0 1 9 73 s 0 1 1 0 1 0 1 1 0 0 1 A 6B k 0 0 1 1 0 1 1 0 0 1 1 1 B 36 6 0 0 0 0 0 0 1 0 0 0 1 C 20 0 1 0 1 0 0 0 1 0 0 1 D 45 E 0 0 0 0 1 1 0 1 0 0 1 E 58 X 0 1 0 1 0 0 0 1 0 0 1 F 45 E




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 



