Manwe, можно попробовать прямой метод определения правильно ли выбраны длительности импульсов или нет:
Код:
MOV 0, R0
WAIT1: BIT / BEQ WAIT0
WAIT0: BIT / BNE WAIT1
SEC / RORB / SOB и другие команды обработки
BIT / BNE RET1
BIT / BNE RET2
BIT / BNE RET3
BIT / BNE RET4
BIT / BNE RET5
...
RET5: INC R0
RET4: INC R0
RET3: INC R0
RET2: INC R0
RET1: INC R0
RTS
В идеале для короткого импульса примерно в равных пропорциях должны срабатывать RET1 или RET2, в этом случае его длительность находится где-то посередине между двумя инструкциями BIT, если считать что его начало точно попадает на WAIT0. А если его удлинить до второй инструкции BIT, мы будем часто получать RET2, но когда влезет видеоадаптер может получить RET1 или RET3. Само по себе это не страшно, но нам еще нужно чтобы для длинного импульса не срабатывал ни один переход который срабатывал для короткого. Проверять всё это нужно и для другой полярности сигнала, и для случаев когда все импульсы одного уровня короткие, а другого длинные или наоборот.