The 32-bit Unicode Console API for OS/2

version 1.0.3
Jonathan de Boyne Pollard

As shipped, OS/2 Warp has no 32-bit Console API. It has the same 16-bit VIO, KBD, and MOU subsystems that were in OS/2 version 1. It is impossible to write a purely 32-bit OS/2 program that has a textual user interface (other than the simplest "glass tty" style of interface), since the program must contain some 16-bit code in order to thunk down to and call those 16-bit subsystems.

For many years, the IBM Developer Connection CD-ROMs have contained "32TEXT", a beta version of new 32-bit VIO, KBD, and MOU subsystems for Intel OS/2 that were inspired by the 32-bit VIO, KBD, and MOU subsystems that were in PowerPC OS/2. But this code has remained beta code accessible only to those with DevCon subscriptions, and has never been added to the operating system proper. It looks as if it never will be, at this rate. Moreover, the DLLs on the DevCon CD-ROMs contain numerous bugs, not the least of which is a problem in the 32-bit KbdCharIn API function that causes SYS3175s if more than one "console mode" process is running in the system at any one time.

The 32-bit Unicode Console API is a completely new console API for textual user interface programs. By using it, applications programmers no longer need to have 16-bit code in their applications that performs thunking. If the application uses no other 16-bit APIs (either explicitly or via the runtime library of the compiler used to build it), its executables should contain no 16-bit memory objects at all and will be "Pure 32-bit".

On IBM OS/2, the 32-bit Unicode Console API is implemented on top of the 32-bit VIO, MOU, and KBD subsystems. Rather than using IBM's "32TEXT" API from the DevCon CD-ROMs, it is bundled with an implementation of those subsystems that is DLL entrypoint compatible with 32TEXT but which does not suffer from the aforementioned problem in KbdCharIn().


For full information, see the on-line documentation.

© Copyright 2000,2001,2009 Jonathan de Boyne Pollard. "Moral" rights asserted.
Permission is hereby granted to copy and to distribute this web page in its original, unmodified form as long as its last modification datestamp information is preserved.