para detectar cuando ha llegado una señal, puedes hacer lo siguiente:
- leer el contenido del puerto y guardarlo en una variable
- crearte un bucle infinito (porque tu programa se ejecutará continuamente)
- en el bucle lees el contenido del puerto y lo guardas en una segunda variable
- comparas los valores de ambas variables
- si son diferentes, pues es que ha llegado un dato, si no, se vuelve a ejecutar el ciclo
Ahora, para la función de lectura del puerto, en Turbo C puedes usar la
inportb(dirección del puerto);
Sin embargo, debes tomar en cuenta que en Windows NT/2000/XP no puedes acceder directamente a los puertos mediante software (cuestiones de protección), por lo que, aunque tu programa se ejecutara en p. ej. Windows 98, no lo haría en los que te mencioné, ya que para ello debes hacerlo mediante un 'driver'. Para esto puedes usar una DLL que contenga las funciones necesarias.