Есть, кой-чо, но информация немного не новая
Память микросхемы состоит из 2-х блоков. Первый блок имеет размер 256 байт и находится в файле по адресам 0x00 – 0xFF (hex). Этот блок читается и записывается программатором без проблем, и именно здесь находится большинство счетчиков принтера. Отмечу, что область памяти 0xC0 – 0xFF принтером не используется, и в разных чипах содержит разные данные. Для исключения затирания этой информации запись в эту область я в данной версии программы заблокировал, данные по этим адресам в файле при записи игнорируются. Второй блок расположен в файле по адресам 0x100 – 0x17F. Он нормально читается, но пока он доступен как однократно программируемый. Это значит, что однократная запись возможна только в ячейки памяти, которые сожержат число 0xFF. В этом блоке находятся в основном константы: номер CRUM-а, емкость и тип картриджа, дата выпуска, и т.д. В этой области также расположено несколько важных однократно программируемых данных. Это флаг окончания тонера «Exhaust toner» (0x14c), флаг игнорирования тонера «Clear toner» (0x14D), 16 байтное поле «Progress Bar» (0x160-0x16F). Флаги изначально равны 0xFF, а при активации флагов принтер пишет число «01». Поле «Progress Bar» в новом картридже содержит 10 байт 0xFF. При увеличении счетчика страниц CRUM-а принтер заполняет это поле слева направо байтами 0xA5. Если поделить число байт 0xA5 на общее число байт(16) и умножить на 100%, то получим процент израсходованного тонера, вычисленного исходя из количества распечатанных страниц. Принтер периодически проверяет поле «Progress Bar», и, если нужно, счетчик страниц CRUM-а корректируется по этому полю.
Пока память доступна как однократно программируемая, предлагаю на новом катридже поля (Exhaust toner – 0x14c) и «Progress Bar» (0x160-0x16F), если они есть в конкретной модели принтера, заполнять нулевыми байтами.