Кажется разобрался... Автор проги плохо пдфки изучал. Вот как у него реализовано ядро выдачи 8 байт номера "батона":
Код
ask0
btfsc GPIO,0
goto ask0
;call rot
rrf INDF,1
btfss STATUS,C
goto cout0
goto cout1
cout0 call out0
goto endout
cout1 call out1
endout
...
out0 bcf GPIO, 0 ;выдать 0 = 30мкс
movlw 0xfe
tris 6 ;portb0=0, output
...
написано ужас как коряво. Но дело не в этом. Иммитатор делает непонятные goto/call и не успевает сформировать 0 до момента считывания - и многие ридеры читают "1" вместо "0". По докам на DS1990A Tmsr=15uS и реально все "таблетки" формируют "0" еще в период формирования нуля мастером, а здесь "0" формируется через 12-14 циклов (мкс) после начала мастером таймслота. Плюс еще задержки на шине. А в реальных ридерах чьи прошивки я смотрел зачастую проверка шины происходит через 12-15 uS. Отсюда и ложное чтение "1".
Я во всяком случае себе сделал по уму и теперь все ОК.