La unión REGS está definida en el archivo de cabecera dos.h de la siguiente manera:
struct WORDREGS
{
unsigned int ax, bx, cx, dx, si, di, flags ; //OJO! Fíjate que carecen de la 'e' (eax, ebx...) es porque se tratan como registros de un procesador de 16 bits, ahí está el problema.
};
struct BYTEREGS
{
unsigned char al, ah, bl, bh, cl, ch, dl, dh ;
};
union REGS
{
WORDREGS x ;
BYTEREGS h ;
};
No funciona con C++Builder porque éste utiliza un compilador de 32bits y en la versión dos.h de 32bits no se encuentra definida esta unión, para que te funcione el código debes compilarlo con un compilador de 16bits como el Turbo C++ de Borland que trabaja a 16bits.
Un saludo y Suerte...