La biblioteca de C CONIO (CONsole Input Output), conocida popularmente como conio.h por su archivo de cabecera, es sin duda uno de los recuerdos más intensos de desarrolladores de C durante los años 80 y 90.

Pese a no formar parte del estándar ANSI, ni POSIX, conio se ha llegado a portar a diferentes plataformas: DOS, OS/2, Win32, Win64, etc. Está disponible también en diferentes compiladores, incluso en sus versiones más recientes, como Visual C++, Digital Mars C++, Embarcadero C++ Builder, DJGPP C++ o OpenWatcom C++.

Aunque se implementó inicialmente por Lifeboat Associates como parte de Lattice C 1.0 (1982), no fue hasta que Borland lanzara Turbo C 1.0 (1987) que conio.h cobraría gran popularidad.

Lo que hicieron en realidad, fue adoptar la filosofía de la unidad CRT de Turbo Pascal, al nuevo Turbo C. Así, mientras la conio de Lattice, básicamente usaba las rutinas de E/S de DOS, conio y CRT, las implementaban accediendo directamente al hardware, u opcionalmente usando la BIOS. ¿Os suena la variable directvideo?

Era increíble la cantidad de primitivas que ofrecía, que en otros entornos, lo habitual era tenerlas que comprar a parte a terceros: manejo de ventanas lógicas, scrolls, manipulación de buffers, … Por desgracia, a alguien que estaba acostumbrado al rendimiento de pantalla de Turbo Basic, y más aún con las mejoras en ensamblador de TBWINDOW, el rendimiento de crt y sobre todo conio, distaba mucho de ser el ideal.

De manera que los chicos de la legendaria De Trans Software se pusieron manos a la obra con DIRIO Library como acrónimo de DIRect Input Output, un remplazo de conio para Turbo/Borland C++ pensado en la prestación pura. No en vano, algunas comparativas la demostraban como 5 veces más rápida que la librería de serie.

La virtud de DIRIO, era que estaba implementada íntegramente en C. A pesar de estar bastante optimizada, los accesos a memoria seguían siendo en general de 8 bits, y los scrolls no estaban acelerados, pues usaban las funciones de la BIOS, por lo que no me cabe duda que ese aumento de rendimiento de 5x sobre conio, podría haber sido fácilmente de 10x. Una prueba más, de que el énfasis de conio no estaba en el rendimiento.

Posteriormente llegaría CONXLIB (CONIO eXtended LIBrary), que inicialmente usando conio como base, agregaba funciones de ventanas, ratón, controles de texto (campos de texto, radios, checkboxes, …). La idea era una vez fuera estable, migrarla a DIRIO, y formar parte del que iba a ser nuestro desarrollo estrella WIPE 4.0.

Por esas cosas que ocurren con bastante frecuencia, ni DIRIO 3, ni WIPE 4 llegaron a ver la luz.