This article is from the Programming VCOMM FAQ, by firstname.lastname@example.org (Taed Nelson) with numerous contributions by others.
[Contributed by Walter Oney and Taed Nelson (email@example.com).]
At a minimum, the default VCOMM RxCallback does not preserve the EBX register,
so you must "push EBX" prior to calling the callback, and "pop EBX"
afterwards. (Turning of compiler optimization will also solve it.)
It is unknown if it affects other callbacks or other registers.
For more detail, see Walter Oney's _Systems Programming in Windows 95_.