Ni COBOL, ni PROLOG, mejor en ASM, jeje, aunque algo hay de ASM en el código, pero parece que es para la validación de la arquitectura de la máquina.
Mirando por encima el código y digo solo por encima, lo que he visto es mucho hilo (uno por nivel de sueños includido el mundo real, tres niveles de sueños y un limbo cada uno con un delay mayor según se baja de nivel) ,semáforos para la exclusión mutua y sincronización entre hilos. En fin mucha programación concurrente y mucho tiempo libre.
No se si cygwin tiene las bibliotecas unistd.h y pthread.h o si funcionarán correctamente en Windows, si las tiene compilará pero que funcionen correctamente lo dudo.
Hay que ser más pragmáticos y punto. Si solo usas el ordenador para jugar, leer emails, meterte en meneame y hacerte pajas pues Windows. Si vas a programar c/c++ o servidores(entornos LAMP) indudablemente Linux. Si vas a programar en ASM pues DOS. Si quieres hacer diseño, montaje y dejarte una pasta pues MacOs.
Si quieres ganarte la vida con la informática más vale que tengas Linux y Windows y sepas utilizarlos decentemente. Si eres virgen deja de cacharrear tanto y buscate una novia o vete de p****.