M,M_,On,Out : DWORD; //если приперло - можно 32 кнопы запилить
------

M.0 := Di1; //каждая DiN связана с DoN
M.1 := Di2;
M.2 := Di3;
M.3 := Di4;

On := M AND NOT M_;
Out := SEL(On > 0, Out, On);
M_ := M;

Do1 := Out.0;
Do2 := Out.1;
Do3 := Out.2;
Do4 := Out.3;