И вот тут:
I_1:= I1; I_2 := I2;
А не правильнее:
I_1:= Q; I_2 := Q;
Я бы и i1 и i2 в процедуре приравнял к Q, чтобы на 2х устройствах ввода после изменения задания были после обработки одинаковые задания.

С аналоговым выходом согласен сложнее операции при задании с разных интерфейсов, например, но тоже выполнимо.