soc/intel/xeon_sp/util: Enhance lock_pam0123
[coreboot2.git] / payloads / libpayload / curses / PDCurses / HISTORY
blob6dc77097176c388ac43050d817bc2dcacf922e4f
1 PDCurses 3.4 - 2008/09/08
2 =========================
4 Nothing much new this time, but I've been sitting on some bug fixes for
5 almost a year, so it's overdue. Apart from bugs, the main changes are in
6 the documentation.
8 New features:
10 - setsyx() is now a function rather than a macro.
12 Bug fixes and such:
14 - In x11, the xc_atrtab table size was under-calculated by half,
15   resulting in crashes at (oddly) certain line counts. (It should've
16   crashed a lot more.) Reported by Mark Hessling.
18 - Test for moved cursor was omitting the window origin offset. Reported
19   by Carey Evans.
21 - Is DOS and OS/2, the value for max items in key_table was still wrong.
22   Reported by C.E.
24 - Changed isendwin() so it won't crash after delscreen().
26 - Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs().
28 - Disable QuickEdit Mode when enabling mouse input for the Win32
29   console; reported by "Zalapkrakna".
31 - Fix for building under Innotek C (I hope). Report by Elbert Pol, fix
32   courtesy of Paul Smedley.
34 - Unified exports list with no duplicates -- pdcurses.def is now built
35   from components at compile time.
37 - Don't install curspriv.h, and don't include it with binary
38   distributions.
40 - Building DLLs with LCC is no longer supported, due to the primitive
41   nature of its make.exe.
43 - Export the terminfo stub functions from the DLLs, too.
45 - Added support for Apple's ".dylib" in configure. Suggested by Marc
46   Vaillant (who says it's needed with OS 10.5.)
48 - In sdl1/Makefile.mng, ensure that CC is set.
50 - In the gcc makefiles, "$?" didn't really have the desired effect --
51   _all_ the dependencies showed up on the command line, including
52   curses.h, and pdcurses.a twice.  And apparently, this can mess up some
53   old version (?) of MinGW. So, revert to spelling out "tuidemo.o
54   tui.o". Reported by "Howard L."
56 - Extensive documentation revision and reorganizing. More to do here.
57   For example, I moved the build instructions from INSTALL (which never
58   really described installation) to the platform-specific READMEs.
60 - New indentation standard: four spaces, no tabs.
62 ------------------------------------------------------------------------
64 PDCurses 3.3 - 2007/07/11
65 =========================
67 This release adds an SDL backend, refines the demos, and is faster in
68 some cases.
70 New features:
72 - SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details.
74 - Double-buffering -- minimize screen writes by checking, in doupdate()
75   and wnoutrefresh(), whether the changes to curscr are really changes.
76   In most cases, this makes no difference (writes were already limited
77   to areas marked as changed), but it can greatly reduce the overhead
78   from touchwin(). It also helps if you have small, separated updates on
79   the same line.
81 - The PDC_RGB colors can now be used, or not, with any platform (as long
82   as the same options are used when compiling both the library and
83   apps). This may help if you have apps that are hardwired to assume
84   certain definitions.
86 - Restored the use_default_colors() stuff from the ncurses versions of
87   the rain and worm demos, to make them "transparent" (this is useful
88   now, with the SDL port); added transparency to newdemo.
90 - Added setlocale() to tuidemo, to make it easier to browse files with
91   non-ASCII characters.
93 - Sped up firework demo by replacing unneeded clear() and init_pair()
94   calls.
96 - Allow exit from ptest demo by typing 'q'.
98 - New functions for implementors: PDC_pair_content() and PDC_init_pair()
99   (the old pdc_atrtab stuff was arguably the last remnant of code in the
100   pdcurses directory that was based on platform details).
102 Bug fixes and such:
104 - Implicit wrefresh() needs to be called from wgetch() when the window's
105   cursor position is changed, even if there are no other changes.
107 - Set SP->audible on a per-platform basis, as was documented in
108   IMPLEMNT, but not actually being done.
110 - Minor tweaks for efficiency and readability, notably with wscrl().
112 - tuidemo didn't work correctly on monochrome screens when A_COLOR was
113   defined -- the color pair numbers appeared as the corresponding
114   character; also, the input box was (I now realize) broken with ncurses
115   since our 2.7, and broke more subtly with PDCurses' new implicit
116   refresh handling; also, the path to the default file for the Browse
117   function was a bit off.
119 - Assume in the demos that curs_set() is always available -- there's no
120   good test for this, and the existing tests were bogus.
122 - Made the command-line parameter for ptest work. (If given an argument,
123   it delays that number of milliseconds between changes, instead of
124   waiting for a key, and automatically loops five times.)
126 - Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside
127   the platform directory.
129 - Building the X11 port with Cygwin required manually editing the
130   Makefile after configuring; no longer. Reported by Warren W. Gay.
132 - Minor tightening of configure and makefiles.
134 - Bogus references to "ACS_BLCORNER" in the border man page. Reported by
135   "Walrii".
137 - slk_wlabel() was not documented.
139 - Spelling cleanup.
141 - Changed RCSIDs to not end with a semicolon -- avoids warnings when
142   compiling with the -pedantic option.
144 - Merged latin-1.txt into x11.txt.
146 - Updated config.guess and config.sub to more recent versions.
148 ------------------------------------------------------------------------
150 PDCurses 3.2 - 2007/06/06
151 =========================
153 This release mainly covers changes to the build process, along with a
154 few structural changes.
156 New features:
158 - The panel library has been folded into the main library. What this
159   means is that you no longer need to specify "-lpanel" or equivalent
160   when linking programs that use panel functionality with PDCurses;
161   however, panel.lib/.a is still provided (as a copy of pdcurses.lib/.a)
162   so that you can, optionally, build your projects with no changes. It
163   also means that panel functionality is available with the DLL or
164   shared library. Note that panel.h remains separate from curses.h.
166 - Setting the PDCURSES_SRCDIR environment variable is no longer required
167   before building, unless you want to build in a location other than the
168   platform directory. (See INSTALL.)
170 - MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y"
171   option. Partly due to Timofei Shatrov.
173 - Support for the Digital Mars compiler.
175 - Watcom makefiles now use the "loaddll" feature.
177 Bug fixes and such:
179 - Eliminated the platform defines (DOS, WIN32, OS2, XCURSES) from
180   curses.h, except for X11-specific SCREEN elements and functions.
181   Dynamically-linked X11 apps built against an old version will have
182   their red and blue swapped until rebuilt. (You can define PDC_RGB to
183   build the library with the old color scheme, but it would also have to
184   be defined when building any new app.) Any app that depends on
185   PDCurses to determine the platform it's building on will have to make
186   other arrangements.
188 - Documentation cleanup -- added more details; removed some content that
189   didn't apply to PDCurses; moved the doc-building tool to the doc
190   directory; changed *.man to *.txt.
192 - The EMX makefile now accepts "DLL=Y", builds pdcurses.dll instead of
193   curses.dll, builds either the static library or the DLL (not both at
194   once), and links all the demos with the DLL when building it.
196 - In Win32, read the registry only when needed: when init_color() or
197   color_content() is called, instead of at startup.
199 - A few additional consts in declarations.
201 - The Win32 compilers that build DLLs now use common .def files.
203 - panel.h functions sorted by name, as with other .h files; curses.h is
204   no longer included by repeated inclusions of panel.h or term.h.
206 - Simplified Borland makefiles.
208 - Makefile.aix.in depended on a file, xcurses.exp, that was never there.
209   This problem was fixed as part of the change to common .def files;
210   however, I still haven't been able to test building on AIX.
212 ------------------------------------------------------------------------
214 PDCurses 3.1 - 2007/05/03
215 =========================
217 Primarily clipboard-related fixes, and special UTF-8 support.
219 New features:
221 - "Force UTF-8" mode, a compile-time option to force the use of UTF-8
222   for multibyte strings, instead of the system locale. (Mainly for
223   Windows, where UTF-8 doesn't work well in the console.) See INSTALL.
225 - Multibyte string support in PDC_*clipboard() functions, and in Win32's
226   PDC_set_title().
228 - Added the global string "ttytype", per other curses implementations,
229   for compatibility with old BSD curses.
231 - Real functions for the "quasi-standard aliases" -- crmode(),
232   nocrmode(), draino(), resetterm(), fixterm() and saveterm().
233   (Corresponding macros removed.)
235 Bug fixes and such:
237 - In Win32, under NT-family OSes, the scrollback buffer would be
238   restored by endwin(), but would not be turned off again when resuming
239   curses after an endwin(). The result was an odd, partly-scrolled-up
240   display. Now, the buffer is toggled by PDC_reset_prog_mode() and
241   PDC_reset_shell_mode(), so it's properly turned off when returning
242   from an endwin().
244 - In 3.0, selection in X11 didn't work. (Well, the selecting worked, but
245   the pasting elsewhere didn't.) This was due to the attempted fix
246   "don't return selection start as a press event," so that's been
247   reverted for now.
249 - PDC_setclipboard() was locking up in X11. Reported by Mark Hessling.
251 - Missing underscore in the declaration of XC_say() prevented
252   compilation with PDCDEBUG defined.  Reported by M.H.
254 - Off-by-one error in copywin() -- the maximum coordinates for the
255   destination window should be inclusive. Reported by Tiago Dionizio.
257 - Start in echo mode, per X/Open. Reported by T.D.
259 - Strip leading and trailing spaces from slk labels, per a literal
260   reading of X/Open. Suggested by Alexey Miheev (about ncurses, but it
261   also applies here).
263 - The #endif for __PDCURSES__ needs to come _after_ the closing of the
264   extern "C". This has been broken since June 2005. Fortunately (?), it
265   only shows up if the file is included multiple times, and then only in
266   C++. Reported on the DOSBox forums.
268 - Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the
269   clipboard functions in Win32, to match the console.
271 - Changed the format of the string returned from longname().
273 - In the clipboard test in the testcurs demo, use a single mvprintw() to
274   display the return from PDC_getclipboard(), instead of a loop of
275   addch(), which was incompatible with multibyte strings.
277 - Moved has_key() into the keyname module, and documented it.
279 - Moved RIPPEDOFFLINE to curspriv.h.
281 - Typos in IMPLEMNT.
283 ------------------------------------------------------------------------
285 PDCurses 3.0 - 2007/04/01
286 =========================
288 The focuses for this release are X/Open conformance, i18n, better color
289 support, cleaner code, and more consistency across platforms.
291 This is only a brief summary of the changes. For more details, consult
292 the CVS log.
294 New features:
296 - An almost complete implementation of X/Open curses, including the
297   wide-character and attr_t functions (but excluding terminfo). The
298   wide-character functions work only in Win32 and X11, for now, and
299   require building the library with the appropriate options (see
300   INSTALL). Note that this is a simplistic implementation, with exactly
301   one wchar_t per cchar_t; the only characters it handles properly are
302   those that are one column wide.
304 - Support for X Input Methods in the X11 port (see INSTALL). When built
305   this way, the internal compose key support is disabled in favor of
306   XIM's, which is a lot more complete, although you lose the box cursor.
308 - Multibyte character support in the non-wide string handling functions,
309   per X/Open. This only works when the library is built with wide-
310   character support enabled.
312 - Mouse support for DOS and OS/2. The DOS version includes untested
313   support for scroll wheels, via the "CuteMouse" driver.
315 - An ncurses-compatible mouse interface, which can work in parallel with
316   the traditional PDCurses mouse interface. See the man page (or
317   mouse.c) for details.
319 - DOS and OS/2 can now return modifiers as keys, as in Win32 and X11.
321 - COLORS, which had been fixed at 8, is now either 8 or 16, depending on
322   the terminal -- usually 16. When it's 8, blinking mode is enabled
323   (controlled as before by the A_BLINK attribute); when it's 16, bright
324   background colors are used instead. On platforms where it can be
325   changed, the mode is toggled by the new function PDC_set_blink().
326   PDCurses tries to set PDC_set_blink(FALSE) at startup. (In Win32, it's
327   always set to FALSE; in DOS, with other than an EGA or VGA card, it
328   can't be.) Also, COLORS is now set to 0 until start_color() is called.
330 - Corresponding to the change in COLORS, COLOR_PAIRS is now 256.
332 - Working init_color() and color_content(). The OS/2 version of
333   init_color() works only in a full-screen session; the Win32 version
334   works only in windowed mode, and only in NT-family OSes; the DOS
335   version works only with VGA adapters (real or simulated). The Win32
336   version is based mostly on James Brown's setconsoleinfo.c
337   (www.catch22.net).
339 - use_default_colors(), assume_default_colors(), and curses_version(),
340   after ncurses.
342 - Added global int TABSIZE, after ncurses and Solaris curses; removed
343   window-specific _tabsize.
345 - Logical extension to the wide-character slk_ funcs: slk_wlabel(), for
346   retrieving the label as a wide-character string.
348 - A non-macro implementation of ncurses' wresize().
350 - Working putwin(), getwin(), scr_dump() and scr_restore().
352 - A working acs_map[]. Characters from the ACS are now stored in window
353   structures as a regular character plus the A_ALTCHARSET attribute, and
354   rendered to the ACS only when displayed. (This allows, for example,
355   the correct display on one platform of windows saved from another.)
357 - In X11, allow selection and paste of UTF8_STRING.
359 - The testcurs demo now includes a color chart and init_color() test, a
360   wide character input test, a display of wide ACS characters with
361   sample Unicode text, a specific test of flash(), more info in the
362   resize test, and attempts to change the width as well as the height.
364 - Command-line option for MSVC to build DLLs (see INSTALL). Also, the
365   naming distinction for DLLs ("curses" vs. "pdcurses") is abandoned,
366   and either the static lib or DLL is built, not both at once (except
367   for X11).
369 - For backwards compatibility, a special module just for deprecated
370   functions -- currently PDC_check_bios_key(), PDC_get_bios_key(),
371   PDC_get_ctrl_break() and PDC_set_ctrl_break(). These shouldn't be used
372   in applications, but currently are... in fact, all the "private"
373   functions (in curspriv.h) are subject to change and should be avoided.
375 - A new document, IMPLEMNT, describing PDCurses' internal functions for
376   those wishing to port it to new platforms.
378 - Mark Hessling has released the X11 port to the public domain.
379   (However, x11/ScrollBox* retain their separate copyright and MIT-like
380   license.)
382 Bug fixes and such:
384 - Most of the macros have been removed (along with the NOMACROS ifdef).
385   The only remaining ones are those which have to be macros to work, and
386   those that are required by X/Open to be macros. There were numerous
387   problems with the macros, and no apparent reason to keep them, except
388   tradition -- although it was PCcurses 1.x that first omitted them.
390 - Clean separation of platform-specific code from the rest. Outside of
391   the platform directories, there remain only a few ifdefs in curses.h
392   and curspriv.h.
394 - General reorganization and simplification.
396 - Documentation revisions.
398 - When expanding control characters in addch() or insch(), retain the
399   attributes from the chtype.
401 - Preserve the A_ALTCHARSET attribute in addch() and insch().
403 - Per X/Open, beep() should always return OK.
405 - On platforms with a controlling terminal (i.e., not X11), curs_set(1)
406   now sets the cursor to the shape it had at the time of initscr(),
407   rather than always making it small. (Exception for DOS: If the video
408   mode has been changed by PDC_resize_screen(), curs_set(1) reverts to
409   line 6/7.) The shape is taken from SP->orig_cursor (the meaning of
410   which is platform-specific).
412 - Stop updating the cursor position when the cursor is invisible (this
413   gives a huge performance boost in Win 9x); update the cursor position
414   from curs_set() if changing from invisible to visible.
416 - Some tweaking of the behavior of def_prog_mode(), def_shell_mode(),
417   savetty(), reset_prog_mode(), reset_shell_mode() and resetty()...
418   still not quite right.
420 - flash() was not implemented for Win32 or X. A portable implementation
421   is now used for all platforms. Note that it's much slower than the
422   old (DOS and OS/2) version, but this is only apparent on an extremely
423   slow machine, such as an XT.
425 - In getstr(), backspacing on high-bit characters caused a double
426   backspace.
428 - hline() and vline() used an incorrect (off by one) interpretation of
429   _maxx and _maxy. If values of n greater than the max were specified,
430   these functions could access unallocated memory.
432 - innstr() is supposed to return the number of characters read, not just
433   OK or ERR. Reported by Mike Aubury.
435 - A proper implementation of insch() -- the PDC_chadd()-based version
436   wasn't handling the control characters correctly.
438 - Return ASCII and control key names from keyname() (problem revealed by
439   ncurses' movewindow test); also, per X/Open, return "UNKNOWN KEY" when
440   appropriate, rather than "NO KEY NAME".
442 - Turn off the cursor from leaveok(TRUE), even in X11; leaveok(FALSE)
443   now calls curs_set(1), regardless of the previous state of the cursor.
445 - In the slk area, BUTTON_CLICKED events now translate to function keys,
446   along with the previously recognized BUTTON_PRESSED events. Of course,
447   it should really be checking the events specified by map_button(),
448   which still doesn't work.
450 - napms(0) now returns immediately.
452 - A unified napms() implementation for DOS -- no longer throttles the
453   CPU when built with any compiler.
455 - Allow backspace editing of the nocbreak() buffer.
457 - pair_content(0, ...) is valid.
459 - There was no check to ensure that the pnoutrefresh() window fit within
460   the screen. It now returns an ERR if it doesn't.
462 - In X11, resize_term() must be called with parameters (0, 0), and only
463   when SP->resized is set, else it returns ERR.
465 - Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's
466   web site.
468 - slk_clear() now removes the buttons completely, as in ncurses.
470 - Use the current foreground color for the line attributes (underline,
471   left, right), unless PDC_set_line_color() is explicitly called. After
472   setting the line color, you can reset it to this mode via
473   "PDC_set_line_color(-1)".
475 - Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER().
477 - Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch()
478   are now (again) the core functions.
480 - Dropped or made static many obsolete, unused, and/or broken functions,
481   including PDC_chg_attrs(), PDC_cursor_on() and _off(),
482   PDC_fix_cursor(), PDC_get_attribute(), PDC_get_cur_col() and _row(),
483   PDC_set_80x25(), PDC_set_cursor_mode(), PDC_set_rows(),
484   PDC_wunderline(), PDC_wleftline(), PDC_wrightline(),
485   XCursesModifierPress() and XCurses_refresh_scrollbar().
487 - Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR
488   _ENDLINE, _FULLWIN and _SCROLLWIN.
490 - Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*,
491   _lasts*.
493 - Obsolete/unused elements of the SCREEN struct: orgcbr, visible_cursor,
494   sizeable, shell, blank, cursor, orig_emulation, font, orig_font,
495   tahead, adapter, scrnmode, kbdinfo, direct_video, video_page,
496   video_seg, video_ofs, bogus_adapter. (Some of these persist outside
497   the SCREEN struct, in the platform directories.) Added mouse_wait and
498   key_code.
500 - Removed all the EMALLOC stuff. Straight malloc calls were used
501   elsewhere; it was undocumented outside of comments in curspriv.h; and
502   there are better ways to use a substitute malloc().
504 - Single mouse clicks are now reportable on all platforms (not just
505   double-clicks). And in general, mouse event reporting is more
506   consistent across platforms.
508 - The mouse cursor no longer appears in full-screen mode in Win32 unless
509   a nonzero mouse event mask is used.
511 - ALT-keypad input now works in Win32.
513 - In Win32, SetConsoleMode(ENABLE_WINDOW_INPUT) is not useful, and
514   appears to be the source of a four-year-old bug report (hanging in
515   THE) by Phil Smith.
517 - Removed the PDC_THREAD_BUILD stuff, which has never worked. For the
518   record: PDCurses is not thread-safe. Neither is ncurses; and the
519   X/Open curses spec explicitly makes it a non-requirement.
521 - With the internal compose key system in the X11 port, modifier keys
522   were breaking out of the compose state, making it impossible to type
523   accented capitals, etc. Also, Multi_key is now the default compose
524   key, instead of leaving it undefined by default; and a few more combos
525   are supported.
527 - In X11, the first reported mouse event after startup always read as a
528   double-click at position 0, 0. (This bug was introduced in 2.8.)
530 - In X11, don't return selection start as a press event. (Shift-click on
531   button 1 is still returned.)
533 - In X11, properly handle pasting of high-bit chars. (It was doing an
534   unwanted sign extension.)
536 - In X11, BUTTON_MOVED was never returned, although PDC_MOUSE_MOVED was
537   set.
539 - The fix in 2.8 for the scroll wheel in X11 wasn't very good -- it did
540   report the events as scroll wheel events, but it doubled them. Here's
541   a proper fix.
543 - Changed mouse handling in X11: Simpler translation table, with
544   XCursesPasteSelection() called from XCursesButton() instead of the
545   translation table; require shift with button 1 or 2 for select or
546   paste when mouse events are being reported (as with ncurses), allowing
547   passthrough of simple button 2 events. This fixes the previously
548   unreliable button 2 behavior.
550 - Modifier keys are now returned on key up in X11, as in Win32. And in
551   general, modifier key reporting is more consistent across platforms.
553 - Modifiers are not returned as keys when a mouse click has occurred
554   since the key press.
556 - In BIOS mode (in DOS), count successive identical output bytes, and
557   make only one BIOS call for all of them. This dramatically improves
558   performance.
560 - The cursor position was not always updated correctly in BIOS mode.
562 - In testcurs, the way the ACS test was written, it would really only
563   work with a) PDCurses (with any compiler), or b) gcc (with any
564   curses). Here's a more portable implementation.
566 - Better reporting of mouse events in testcurs.
568 - Blank out buffer and num before the scanw() test in testcurs, in case
569   the user just hits enter or etc.; clear the screen after resizing.
571 - Allow tuidemo to use the last line.
573 - Separate left/right modifier keys are now reported properly in Win32.
574   (Everything was being reported as _R.)
576 - Attempts to redirect input in Win32 now cause program exit and an
577   error message, instead of hanging.
579 - Dropped support for the Microway NDP compiler.
581 - Some modules renamed, rearranged.
583 - Fixes for errors and warnings when building with Visual C++ 2005.
585 - In MSVC, the panel library didn't work with the DLL.
587 - Complete export lists for DLLs.
589 - Simplified makefiles; moved common elements to .mif files; better
590   optimization; strip demos when possible.
592 - Changed makefile targets of "pdcurses.a/lib" and "panel.a/lib" to
593   $(LIBCURSES) and $(LIBPANEL). Suggestion of Doug Kaufman.
595 - Changed "install" target in the makefile to a double-colon rule, to
596   get around a conflict with INSTALL on non-case-sensitive filesystems,
597   such as Mac OS X's HFS+. Reported by Douglas Godfrey et al.
599 - Make PDCurses.man dependent on manext. Suggestion of Tiziano Mueller.
601 - Set up configure.ac so autoheader works; removed some obsolescent
602   macros. Partly the suggestion of T.M.
604 - The X11 port now builds in the x11 directory (including the demos), as
605   with other ports.
607 - The X11 port should now build on more 64-bit systems. Partly due to
608   M.H.
610 - The default window title and icons for the X11 port are now "PDCurses"
611   instead of "XCurses".
613 - Internal functions and variables made static where possible.
615 - Adopted a somewhat more consistent naming style: Internal functions
616   with external linkage, and only those, have the prefix "PDC_";
617   external variables that aren't part of the API use "pdc_"; static
618   functions use "_"; and "XC_" and "xc_" prefixes are used for functions
619   and variables, respectively, that are shared between both processes in
620   the X11 port. Also eliminated camel casing, where possible.
622 - Changed the encoding for non-ASCII characters in comments and
623   documentation from Latin-1 to UTF-8.
625 ------------------------------------------------------------------------
627 PDCurses 2.8 - 2006/04/01
628 =========================
630 As with the previous version, you should assume that apps linked against
631 older dynamic versions of the library won't work with this one until
632 recompiled.
634 New features:
636 - Simpler, faster.
638 - Declarations for all supported, standard functions, per the X/Open
639   Curses 4.2 spec, with the notable exception of getch() and ungetch().
640   You can disable the use of the macro versions by defining NOMACROS
641   before including curses.h (see xmas.c for an example). NOMACROS yields
642   smaller but theoretically slower executables.
644 - New functions: vwprintw(), vwscanw(), vw_printw() and vw_scanw(). This
645   completes the list of X/Open 4.2 functions, except for those concerned
646   with attr_t and wide characters. Some (especially the terminfo/termcap
647   functions) aren't yet fully fleshed out, though.
649 - Non-macro implementations for COLOR_PAIR(), PAIR_NUMBER(), getbkgd(),
650   mvgetnstr(), mvwgetnstr(), mvhline(), mvvline(), mvwhline(), and
651   mvwvline(). (The macros are still available, too.)
653 - newterm() works now, in a limited way -- the parameters are ignored,
654   and only the first invocation will work (i.e., only one SCREEN can be
655   used).
657 - start_color() works now -- which is to say, if you _don't_ call it,
658   you'll only get monochrome output. Also, without calling it, the
659   terminal's default colors will be used, where supported (currently
660   only in Win32). This is equivalent to the PDC_ORIGINAL_COLORS behavior
661   introduced in 2.7, except that _only_ the default colors will be used.
662   (PDC_ORIGINAL_COLORS is still available, if you want to combine the
663   use of specific colors and the default colors.)
665 - New logic for termname() and longname(): termname() always returns
666   "pdcurses"; longname() returns "PDCurses for [platform] [adapter]
667   [COLOR/MONO]-YxX" (adapter is only defined for DOS and OS/2). This is
668   the first time these functions return _anything_ in Win32.
670 - New installation method for XCurses: the header files are placed in a
671   subdirectory "xcurses" within the include directory, rather than being
672   renamed. (But the renamed xcurses.h and xpanel.h are also installed,
673   for backwards compatibility.) curspriv.h and term.h are now available,
674   and existing curses-based code need no longer be edited to use
675   XCurses' curses.h. And with no more need for explicit XCursesExit()
676   calls (see below), your code need not be changed at all to move from
677   another curses implementation to XCurses. It can be as simple as "gcc
678   -I/usr/local/include/xcurses -lXCurses -oprogname progname.c".
680 - Combined readme.* into this HISTORY file, and incorporated the old 1.x
681   (PCcurses) history.
683 - New functionality for the testcurs demo: ACS character display; menu
684   support for PgUp, PgDn, Home and End; centered menu; and it can now
685   be resized in X.
687 - Added modified versions of the rain and worm demos from ncurses.
689 Bug fixes and such:
691 - Big cleanup of dead and redundant code, including unneeded defines,
692   ifdefs, and structure elements.
694 - flushinp() was not implemented for Win32.
696 - resetty() was not restoring LINES and COLS.
698 - nonl() made '\n' print a line feed without carriage return. This was
699   incorrect.
701 - Removed bogus implementation of intrflush().
703 - The line-breakout optimization system, disabled by default in 2.7, is
704   removed in 2.8. It simply didn't work, and never has. (The typeahead()
705   function remains, for compatibility, but does nothing.)
707 - The declarations for the printw() and scanw() function families were
708   erroneously ifdef'd.
710 - Safer printw() calls on platforms that support vsnprintf().
712 - Use the native vsscanf() in DJGPP, MinGW and Cygwin.
714 - ACS_BLOCK now works in X.
716 - Explicit calls to XCursesExit() are no longer needed.
718 - XCURSES is now defined automatically if not DOS, OS2 or WIN32.
720 - The default icon for XCurses wasn't working (had to remove the focus
721   hint code to fix this). Also, the default title is now "XCurses"
722   instead of "main".
724 - Incorrect dimensions (undercounting by two in each direction) were
725   shown while resizing in X.
727 - Scroll wheel events were not always correctly reported in X.
729 - 32 bits are enough for the "long" chtype, but 64 bits were used on a
730   64-bit system, wasting memory. Now conditioned on _LP64. This could be
731   faster, too.
733 - The short, 16-bit chtype now works with XCurses.
735 - Corrected return value for is_linetouched(), is_wintouched(),
736   can_change_color() and isendwin() (bool instead of int).
738 - timeout(), wtimeout(), idcok() and immedok() return void.
740 - pair_content() takes a short.
742 - Replaced incorrect usages of attr_t with chtype. attr_t is still
743   typedef'd, for backwards compatibility. (It's supposed to be used for
744   the WA_*-style functions, which PDCurses doesn't yet support.)
746 - Added const where required by the spec, and in other appropriate
747   places.
749 - Removed PDC_usleep(). napms() is now the core delay routine.
751 - Fixed poll() support in napms().
753 - Various changes to the internal PDC_* functions -- don't depend on
754   these, and don't use them unless you absolutely have to.
756 - Some routines accessed window structures in their variable
757   declarations, _before_ checking for a NULL window pointer.
759 - Dropped support for the undocumented PDC_FULL_DISPLAY, wtitle(), and
760   PDC_print().
762 - Cleaned up remaining warnings.
764 - Reduced unnecessary #include directives -- speeds up compilation.
766 - Fix for demos build in Borland/DOS -- the makefile in 2.7 didn't
767   specify the memory model. Reported by Erwin Waterlander.
769 - Simplified the makefiles; e.g., some now build each demo in a single
770   step, and Watcom no longer uses demos.lnk. Also, the demo exes are now
771   stripped when possible; maximum compression used for archives built
772   by the makefiles; xcurses-config removed as part of "make distclean";
773   and I tweaked optimization for some platforms.
775 - Reverted to /usr/local/ as default installation directory for XCurses.
777 - Upgraded to autoconf 2.59... instantly doubling the size of the
778   configure script. Ah well. Otherwise, simplified the build system.
780 - Dropped support for pre-ANSI compilers. (It hasn't worked since at
781   least version 2.4, anyway.)
783 - Revised and, I hope, clarified the boilerplate and other comments.
785 - Simplified logging and RCS ids; added RCS ids where missing.
787 - Consistent formatting for all code, approximately equivalent to
788   "indent -kr -i8 -bl -bli0", with adjustments for 80 columns.
790 ------------------------------------------------------------------------
792 PDCurses 2.7 - 2005/12/30
793 =========================
795 INTRODUCTION:
797  Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses.
798  Here's a brief summary of changes in this release. (More details are
799  available in the CVS log and trackers on SourceForge.)
801 NEW FEATURES:
803 - Functions: delscreen(), getattrs(), has_key(), slk_color(),
804   wcolor_set(), wtimeout().
806 - Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(),
807   mvwvline(), timeout(), wresize().
809 - Stub implementations of terminfo functions (including a term.h).
811 - More stubs for compatibility: filter(), getwin(), putwin(),
812   noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(),
813   scr_set(), use_env(), vidattr(), vidputs().
815 - The terminal's default colors are used as curses' default colors when
816   the environment variable "PDC_ORIGINAL_COLORS" is set to any value
817   (Win32 only at the moment).
819 - Simplified build system.
821 - Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak
822   files for more info).
824 - Minimal implementation of color_content() -- no longer a stub.
826 - Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for
827   DOS/OS2/Win; "enhanced" versions of existing ACS characters used.
829 - Support for scroll wheels.
831 - Support for Pacific C.
833 BUGS FIXED:
835 - Builds correctly (including demos) on all tested platforms (see
836   below); nearly all compiler warnings have been cleaned up; the ptest
837   demo is built on all platforms; "clean" targets are improved.
839 - The ability to build ncurses_tests has been restored (see demos dir).
841 - Line-breakout optimization now defaults to off (equivalent to
842   "typeahead(-1)"), so output is not interrupted by keystrokes (it's
843   supposed to resume on the next refresh(), which wasn't working).
845 - Implicit wrefresh() in wgetch() was not being invoked in nodelay mode.
847 - subpad() was erroneously offsetting from the origin coordinates of the
848   parent pad (which are always -1,-1).
850 - In wborder(), whline(), and wvline(), the current (wattrset) attribute
851   was being used, but not the current background (wbkgd).
853 - Allow Russian 'r' character ASCII 0xe0 to be returned.
855 - termattrs() now also returns A_UNDERLINE, A_REVERSE.
857 - In Win32, with large scrollback buffers set, there was an unwanted
858   "scrollup" effect on startup.
860 - Revamped keyboard handling for Win32.
862 - New screen resize method for Win32.
864 - napms(), delay_output(), etc. now work with Cygwin.
866 - curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode --
867   the cursor stayed on.
869 - The A_REVERSE attribute was broken in XCurses.
871 - On 64-bit systems, XCurses was ignoring every other keystroke.
873 - Added focus hints for XCurses.
875 - Demos (except for tuidemo) once again have their proper titles in
876   XCurses (using Xinitscr() instead of the obsolete XCursesProgramName).
878 - The 16-bit chtype is a working option again (by removing #define
879   CHTYPE_LONG from curses.h), except in XCurses. It's not recommended;
880   but if your needs are limited, it still works.
882 - Reset screen size in resetty() under DOS, as in Win32 and OS/2.
884 - Changes for cursor size under DOS.
886 - Automatic setting of BIOS mode for CGA under DOS now works.
888 - The cursor is now always updated in PDC_gotoxy(); this fixes the
889   problem of missing characters in BIOS mode.
891 - Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(),
892   nl() and nonl() now return OK.
894 - ERR and OK are now defined as -1 and 0, respectively, for
895   compatibility with other curses implementations -- note that this
896   change is not binary compatible; you'll have to rebuild programs that
897   use shared/dynamic libraries.
899 - Added "const" to prototypes where appropriate.
901 - Miscellaneous code cleanup.
903 ACKNOWLEDGEMENTS:
905  Walter Briscoe
906  Jean-Pierre Demailly
907  Ruslan Fedyarov
908  Warren Gay
909  Florian Grosse-Coosmann
910  Vladimir Kokovic
911  Matt Maloy
912  K.H. Man
913  Michael Ryazanov
914  Ron Thibodeau
915  Alexandr Zamaraev
917  and of course, MARK HESSLING, for his over 13 years of service as the
918  maintainer of PDCurses. Plus, thanks to all who've reported bugs or
919  requested features. Apologies to anyone I've forgotten.
921  I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS;
922  DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2;
923  EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows;
924  recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++;
925  and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris.
927 -- William McBrine
929 ------------------------------------------------------------------------
931 PDCurses 2.6 - 2003/01/08
932 =========================
934 INTRODUCTION:
936  This release of PDCurses includes the following changes:
938 BUGS FIXED:
940 - Allow accented characters on Win32 platform when run on non-English
941   keyboards.
943 - Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned.
945 - Some bugs with halfdelay() fixed by William McBrine.
947 - pechochar() should now work correctly.
949 - redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi
951 - Don't include "special" characters like KEY_SHIFT_L to be returned in
952   getnstr() family. Bug 542913
954 - Entering TAB in wgetnstr() no longer exceeds requested buffer size.
955   Bug 489233
957 - Fixed bug 550066, scrollok() and pads.
958   Also beep() called when buffer exceeded. Bug 562041.
960 - Reverse video of X11 selection reinstated. Pablo Garcia Abio??
962 - Right Alt modifier now works like left Alt modifier under Win32
964 - Add support for all libXaw replacement libraries with Scrollbar bug.
965   Note that for this to work, you still have to change the libXaw
966   replacement libraries to fix the bug :-(
968 - Don't trap signals in XCurses if calling application has ignored them.
969   Change by Frank Heckenbach.
971 - Bug reports from Warren W. Gay:
972   - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms.
973   - Fix definition of getsyx() and setsyx() to be consistent with
974     ncurses. Bug 624424.
975   - Fix definition of echo() and noecho(). Bug 625001.
976   - Fix definition of keypad() and leaveok(). Bug 632653.
977   - Missing panel_hidden() prototype. Bug 649320.
979 - Fixed bug with calling def_prog_mode(), resize_term(),
980   reset_prog_mode(); the resize details were being lost.
982 NEW FEATURES:
984 - Clipboard support now available on DOS platform, but handled
985   internally to the currently running process.
987 - New X11 resource: textCursor, allows the text cursor to be specified
988   as a vertical bar, or the standard horizontal bar. Thanks to Frank
989   Heckenbach for the suggestion.
991 NEW COMPILER SUPPORT:
993 - lcc-win32 now works correctly
995 ------------------------------------------------------------------------
997 PDCurses 2.5 - 2001/11/26
998 =========================
1000 INTRODUCTION:
1002  This release of PDCurses includes the following changes:
1004 - Set BASE address for Win32 DLL
1006 - Add KEY_SUP and KEY_SDOWN.
1008 - Add PDC_set_line_color()
1010 - Add blink support as bold background
1012 - Add bold colors
1014 - Add getbkgd() macro
1016 - Add new PDC functions for adding underline, overline, leftline and
1017   rightline
1019 - Add support for shifted keypad keys.
1021 - Allow more keypad keys to work under Win32
1023 - Change Win32 and OS/2 DLL name to curses.dll
1025 - Change example resources to allow overriding from the command line
1027 - Changes for building cleanly on OS/2
1029 - Changes to handle building XCurses under AIX
1031 - Check if prefresh() and pnoutrefresh() parameters are valid.
1033 - Ensure build/install works from any directory
1035 - Handle platforms where X11 headers do not typedef XPointer.
1037 - Mention that Flexos is likely out-of-date.
1039 - Pass delaytenths to XCurses_rawgetch()
1041 - Remove boldFont
1043 - Updates for cursor blinking and italic.
1045 BUGS FIXED:
1047 - Fix bug with getting Win32 clipboard contents. Added new
1048   PDC_freeclipboard() function.
1050 - Fix bug with halfdelay()
1052 - Fix bug with mouse interrupting programs that are not trapping mouse
1053   events under Win32.
1055 - Fix return value from curs_set()
1057 - Reverse the left and right pointing bars in ALT_CHARSET
1059 NEW COMPILER SUPPORT:
1061 - Add QNX-RTP port
1063 ------------------------------------------------------------------------
1065 PDCurses 2.4 - 2000/01/17
1066 =========================
1068 INTRODUCTION:
1070  This release of PDCurses includes the following changes:
1072 - full support of X11 selection handling
1074 - removed the need for the cursos2.h file
1076 - enabled the "shifted" key on the numeric keypad
1078 - added native clipboard support for X11, Win32 and OS/2
1080 - added extra functions for obtaining internal PDCurses status
1082 - added clipboard and key modifier tests in testcurs.c
1084 - fixes for panel library
1086 - key modifiers pressed by themselves are now returned as keys:
1087   KEY_SHIFT_L KEY_SHIFT_R KEY_CONTROL_L KEY_CONTROL_R KEY_ALT_L KEY_ALT_R
1088   This works on Win32 and X11 ports only
1090 - Added X11 shared library support
1092 - Added extra slk formats supported by ncurses
1094 - Fixed bug with resizing the terminal when slk were on.
1096 - Changed behavior of slk_attrset(), slk_attron() slk_attroff()
1097   functions to work more like ncurses.
1099 BUGS FIXED:
1101 - some minor bug and portability fixes were included in this release
1103 NEW FUNCTIONS:
1105 - PDC_getclipboard() and PDC_setclipboard() for accessing the native
1106   clipboard (X11, Win32 and OS/2)
1108 - PDC_set_title() for setting the title of the window (X11 and Win32
1109   only)
1111 - PDC_get_input_fd() for getting the file handle of the PDCurses input
1113 - PDC_get_key_modifiers() for getting the keyboard modifier settings at
1114   the time of the last (w)getch()
1116 - Xinitscr() (only for X11 port) which allows standard X11 switches to
1117   be passed to the application
1119 NEW COMPILER SUPPORT:
1121 - MingW32 GNU compiler under Win95/NT
1123 - Cygnus Win32 GNU compiler under Win95/NT
1125 - Borland C++ for OS/2 1.0+
1127 - lcc-win32 compiler under Win95/NT
1129 ACKNOWLEDGEMENTS: (for this release)
1131  Georg Fuchs for various changes.
1132  Juan David Palomar for pointing out getnstr() was not implemented.
1133  William McBrine for fix to allow black/black as valid color pair.
1134  Peter Preus for pointing out the missing bccos2.mak file.
1135  Laura Michaels for a couple of bug fixes and changes required to
1136  support Mingw32 compiler.
1137  Frank Heckenbach for PDC_get_input_fd() and some portability fixes and
1138  the fixes for panel library.
1139  Matthias Burian for the lcc-win32 compiler support.
1141 ------------------------------------------------------------------------
1143 PDCurses 2.3 - 1998/07/09
1144 =========================
1146 INTRODUCTION:
1148  This release of PDCurses includes the following changes:
1150 - added more System V R4 functions
1152 - added Win32 port
1154 - the X11 port is now fully functional
1156 - the MS Visual C++ Win32 port now includes a DLL
1158 - both the X11 and Win32 ports support the mouse
1160 - the slk..() functions are now functional
1162 - support for scrollbars under X11 are experimental at this stage
1164 - long chtype extended to non-Unix ports
1166  The name of the statically built library is pdcurses.lib (or
1167  pdcurses.a). The name of the DLL import library (where applicable) is
1168  curses.lib.
1170 BUGS FIXED:
1172 - some minor bugs were corrected in this release
1174 NEW FUNCTIONS:
1176 - slk..() functions
1178 NEW COMPILER SUPPORT:
1180 - MS Visual C++ under Win95/NT
1182 - Watcom C++ under OS/2, Win32 and DOS
1184 - two EMX ports have been provided:
1185   - OS/2 only using OS/2 APIs
1186   - OS/2 and DOS using EMX video support routines
1188 EXTRA OPTIONS:
1190  PDCurses recognizes two environment variables which determines the
1191  initialization and finalization behavior.  These environment variables
1192  do not apply to the X11 port.
1194  PDC_PRESERVE_SCREEN
1195  If this environment variable is set, PDCurses will not clear the screen
1196  to the default white on black on startup.  This allows you to overlay
1197  a window over the top of the existing screen background.
1199  PDC_RESTORE_SCREEN
1200  If this environment variable is set, PDCurses will take a copy of the
1201  contents of the screen at the time that PDCurses is started; initscr(),
1202  and when endwin() is called, the screen will be restored.
1205 ACKNOWLEDGEMENTS: (for this release)
1207  Chris Szurgot for original Win32 port.
1208  Gurusamy Sarathy for some updates to the Win32 port.
1209  Kim Huron for the slk..() functions.
1210  Florian Grosse Coosmann for some bug fixes.
1211  Esa Peuha for reducing compiler warnings.
1212  Augustin Martin Domingo for patches to X11 port to enable accented
1213  characters.
1215 ------------------------------------------------------------------------
1217 PDCurses 2.2 - 1995/02/12
1218 =========================
1220 INTRODUCTION:
1222  This release of PDCurses has includes a number of major changes:
1224 - The portable library functions are now grouped together into single
1225   files with the same arrangement as System V R4 curses.
1227 - A panels library has been included. This panels library was written by
1228   Warren Tucker.
1230 - Quite a few more functions have been supplied by Wade Schauer and
1231   incorporated into release 2.2. Wade also supplied the support for the
1232   Microway NDP C/C++ 32 bit DOS compiler.
1234 - The curses datatype has been changed from an unsigned int to a long.
1235   This allows more attributes to be stored as well as increasing the
1236   number of color-pairs from 32 to 64.
1238 - Xwindows port (experimental at the moment).
1240 BUGS FIXED:
1242 - mvwin() checked the wrong coordinates
1244 - removed DESQview shadow memory buffer checking bug in curses.h in
1245   #define for wstandout()
1247 - lots of others I can't remember
1249 NEW FUNCTIONS:
1251 - Too many to mention. See intro.man for a complete list of the
1252   functions PDCurses now supports.
1254 COMPILER SUPPORT:
1256 - DJGPP 1.12 is now supported. The run-time error that caused programs
1257   to crash has been removed.
1259 - emx 0.9a is supported. A program compiled for OS/2 should also work
1260   under DOS if you use the VID=EMX switch when compiling. See the
1261   makefile for details.
1263 - The Microway NDP C/C++ DOS compiler is now supported. Thanks to Wade
1264   Schauer for this port.
1266 - The Watcom C++ 10.0 DOS compiler is now supported. Thanks to Pieter
1267   Kunst for this port.
1269 - The library now has many functions grouped together to reduce the size
1270   of the library and to improve the speed of compilation.
1272 - The "names" of a couple of the compilers in the makefile has changed;
1273   CSET2 is now ICC and GO32 is now GCC.
1275 EXTRA OPTIONS:
1277  One difference between the behavior of PDCurses and Unix curses is the
1278  attributes that are displayed when a character is cleared. Under Unix
1279  curses, no attributes are displayed, so the result is always black.
1280  Under PDCurses, these functions clear with the current attributes in
1281  effect at the time. With the introduction of the bkgd functions, by
1282  default, PDCurses clears using the value set by (w)bkgd(). To have
1283  PDCurses behave the same way as it did before release 2.2, compile with
1284  -DPDCURSES_WCLR
1286 ACKNOWLEDGEMENTS: (for this release)
1288  Pieter Kunst, David Nugent, Warren Tucker, Darin Haugen, Stefan Strack,
1289  Wade Schauer and others who either alerted me to bugs or supplied
1290  fixes.
1292 ------------------------------------------------------------------------
1294 PDCurses 2.1 - 1993/06/20
1295 =========================
1297 INTRODUCTION:
1299  The current code contains bug fixes for the DOS and OS/2 releases and
1300  also includes an alpha release for Unix. The Unix release uses another
1301  public domain package (mytinfo) to handle the low-level screen writes.
1302  mytinfo was posted to comp.sources.unix (or misc) in December 1992 or
1303  January 1993. Unless you are a glutton for punishment I would recommend
1304  you avoid the Unix port at this stage.
1306  The other major addition to PDCurses is the support for DJGPP (the DOS
1307  port of GNU C++). Thanks to David Nugent <davidn@csource.oz.au>.
1309  Other additions are copywin() function, function debugging support and
1310  getting the small and medium memory models to work. The testcurs.c demo
1311  program has also been changed significantly and a new demo program,
1312  tuidemo, has been added.
1314  Some people have suggested including information on where to get dmake
1315  from. oak.oakland.edu in /pub/msdos/c
1317 OTHER NOTES:
1319  Under DOS, by default, screen writes to a CGA monitor are done via the
1320  video BIOS rather than by direct video memory writes. This is due to
1321  the CGA "snow" problem. If you have a CGA monitor and do not suffer
1322  from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
1323  This will then use cause PDCurses to write directly to the CGA video
1324  memory.
1326  Function debugging: Firstly to get function debugging, you have to
1327  compile the library with OPT=N in the makefile. This also turns on
1328  compiler debugging. You can control when you want PDCurses to write to
1329  the debug file (called trace in the current directory) by using the
1330  functions traceon() and traceoff() in your program.
1332  Microsoft C 6.00 Users note:
1333  ----------------------------
1335  With the addition of several new functions, using dmake to compile
1336  PDCurses now causes the compiler to run "out of heap space in pass 2".
1337  Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes this
1338  problem; hence the -EM switch.
1340  Functional changes
1341  ------------------
1343  Added OS/2 DLL support.
1345  A few curses functions have been fixed to exhibit their correct
1346  behavior and make them more functionally portable with System V
1347  curses. The functions that have changed are overlay(), overwrite() and
1348  typeahead.
1350  overlay() and overwrite()
1352  Both of theses functions in PDCurses 2.0 allowed for one window to be
1353  effectively placed on top of another, and the characters in the first
1354  window were overlaid or overwritten starting at 0,0 in both windows.
1355  This behavior of these functions was not correct. These functions only
1356  operate on windows that physically overlap with respect to the
1357  displayed screen. To achieve the same functionality as before, use the
1358  new function copywin(). See the manual page for further details.
1360  typeahead()
1362  This function in PDCurses 2.0 effectively checked to see if there were
1363  any characters remaining in the keyboard buffer. This is not the
1364  behavior exhibited by System V curses. This function is intended
1365  purely to set a flag so that curses can check while updating the
1366  physical screen if any keyboard input is pending. To achieve the same
1367  effect with typeahead() under PDCurses 2.1 the following code should be
1368  used.
1370  In place of...
1372         while(!typeahead(stdin))
1373          {
1374                 /* do something until any key is pressed... */
1375          }
1377  use...
1379         /* getch() to return ERR if no key pending */
1380         nodelay(stdscr,TRUE);
1381         while(getch() == (ERR))
1382          {
1383                 /* do something until any key is pressed... */
1384          }
1387 ACKNOWLEDGEMENTS: (in no particular order)
1389  Jason Shumate, Pieter Kunst, David Nugent, Andreas Otte, Pasi
1390  Hamalainen, James McLennan, Duane Paulson, Ib Hojme
1392  Apologies to anyone I may have left out.
1394 ------------------------------------------------------------------------
1396 PDCurses 2.0 - 1992/11/23
1397 =========================
1399 INTRODUCTION:
1401  Well, here it finally is; PDCurses v2.0.
1403  PDCurses v2.0 is an almost total rewrite of PCcurses 1.4 done by John
1404  'Frotz' Fa'atuai, the previous maintainer. It adds support for OS/2 as
1405  well as DOS.
1407  This version has been tested with Microsoft C v6.0, QuickC v2.0 and
1408  Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02
1409  under OS/2 2.0. Also the library has been compiled successfully with
1410  emx 0.8e, C Set/2 and Watcom 9. Most testing was done with the large
1411  memory model, where applicable. The large memory model is probably the
1412  best model to use.
1414  The amount of testing has not been as extensive as I would have liked,
1415  but demands on releasing a product have outweighed the product's
1416  quality. Nothing new with that !! Hopefully with wider circulation,
1417  more bugs will be fixed more quickly.
1419  I have included just 1 makefile which is suitable for dmake 3.8 for
1420  both DOS and OS/2. The makefile does not rely on customization of the
1421  dmake.ini file.
1423  If you discover bugs, and especially if you have fixes, please let me
1424  know ASAP.
1426  The source to the library is distributed as a zip file made with zip
1427  1.9. You will need Info-ZIP unzip 5.0 to unzip. Follow the directions
1428  below to compile the library.
1430 DIRECTIONS:
1432  1. Create a new directory in which to unzip pdcurs20.zip. This will
1433     create a curses directory and a number of subdirectories containing
1434     source code for the library and utilities and the documentation.
1436  2. Make changes to the makefile where necessary:
1437     Change the MODEL or model macro to the appropriate value (if it
1438     applies to your compiler). Use model for Borland compilers.
1440     Change any paths in the defined macros to be suitable for your
1441     compiler.
1443  3. Invoke DMAKE [-e environment_options] [target]
1445     where environment_options are:
1447         OS (host operating system)
1448         COMP (compiler)
1449         OPT (optimized version or debug version) - optional. default Y
1450         TOS (target operating system) - optional. default OS
1452     see the makefile for valid combinations
1454     targets: all, demos, lcursesd.lib, manual...
1456     NB. dmake is case sensitive with targets, so those environments that
1457     use an upper case model value (eg MSC) MUST specify the library
1458     target as for eg. Lcursesd.lib
1460     The makefile is by default set up for Borland C++. The use of -e
1461     environment_options override these defaults. If you prefer, you can
1462     just change the defaults in the makefile and invoke it without the
1463     -e switch.
1465 OTHER NOTES:
1467  The documentation for the library is built into each source file, a
1468  couple of specific doc files and the header files. A program is
1469  supplied (manext) to build the manual. This program gets compiled when
1470  you build the documentation.
1472  To generate the library response file correctly, I had to write a quick
1473  and dirty program (buildlrf) to achieve this. Originally the makefiles
1474  just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" which appended
1475  a suitable line to the response file. Unfortunately under some
1476  combinations of makefiles and command processors (eg. nmake and 4DOS)
1477  the & would get treated as stderr and the echo command would fail.
1479  The original source for PDCurses that I received from the previous
1480  maintainer contained support for the FLEXOS operating system. Not
1481  having access to it, I could not test the changes I made so its support
1482  has fallen by the wayside. If you really need to have PDCurses running
1483  under FLEXOS, contact me and I will see what can be arranged.
1485  Under DOS, by default, screen writes to a CGA monitor are done via the
1486  video BIOS rather than by direct video memory writes. This is due to
1487  the CGA "snow" problem. If you have a CGA monitor and do not suffer
1488  from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
1489  This will then use cause PDCurses to write directly to the CGA video
1490  memory.
1492  Added System V color support.
1494 COMPILER-SPECIFIC NOTES:
1496  Microsoft C
1497  -----------
1499  It is possible with MSC 6.0 to build the OS/2 libraries and demo
1500  programs from within DOS. This is the only case where it is possible to
1501  specify the value of TOS on the command line to be OS2 and the value of
1502  OS be DOS.
1504  C Set/2
1505  -------
1507  I have only tested the library using the migration libraries. I doubt
1508  that the demo programs will work without them.
1510  emx
1511  ---
1513  Testing has been done with 0.8e of emx together with the 16_to_32
1514  libraries. The emx\lib directory should include the vio32.lib and
1515  kbd32.lib libraries from the 16_to_32 package.
1517 BUGS and UNFINISHED BUSINESS:
1519 - PDC_set_ctrl_break() function does not work under OS/2.
1521 - win_print() and PDC_print() do not work under OS/2.
1523 - The file todo.man in the doc directory also lists those functions of
1524   System V 3.2 curses not yet implemented. Any volunteers?
1526 ACKNOWLEDGEMENTS:
1528  John 'Frotz' Fa'atuai, the previous maintainer for providing an
1529  excellent base for further development.
1530  John Burnell <johnb@kea.am.dsir.govt.nz>, for the OS/2 port.
1531  John Steele, Jason (finally NOT a John) Shumate....
1532  for various fixes and suggestions.
1533  Eberhardt Mattes (author of emx) for allowing code based on his
1534  C library to be included with PDCurses.
1535  Several others for their support, moral and actual.
1537 -- Mark Hessling
1539 ------------------------------------------------------------------------
1541 PDCurses 2.0Beta - 1991/12/21
1542 =============================
1544 Changed back from short to int. (int is the correct size for the default
1545 platform. Short might be too short on some platforms. This is more
1546 portable. I, also, made this mistake.)
1548 Many functions are now macros.  If you want the real thing, #undef the
1549 macro. (X/Open requirement.)
1551 Merged many sources into current release.
1553 Added many X/Open routines (not quite all yet).
1555 Added internal documentation to all routines.
1557 Added a HISTORY file to the environment.
1559 Added a CONTRIB file to the environment.
1561 ------------------------------------------------------------------------
1563 PDCurses 1.5Beta - 1990/07/14
1564 =============================
1566 Added many levels of compiler support. Added mixed prototypes for all
1567 "internal" routines. Removed all assembly language.  Added EGA/VGA
1568 support.  Converted all #ifdef to #if in all modules except CURSES.H and
1569 CURSPRIV.H. Always include ASSERT.H.  Added support for an external
1570 malloc(), calloc() and free(). Added support for FAST_VIDEO
1571 (direct-memory writes). Added various memory model support (for
1572 FAST_VIDEO). Added much of the December 1988 X/Open Curses
1573 specification.
1575 -- John 'Frotz' Fa'atuai
1577 ------------------------------------------------------------------------
1579 PCcurses 1.4 - 1990/01/14
1580 =========================
1582   In PCcurses v.1.4, both portability improvements and bugfixes have
1583 been made. The files have been changed to allow lint-free compilation
1584 with Microsoft C v.5.1, and with Turbo C v.2.0. The source should still
1585 compile without problems on older compilers, although this has not been
1586 verified.
1588   The makefiles have been changed to suit both the public release and
1589 the author, who maintains a special kind of libraries for himself. In
1590 the case of Microsoft C, changes were done in the makefile to lower the
1591 warning level to 2 (was 3). This was to avoid ANSI warnings which are
1592 abundant because PCcurses does not attempt to follow strict ANSI C
1593 standard.
1595   BUG FIXES FROM V.1.3 TO V.1.4:
1597   !!!IMPORTANT CHANGE!!!
1599   The definitions for OK and ERR in curses.h were exchanged. This was
1600 done to be more consistent with UNIX versions. Also, it permits
1601 functions like newwin() and subwin() to return 0 (=NULL) when they fail
1602 due to memory shortage. This incompatibility with UNIX curses was
1603 pointed out by Fred C. Smith. If you have tested success/failure by
1604 comparisons to anything other than ERR and OK, your applications will
1605 need to be be changed on that point. Sorry... but presumably most of you
1606 used the symbolic constants?
1608   (END OF IMPORTANT CHANGE)
1610   Fred also pointed out a bug in the file update.c. The bug caused the
1611 first character printed after 'unauthorized' screen changes (like during
1612 a shell escape, for example) to be placed at the wrong screen position.
1613 This happened even if the normal precautions (clear / touch / refresh)
1614 were taken. The problem has now been fixed.
1616   PCcurses is currently also being used on a 68000 system with
1617 hard-coded ESCape sequences for ANSI terminals. However, ints used by
1618 the 68000 C compiler are 32 bits. Therefore ints have been turned into
1619 shorts wherever possible in the code (otherwise all window structures
1620 occupy twice as much space as required on the 68000). This does not
1621 affect PC versions since normally both ints and shorts are 16 bits for
1622 PC C compilers.
1624   At some places in the source code there are references made to the
1625 68000 version. There are also a makefile, a curses68.c file, and a
1626 curses68.cmd file. These are for making, low-level I/O, and linking
1627 commands when building the 68000 version. These files are probably
1628 useful to no-one but the author, since it is very specific for its
1629 special hardware environment. Still in an effort to keep all
1630 curses-related sources in one place they are included. Note however that
1631 PCcurses will not officially support a non-PC environment.
1633   The file cursesio.c, which was included in the package at revision
1634 level 1.2, and which was to be an alternative to the cursesio.asm file,
1635 has been verified to behave incorrectly in the function _curseskeytst().
1636 The problem was that the value of 'cflag' does not contain the proper
1637 data for the test that is attempted. Furthermore, neither Turbo C or
1638 Microsoft C allows any way to return the data that is needed, and
1639 consequently you should not use cursesio.c. The best solution is to
1640 simply use the ASM version. In v.1.2 and v.1.3, the user could edit the
1641 makefile to select which version he wanted to use. The makefiles in
1642 v.1.4 have removed this possibility forcing the use of the ASM file, and
1643 cursesio.c has been dropped from the distribution.
1645   A bug in the wgetstr() function caused PCcurses to echo characters
1646 when reading a keyboard string, even if the echo had been turned off.
1647 Thanks to Per Foreby at Lund University, Sweden, for this. Per also
1648 reported bugs concerning the handling of characters with bit 8 set.
1649 Their ASCII code were considered as lower than 32, so they were erased
1650 etc. like control characters, i.e. erasing two character positions. The
1651 control character test was changed to cope with this.
1653   The overlay() and overwrite() functions were changed so that the
1654 overlaying window is positioned at its 'own' coordinates inside the
1655 underlying window (it used to be at the underlying window's [0,0]
1656 position). There is some controversy about this - the documentation for
1657 different curses versions say different things. I think the choice made
1658 is the most reasonable.
1660   The border() and wborder() functions were changed to actually draw a
1661 border, since this seems to be the correct behavior of these functions.
1662 They used to just set the border characters to be used by box(). These
1663 functions are not present in standard BSD UNIX curses.
1665   The subwin() function previously did not allow the subwindow to be as
1666 big as the original window in which it was created. This has now been
1667 fixed. There was also the problem that the default size (set by
1668 specifying numlines or numcols (or both) as 0 made the resulting actual
1669 size 1 line/column too small.
1671   There were a few spelling errors in function names, both in the
1672 function declarations and in curses.h. This was reported by Carlos
1673 Amaral at INESC in Portugal. Thanks! There was also an unnecessary (but
1674 harmless) parameter in a function call at one place.
1676 ------------------------------------------------------------------------
1678 PCcurses 1.3 - 1988/10/05
1679 =========================
1681   The file 'border.c' is now included. It allows you to explicitly
1682 specify what characters should be used as box borders when the box()
1683 functions are called. If the new border characters are non-0, they
1684 override the border characters specified in the box() call. In my
1685 understanding, this functionality is required for AT&T UNIX sV.3
1686 compatibility. Thanks for this goes to Tony L. Hansen
1687 (hansen@pegasus.UUCP) for posting an article about it on Usenet
1688 (newsgroup comp.unix.questions; his posting was not related at all to
1689 PCcurses).
1691   The only other difference between v.1.2 and v.1.3 is that the latter
1692 has been changed to avoid warning diagnostics if the source files are
1693 compiled with warning switches on (for Microsoft this means '-W3', for
1694 Turbo C it means '-w -w-pro'). Of these, the Turbo C warning check is
1695 clearly to be used rather than Microsoft, even if neither of them comes
1696 even close to a real UNIX 'lint'. Some of the warnings in fact indicated
1697 real bugs, mostly functions that did not return correct return values or
1698 types.
1700   The makefiles for both MSC and TRC have been modified to produce
1701 warning messages as part of normal compilation.
1703 ------------------------------------------------------------------------
1705 PCcurses 1.2 - 1988/10/02
1706 =========================
1708   The changes from v.1.1 to v.1.2 are minor. The biggest change is that
1709 there was a bug related to limiting the cursor movement if the
1710 application tried to move it outside the screen (something that should
1711 not be done anyway). Such erroneous application behavior is now handled
1712 appropriately.
1714   All modules have been changed to have a revision string in them, which
1715 makes it easier to determine what version is linked into a program (or
1716 what library version you have).
1718   There is now a 'cursesio.c' file. That file does the same as
1719 'cursesio.asm' (i.e. it provides the interface to the lower-level system
1720 I/O routines). It is written in C and thus it is (possibly) more
1721 portable than the assembler version (but still not so portable since it
1722 uses 8086 INT XX calls directly). When one creates new curses libraries,
1723 one chooses whether to use the assembler or the C version of cursesio.
1724 The choice is made by commenting out the appropriate dependencies for
1725 cursesio.obj, near the end of the makefiles.
1727   There is now a 'setmode.c' file. That file contains functions that
1728 save and restore terminal modes. They do it into other variables than do
1729 savetty() and resetty(), so one should probably use either
1730 savetty()/resetty() or the new functions only - and not mix the both
1731 ways unless one really knows what one does.
1733   Diff lists vs v.1.0 are no longer included in the distribution. The
1734 make utility still is. PCcurses v.1.2 still compiles with Microsoft C
1735 v.4.0, and with Borland Turbo C v.1.0. There is as far as I know no
1736 reason to believe that it does not compile under Microsoft C v.3.0 and
1737 5.x, or Turbo C v.1.5, but this has not been tested.
1739   There are two makefiles included, one for Microsoft C, one for Turbo
1740 C. They are both copies of my personal makefiles, and as such they
1741 reflect the directory structure on my own computer. This will have to be
1742 changed before you run make. Check $(INCDIR) and $(LIBDIR) in
1743 particular, and make the choice of ASM or C cursesio version as
1744 mentioned above (the distribution version uses the C version of
1745 cursesio).
1747   The manual file (curses.man) has been changed at appropriate places.
1749   I would like to thank the following persons for their help:
1751         Brandon S. Allbery (alberry@ncoast.UUCP)
1752                 for running comp.binaries.ibm.pc (at that time)
1753                 and comp.source.misc.
1755         Steve Balogh (Steve@cit5.cit.oz.AU)
1756                 for writing a set of manual pages and posting
1757                 them to the net.
1759         Torbjorn Lindh
1760                 for finding bugs and suggesting raw
1761                 character output routines.
1763         Nathan Glasser (nathan@eddie.mit.edu)
1764                 for finding and reporting bugs.
1766         Ingvar Olafsson (...enea!hafro!ingvar)
1767                 for finding and reporting bugs.
1769         Eric Rosco (...enea!ipmoea!ericr)
1770                 for finding and reporting bugs.
1772         Steve Creps (creps@silver.bacs.indiana.edu)
1773                 for doing a lot of work - among others
1774                 posting bug fixes to the net, and writing
1775                 the new cursesio.c module.
1777         N. Dean Pentcheff (dean@violet.berkeley.edu)
1778                 for finding bugs and rewriting cursesio.asm
1779                 for Turbo 'C' 1.5.
1781   Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff)
1782                      (jeff@ads.arpa)
1783         has had a shareware version of curses deliverable since
1784         about half a year before I released PCcurses 1.0 on Use-
1785         Net. He is very concerned about confusion between the two
1786         packages, and therefore any references on the network
1787         should make clear whether they reference Dean's PCcurses
1788         or Larsson's PCcurses.
1790 ------------------------------------------------------------------------
1792 PCcurses 1.1 - 1988/03/06
1793 =========================
1795   The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes,
1796 and new (non-portable) functions for verbatim IBM character font display
1797 have been added (in charadd.c and charins.c). The manual file
1798 (curses.man) has been changed at appropriate places.
1800   In the file v10tov11.dif there are listings of the differences between
1801 version 1.0 and 1.1. The diff listings are in UNIX diff(1) format.
1803   Version 1.1 compiles with Turbo C v.1.0, as well as Microsoft C v.3.0
1804 and v.4.0. On the release disk there is a make.exe utility which is very
1805 similar to UNIX make (If the package was mailed to you, the make utility
1806 will be in uuencoded format - in make.uu - and must be uudecoded first).
1807 It is much more powerful than Microsoft's different MAKEs; the latter
1808 ones will NOT generate libraries properly if used with the PCcurses
1809 makefiles.
1811   There are three makefiles:
1813         makefile                generic MSC 3.0 makefile
1814         makefile.ms             MSC 4.0 makefile
1815         makefile.tc             Turbo C 1.0 makefile
1817   To make a library with for example Turbo C, make directories to hold
1818 .H and .LIB files (these directories are the 'standard places'), edit
1819 makefile.tc for this, and type
1821         make -f makefile.tc all
1823 and libraries for all memory models will be created in the .LIB
1824 directory, while the include files will end up in the .H directory. Also
1825 read what is said about installation below!
1827 ------------------------------------------------------------------------
1829 PCcurses 1.0 - 1987/08/24
1830 =========================
1832   This is the release notes for the PCcurses v.1.0 cursor/window control
1833 package. PCcurses offers the functionality of UNIX curses, plus some
1834 extras. Normally it should be possible to port curses-based programs
1835 from UNIX curses to PCcurses on the IBM PC without changes. PCcurses is
1836 a port/ rewrite of Pavel Curtis' public domain 'ncurses' package. All
1837 the code has been re-written - it is not just an edit of ncurses (or
1838 UNIX curses). I mention this to clarify any copyright violation claims.
1839 The data structures and ideas are very similar to ncurses. As for UNIX
1840 curses, I have not even seen any sources for it.
1842   For an introduction to the use of 'curses' and its derivatives, you
1843 should read 'Screen Updating and Cursor Movement Optimization: A Library
1844 Package' by Kenneth C. R. C. Arnold, which describes the original
1845 Berkeley UNIX version of curses. It is available as part of the UNIX
1846 manuals. The other source of information is 'The Ncurses Reference
1847 Manual' by Pavel Curtis. The latter is part of Curtis' ncurses package.
1849   The only other documentation provided is a 'man' page which describes
1850 all the included functions in a very terse way. In the sources, each
1851 function is preceded by a rather thorough description of what the
1852 function does. I didn't have time to write a nice manual/tutorial -
1853 sorry.
1855   PCcurses is released as a number of source files, a man page, and a
1856 make file. A uuencoded copy of a 'make' utility, and a manpage for the
1857 'make' is also provided to make it easier to put together PCcurses
1858 libraries. Even if you are not interested in PCcurses, it may be
1859 worthwhile to grab the make.
1861   The makefile assumes the presence of the Microsoft C compiler (3.0 or
1862 4.0), Microsoft MASM and LIB, plus some MS-DOS utilities. The reason for
1863 supplying MAKE.EXE is that the Microsoft 'MAKE:s' are much inferior to a
1864 real UNIX make. The supplied make is a port of a public domain make,
1865 published on Usenet. It is almost completely compatible with UNIX make.
1866 When generating the curses libraries, the makefile will direct make to
1867 do some directory creating and file copying, and then re-invoke itself
1868 with new targets. The workings of the makefile are not absolutely
1869 crystal clear at first sight... just start it and see what it does.
1871   For portability, the curses libraries depend on one assembler file for
1872 access to the BIOS routines. There is no support for the EGA, but both
1873 CGA, MGA, and the HGA can be used. The libraries are originally for
1874 Microsoft C, but all C modules should be portable right away. In the
1875 assembler file, segment names probably need to be changed, and possibly
1876 the parameter passing scheme. I think Turbo C will work right away - as
1877 far as I understand, all its conventions are compatible with Microsoft
1880   There are some parts left out between ncurses and PCcurses. One is the
1881 support for multiple terminals - not very interesting on a PC anyway.
1882 Because we KNOW what terminal we have, there is no need for a termcap or
1883 terminfo library. PCcurses also has some things that neither curses nor
1884 ncurses have. Compared to the original UNIX curses, PCcurses has lots of
1885 extras.
1887   The BIOS routines are used directly, which gives fast screen updates.
1888 PCcurses does not do direct writes to screen RAM - in my opinion it is
1889 a bit ugly to rely that much on hardware compatibility. Anyone could fix
1890 that, of course...
1892   One of the more serious problems with PCcurses is the way in which
1893 normal, cbreak, and raw input modes are done. All those details are in
1894 the 'charget' module - I do raw I/O via the BIOS, and perform any
1895 buffering myself. If an application program uses PCcurses, it should do
1896 ALL its I/O via PCcurses calls, otherwise the mix of normal and
1897 PCcurses I/O may mess up the display. I think my code is reasonable...
1898 comments are welcome, provided you express them nicely...
1900   To install, copy all files to a work directory, edit 'makefile' to
1901 define the standard include and library file directory names of your
1902 choice (these directories must exist already, and their path names must
1903 be relative to the root directory, not to the current one). You must
1904 also run uudecode on make.uu, to generate MAKE.EXE. You can do that on
1905 your PC, if you have uudecode there, otherwise you can do it under UNIX
1906 and do a binary transfer to the PC. When you have MAKE.EXE in your work
1907 directory (or in your /bin directory), type make.
1909   Make will now create 4 sub-directories (one for each memory model),
1910 copy some assembler include files into them, copy two include files to
1911 your include directory, CHDIR to each sub-directory and re-invoke itself
1912 with other make targets to compile and assemble all the source files
1913 into the appropriate directories. Then the library manager is run to
1914 create the library files in your desired library directory. Presto!
1916   If you only want to generate a library for one memory model, type
1917 'make small', 'make large', etc. The name of the memory model must be in
1918 lower case, like in the makefile.
1920   I think the package is fairly well debugged - but then again, that's
1921 what I always think. It was completed in May-87, and no problems found
1922 yet. Now it's your turn... Comments, suggestions and bug reports and
1923 fixes (no flames please) to
1925 -- Bjorn Larsson