Что-то тут странное сжатие - пакеты без заголовков идут, судя по всему.
1 флаговый байт
8 блоков
1 флаговый байт
8 блоков
1 флаговый байт
8 блоков
и т.д.
1-й байт - флаговый в обратном порядке (1-байт,0-код), например:
по байту FD (11111101) блоки идут так:
11111101
87654321
обработка блоков:
1-й блок - 1байт копируется без каких-либо операций
2-й блок - 2байта - код отправляющий копировать определенное число байт из указанного места
3-й блок - 1байт копируется без каких-либо операций
4-й блок - 1байт копируется без каких-либо операций
5-й блок - 1байт копируется без каких-либо операций
6-й блок - 1байт копируется без каких-либо операций
7-й блок - 1байт копируется без каких-либо операций
8-й блок - 1байт копируется без каких-либо операций
затем опять читается флаговый байт и всё по-новой.
Обработка кода:
2 байта:
0000|1010|0000|0001
0123 4567 89AB CDEF
биты BCDEF - количество копируемых байт из исходника, для копирования увеличивается на 2 (в примере будет скопировано 3 байта)
биты 01234567 - указатель на исходник для копирования
однако к значению 0123 (в примере: 0) нужно прибавить 2, и к значению 4567 (в примере: 10) тоже нужно прибавить 2, таким образом в примере получается, что будет скопировано 3 байта начиная с h2С от начала пакета.
Назначение бит 89A мне пока не ясно.
Однако:
вариант E261
1110|0000|0110|0001
0123 4567 89AB CDEF
ссылается на 2-й байт от начала пакета:
1110 = hE + h2 = h10, 0000 = 0 + 2 = 2, а так как
_1__0____2
_1|0000|0010
-1|0123|4567
то, значение десятков отбрасывается.
Причём, я заметил, что когда биты 012 = 111, то биты 89A = 011.