Window systems for Textual User Interfaces exist

Window systems for textual user interfaces exist. Windowing systems are not confined to graphical user interfaces.

Perhaps the most well-known such TUI window system is Borland's Turbo Vision for DOS, which was used in several of Borland's own DOS products. Other systems include the one that was used by Microsoft's Visual Basic for DOS, and several other Microsoft products for DOS, including Works and the Exchange Client. Unlike Borland, Microsoft never made its TUI window system public.

In the early 1990s, there were many programming libraries for various programming languages, including C++ and Pascal, implemented for IBM-compatible PCs running MS/PC/DR-DOS, that would display such systems. Their major problem was that the systems were not independently available, and had to be hard-wired directly into the applications themselves. Thus there were both variations in look-and-feel between different TUI applications, and no common UI communications facilities between such applications (such as global clipboard, for example).

These libraries varied in capabilities from simple box-drawing and output-clipping routines to full windowing systems — such as Turbo Vision. Their common features were the use of the box-drawing characters in the (text mode) PC character sets, and a general adherence to IBM's Common User Access guidelines for UIs (such as the [F1] key being a "help" key, for example).

Turbo Vision and its ilk actually provide full TUI windowing systems, with multiple overlapping windows, which "cast shadows" on windows lower in the Z-order. Both Turbo Vision and Microsoft's TUI window system both employ(ed) a menu bar across the top of the screen, Macintosh-style, rather than across the tops of individual windows, which responded to [Alt] key combinations, revealing drop-down menus.

Similarly, in both Borland's and Microsoft's systems windows are drawn with single-line or double-line box drawing characters, and sport titles and widgets for resizing, scrolling, closing, maximizing, and minimizing. Child windows include labels, checkboxes, radio buttons, entryfields, listboxes, scrollbars, buttons, and comboboxes.

Turbo Vision came with Borland C++ for DOS, which included a full printed programming manual and library reference. Turbo Vision was a C++ class library, but was also available in Borland Pascal. Full source code was provided to people who had bought Borland C++. Eventually, Borland donated the source code for Turbo Vision to the public domain.

Various ports of Turbo Vision exist. However, the main problem with porting the library is that DOS Think assumptions are endemic within it. Porting even to OS/2, which at least supports some of the same basic keyboard/mouse/screen API concepts as DOS (albeit accessible directly via a high-level language API rather than via assembly language), is quite difficult. DOS Think assumptions that were hardwired into Turbo Vision included direct access to video RAM, polling for keyboard/mouse I/O, and the assumption of a single-tasking operating system and a single-threaded program. (OS/2 was multi-threaded right from version 1.0, in 1987.)

These TUI window systems are sometimes known as Character-Oriented Window Systems, although that's somewhat of a misnomer. GUI window systems display characters, too. The defining characteristic of these window systems is that they address the display as if it were an array of character cell and attribute pairs — e.g. the PC-compatible VGA/EGA/CGA display adapter in text mode.


© Copyright 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 is preserved.