Физика там простая - обычный манчестер. А логика еще проще: серия 0, потом все как описано тут. Так как свойство манчестера с самосинхронизацией позволяет получить как прямой так и инверсный код, то при приеме синхробайта если он был 0E6H, то все байты принимаются как есть, если он был 19H, то все байты перед сохранением инвертируются. Способ приема (подпрограмма загрузки вышеуказанных компов) следующий: ждем перепада, ждем константу загрузки, считываем бит. Повторяем. отличие режима поиска синхробайта от загрузки байта в следующем: при поиске синхробайта (счетчик бит 0FFH) подпрограмма после каждого принятого бита сравнивает с синхробайтом, а при загрузке байта (счетчик бит 08H) просто загружает 8 бит подряд. Из-за того, что при загрузке блока кодов между вызовами выгрузки байта есть несколько команд (увеличение указателей, сравнение на конец) то второй полупериод последнего бита в байте несколько удлинен. Поэтому звук раккорда (серия байтов 00H) слышится "рванной". Однако, при правильной синхронизации эти задержки попадают на аналогичные при загрузке файла и не влияют в реальном железе.
---------- Post added at 11:23 ---------- Previous post was at 09:25 ----------
Отрезал чисто игру Adventures и собрал статистику по длительностям полупериодов:
Отчетливо видно, что граница между коротким и длинным у нас 23<LoadConst<28. Т.е., надежное число будет 25 или 26. Так же видны выпадающие из общей картины единичные полупериоды, попробую их проанализировать.Код:Загружено 8639781 сэмплов (34559124 байт). Value: 9 Position: 26,895 Count: 1 Value: 10 Position: 26,519 Count: 2 Value: 11 Position: 41,316 Count: 2 Value: 12 Position: 26,819 Count: 3 Value: 13 Position: 5,684 Count: 519 Value: 14 Position: 0,000 Count: 17059 Value: 15 Position: 0,001 Count: 154455 Value: 16 Position: 0,001 Count: 144395 Value: 17 Position: 0,478 Count: 20661 Value: 18 Position: 0,026 Count: 9768 Value: 19 Position: 0,004 Count: 10190 Value: 20 Position: 1,373 Count: 4492 Value: 21 Position: 5,716 Count: 1798 Value: 22 Position: 5,789 Count: 518 Value: 23 Position: 29,255 Count: 3 Value: 28 Position: 56,909 Count: 1 Value: 29 Position: 1,399 Count: 243 Value: 30 Position: 1,375 Count: 11584 Value: 31 Position: 1,359 Count: 15509 Value: 32 Position: 1,360 Count: 24446 Value: 33 Position: 1,357 Count: 8902 Value: 34 Position: 1,362 Count: 1651 Value: 35 Position: 1,401 Count: 2915 Value: 36 Position: 1,379 Count: 5813 Value: 37 Position: 5,896 Count: 5037 Value: 38 Position: 59,742 Count: 51
---------- Post added at 11:58 ---------- Previous post was at 11:23 ----------
Подправил и вот что получил:
Поведение на константах от 23 до 27 вполне предсказуемо. Ниже 19 и выше 27 файл не распознаваем.Код:Загружено 8639781 сэмплов (34559124 байт). Value: 12 Position: 41,326 Count: 2 Value: 13 Position: 5,684 Count: 520 Value: 14 Position: 0,000 Count: 17061 Value: 15 Position: 0,001 Count: 154457 Value: 16 Position: 0,001 Count: 144398 Value: 17 Position: 0,478 Count: 20663 Value: 18 Position: 0,026 Count: 9770 Value: 19 Position: 0,004 Count: 10189 Value: 20 Position: 1,373 Count: 4490 Value: 21 Position: 5,716 Count: 1797 Value: 22 Position: 5,789 Count: 518 Value: 23 Position: 21,480 Count: 1 Value: 29 Position: 1,399 Count: 243 Value: 30 Position: 1,375 Count: 11584 Value: 31 Position: 1,359 Count: 15510 Value: 32 Position: 1,360 Count: 24448 Value: 33 Position: 1,357 Count: 8901 Value: 34 Position: 1,362 Count: 1650 Value: 35 Position: 1,401 Count: 2915 Value: 36 Position: 1,379 Count: 5813 Value: 37 Position: 5,896 Count: 5037 Value: 38 Position: 59,742 Count: 51 19L: 0000..79FF = 7712 : 766C 19R: FFFF..79FF = 0000 : 79FF 20L: 0000..79FF = 9BC1 : 766C 20R: 0000..79FF = 6FD2 : 766C 21L: 0000..79FF = C9AF : 766C 21R: 0000..79FF = C8D7 : EDD8 22L: 0000..79FF = 7E74 : 766C 22R: 0000..79FF = 4A58 : EDD8 23L: 0000..79FF = 4A58 : EDD8 23R: 0000..79FF = 4A58 : EDD8 24L: 0000..79FF = 4A58 : EDD8 24R: 0000..79FF = 4A58 : EDD8 25L: 0000..79FF = 4A58 : EDD8 25R: 0000..79FF = 4A58 : EDD8 26L: 0000..79FF = 4A58 : EDD8 26R: 0000..79FF = 4A58 : EDD8 27L: 0000..79FF = 4A58 : EDD8 27R: 0000..79FF = 4A58 : EDD8


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



