Or you could use inline machine code, which would be more efficient than intr() procedure GetKey (var Key, Ekey: Char); begin inline ($31/$c0/ { xor ax,ax } $cd/$16/ { int 16h } $c4/$be/Key/ { les di,Key[bp] } $88/$05/ { mov [di],al } $c4/$be/Ekey/ { les di,Ekey[bp] } $88/$25) { mov [di],ah } end;