libpayload: Add PDCurses and ncurses' libform/libmenu
[coreboot.git] / payloads / libpayload / curses / PDCurses-3.4 / HISTORY
1 PDCurses 3.4 - 2008/09/08
2 =========================
3
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.
7
8 New features:
9
10 - setsyx() is now a function rather than a macro.
11
12 Bug fixes and such:
13
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.
17
18 - Test for moved cursor was omitting the window origin offset. Reported 
19   by Carey Evans.
20
21 - Is DOS and OS/2, the value for max items in key_table was still wrong.
22   Reported by C.E.
23
24 - Changed isendwin() so it won't crash after delscreen().
25
26 - Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs(). 
27
28 - Disable QuickEdit Mode when enabling mouse input for the Win32 
29   console; reported by "Zalapkrakna".
30
31 - Fix for building under Innotek C (I hope). Report by Elbert Pol, fix
32   courtesy of Paul Smedley.
33
34 - Unified exports list with no duplicates -- pdcurses.def is now built
35   from components at compile time.
36
37 - Don't install curspriv.h, and don't include it with binary
38   distributions.
39
40 - Building DLLs with LCC is no longer supported, due to the primitive
41   nature of its make.exe.
42
43 - Export the terminfo stub functions from the DLLs, too.
44
45 - Added support for Apple's ".dylib" in configure. Suggested by Marc 
46   Vaillant (who says it's needed with OS 10.5.)
47
48 - In sdl1/Makefile.mng, ensure that CC is set.
49
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."
55
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. 
59
60 - New indentation standard: four spaces, no tabs.
61
62 ------------------------------------------------------------------------
63
64 PDCurses 3.3 - 2007/07/11
65 =========================
66
67 This release adds an SDL backend, refines the demos, and is faster in 
68 some cases.
69
70 New features:
71
72 - SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details.
73
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.
80
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.
85
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.
89
90 - Added setlocale() to tuidemo, to make it easier to browse files with
91   non-ASCII characters.
92
93 - Sped up firework demo by replacing unneeded clear() and init_pair()
94   calls.
95
96 - Allow exit from ptest demo by typing 'q'.
97
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).
101
102 Bug fixes and such:
103
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.
106
107 - Set SP->audible on a per-platform basis, as was documented in
108   IMPLEMNT, but not actually being done.
109
110 - Minor tweaks for efficiency and readability, notably with wscrl().
111
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.
118
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.
121
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.)
125
126 - Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside
127   the platform directory.
128
129 - Building the X11 port with Cygwin required manually editing the 
130   Makefile after configuring; no longer. Reported by Warren W. Gay.
131
132 - Minor tightening of configure and makefiles.
133
134 - Bogus references to "ACS_BLCORNER" in the border man page. Reported by
135   "Walrii".
136
137 - slk_wlabel() was not documented.
138
139 - Spelling cleanup.
140
141 - Changed RCSIDs to not end with a semicolon -- avoids warnings when
142   compiling with the -pedantic option.
143
144 - Merged latin-1.txt into x11.txt.
145
146 - Updated config.guess and config.sub to more recent versions.
147
148 ------------------------------------------------------------------------
149
150 PDCurses 3.2 - 2007/06/06
151 =========================
152
153 This release mainly covers changes to the build process, along with a 
154 few structural changes.
155
156 New features:
157
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.
165
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.)
169
170 - MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y"
171   option. Partly due to Timofei Shatrov.
172
173 - Support for the Digital Mars compiler.
174
175 - Watcom makefiles now use the "loaddll" feature.
176
177 Bug fixes and such:
178
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.
187
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.
191
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.
195
196 - In Win32, read the registry only when needed: when init_color() or 
197   color_content() is called, instead of at startup.
198
199 - A few additional consts in declarations.
200
201 - The Win32 compilers that build DLLs now use common .def files.
202
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.
205
206 - Simplified Borland makefiles.
207
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.
211
212 ------------------------------------------------------------------------
213
214 PDCurses 3.1 - 2007/05/03
215 =========================
216
217 Primarily clipboard-related fixes, and special UTF-8 support.
218
219 New features:
220
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.
224
225 - Multibyte string support in PDC_*clipboard() functions, and in Win32's
226   PDC_set_title().
227
228 - Added the global string "ttytype", per other curses implementations,
229   for compatibility with old BSD curses.
230
231 - Real functions for the "quasi-standard aliases" -- crmode(),
232   nocrmode(), draino(), resetterm(), fixterm() and saveterm().
233   (Corresponding macros removed.)
234
235 Bug fixes and such:
236
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().
243
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.
248
249 - PDC_setclipboard() was locking up in X11. Reported by Mark Hessling.
250
251 - Missing underscore in the declaration of XC_say() prevented
252   compilation with PDCDEBUG defined.  Reported by M.H.
253
254 - Off-by-one error in copywin() -- the maximum coordinates for the
255   destination window should be inclusive. Reported by Tiago Dionizio.
256
257 - Start in echo mode, per X/Open. Reported by T.D.
258
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).
262
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.
267
268 - Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the 
269   clipboard functions in Win32, to match the console.
270
271 - Changed the format of the string returned from longname().
272
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.
276
277 - Moved has_key() into the keyname module, and documented it.
278
279 - Moved RIPPEDOFFLINE to curspriv.h.
280
281 - Typos in IMPLEMNT.
282
283 ------------------------------------------------------------------------
284
285 PDCurses 3.0 - 2007/04/01
286 =========================
287
288 The focuses for this release are X/Open conformance, i18n, better color 
289 support, cleaner code, and more consistency across platforms.
290
291 This is only a brief summary of the changes. For more details, consult 
292 the CVS log.
293
294 New features:
295
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.
303
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.
307
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.
311
312 - Mouse support for DOS and OS/2. The DOS version includes untested 
313   support for scroll wheels, via the "CuteMouse" driver.
314
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.
318
319 - DOS and OS/2 can now return modifiers as keys, as in Win32 and X11.
320
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.
329
330 - Corresponding to the change in COLORS, COLOR_PAIRS is now 256.
331
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).
338
339 - use_default_colors(), assume_default_colors(), and curses_version(),
340   after ncurses.
341
342 - Added global int TABSIZE, after ncurses and Solaris curses; removed
343   window-specific _tabsize.
344
345 - Logical extension to the wide-character slk_ funcs: slk_wlabel(), for 
346   retrieving the label as a wide-character string.
347
348 - A non-macro implementation of ncurses' wresize().
349
350 - Working putwin(), getwin(), scr_dump() and scr_restore().
351
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.)
356
357 - In X11, allow selection and paste of UTF8_STRING.
358
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.
363
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).
368
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. 
374
375 - A new document, IMPLEMNT, describing PDCurses' internal functions for
376   those wishing to port it to new platforms.
377
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.)
381
382 Bug fixes and such:
383
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.
389
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.
393
394 - General reorganization and simplification.
395
396 - Documentation revisions.
397
398 - When expanding control characters in addch() or insch(), retain the 
399   attributes from the chtype.
400
401 - Preserve the A_ALTCHARSET attribute in addch() and insch().
402
403 - Per X/Open, beep() should always return OK.
404
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).
411
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.
415
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.
419
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.
424
425 - In getstr(), backspacing on high-bit characters caused a double 
426   backspace.
427
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.
431
432 - innstr() is supposed to return the number of characters read, not just 
433   OK or ERR. Reported by Mike Aubury.
434
435 - A proper implementation of insch() -- the PDC_chadd()-based version 
436   wasn't handling the control characters correctly.
437
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".
441
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.
444
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.
449
450 - napms(0) now returns immediately.
451
452 - A unified napms() implementation for DOS -- no longer throttles the
453   CPU when built with any compiler.
454
455 - Allow backspace editing of the nocbreak() buffer.
456
457 - pair_content(0, ...) is valid.
458
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.
461
462 - In X11, resize_term() must be called with parameters (0, 0), and only 
463   when SP->resized is set, else it returns ERR.
464
465 - Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's 
466   web site.
467
468 - slk_clear() now removes the buttons completely, as in ncurses.
469
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)".
474
475 - Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER().
476
477 - Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch() 
478   are now (again) the core functions.
479
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().
486
487 - Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR 
488   _ENDLINE, _FULLWIN and _SCROLLWIN.
489
490 - Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*, 
491   _lasts*.
492
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.
499
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().
503
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.
507
508 - The mouse cursor no longer appears in full-screen mode in Win32 unless
509   a nonzero mouse event mask is used.
510
511 - ALT-keypad input now works in Win32.
512
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.
516
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.
520
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.
526
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.)
529
530 - In X11, don't return selection start as a press event. (Shift-click on
531   button 1 is still returned.)
532
533 - In X11, properly handle pasting of high-bit chars. (It was doing an
534   unwanted sign extension.)
535
536 - In X11, BUTTON_MOVED was never returned, although PDC_MOUSE_MOVED was
537   set.
538
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.
542
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.
549
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.
552
553 - Modifiers are not returned as keys when a mouse click has occurred
554   since the key press.
555
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.
559
560 - The cursor position was not always updated correctly in BIOS mode.
561
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.
565
566 - Better reporting of mouse events in testcurs.
567
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.
570
571 - Allow tuidemo to use the last line.
572
573 - Separate left/right modifier keys are now reported properly in Win32.
574   (Everything was being reported as _R.)
575
576 - Attempts to redirect input in Win32 now cause program exit and an 
577   error message, instead of hanging.
578
579 - Dropped support for the Microway NDP compiler.
580
581 - Some modules renamed, rearranged.
582
583 - Fixes for errors and warnings when building with Visual C++ 2005.
584
585 - In MSVC, the panel library didn't work with the DLL.
586
587 - Complete export lists for DLLs.
588
589 - Simplified makefiles; moved common elements to .mif files; better 
590   optimization; strip demos when possible.
591
592 - Changed makefile targets of "pdcurses.a/lib" and "panel.a/lib" to 
593   $(LIBCURSES) and $(LIBPANEL). Suggestion of Doug Kaufman.
594
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.
598
599 - Make PDCurses.man dependent on manext. Suggestion of Tiziano Mueller.
600
601 - Set up configure.ac so autoheader works; removed some obsolescent 
602   macros. Partly the suggestion of T.M.
603
604 - The X11 port now builds in the x11 directory (including the demos), as
605   with other ports.
606
607 - The X11 port should now build on more 64-bit systems. Partly due to 
608   M.H.
609
610 - The default window title and icons for the X11 port are now "PDCurses"
611   instead of "XCurses".
612
613 - Internal functions and variables made static where possible.
614
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.
621
622 - Changed the encoding for non-ASCII characters in comments and
623   documentation from Latin-1 to UTF-8.
624
625 ------------------------------------------------------------------------
626
627 PDCurses 2.8 - 2006/04/01
628 =========================
629
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.
633
634 New features:
635
636 - Simpler, faster.
637
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.
643
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.
648
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.)
652
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).
656
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.)
664
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.
669
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".
679
680 - Combined readme.* into this HISTORY file, and incorporated the old 1.x
681   (PCcurses) history.
682
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.
686
687 - Added modified versions of the rain and worm demos from ncurses.
688
689 Bug fixes and such:
690
691 - Big cleanup of dead and redundant code, including unneeded defines, 
692   ifdefs, and structure elements.
693
694 - flushinp() was not implemented for Win32.
695
696 - resetty() was not restoring LINES and COLS.
697
698 - nonl() made '\n' print a line feed without carriage return. This was 
699   incorrect.
700
701 - Removed bogus implementation of intrflush().
702
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.)
706
707 - The declarations for the printw() and scanw() function families were
708   erroneously ifdef'd.
709
710 - Safer printw() calls on platforms that support vsnprintf().
711
712 - Use the native vsscanf() in DJGPP, MinGW and Cygwin.
713
714 - ACS_BLOCK now works in X.
715
716 - Explicit calls to XCursesExit() are no longer needed.
717
718 - XCURSES is now defined automatically if not DOS, OS2 or WIN32.
719
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".
723
724 - Incorrect dimensions (undercounting by two in each direction) were
725   shown while resizing in X.
726
727 - Scroll wheel events were not always correctly reported in X.
728
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.
732
733 - The short, 16-bit chtype now works with XCurses.
734
735 - Corrected return value for is_linetouched(), is_wintouched(),
736   can_change_color() and isendwin() (bool instead of int).
737
738 - timeout(), wtimeout(), idcok() and immedok() return void.
739
740 - pair_content() takes a short.
741
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.)
745
746 - Added const where required by the spec, and in other appropriate
747   places.
748
749 - Removed PDC_usleep(). napms() is now the core delay routine.
750
751 - Fixed poll() support in napms().
752
753 - Various changes to the internal PDC_* functions -- don't depend on 
754   these, and don't use them unless you absolutely have to.
755
756 - Some routines accessed window structures in their variable 
757   declarations, _before_ checking for a NULL window pointer.
758
759 - Dropped support for the undocumented PDC_FULL_DISPLAY, wtitle(), and
760   PDC_print().
761
762 - Cleaned up remaining warnings.
763
764 - Reduced unnecessary #include directives -- speeds up compilation.
765
766 - Fix for demos build in Borland/DOS -- the makefile in 2.7 didn't 
767   specify the memory model. Reported by Erwin Waterlander.
768
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.
774
775 - Reverted to /usr/local/ as default installation directory for XCurses.
776
777 - Upgraded to autoconf 2.59... instantly doubling the size of the
778   configure script. Ah well. Otherwise, simplified the build system.
779
780 - Dropped support for pre-ANSI compilers. (It hasn't worked since at
781   least version 2.4, anyway.)
782
783 - Revised and, I hope, clarified the boilerplate and other comments.
784
785 - Simplified logging and RCS ids; added RCS ids where missing.
786
787 - Consistent formatting for all code, approximately equivalent to
788   "indent -kr -i8 -bl -bli0", with adjustments for 80 columns.
789
790 ------------------------------------------------------------------------
791
792 PDCurses 2.7 - 2005/12/30
793 =========================
794
795 INTRODUCTION:
796
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.)
800
801 NEW FEATURES:
802
803 - Functions: delscreen(), getattrs(), has_key(), slk_color(),
804   wcolor_set(), wtimeout().
805
806 - Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(),
807   mvwvline(), timeout(), wresize().
808
809 - Stub implementations of terminfo functions (including a term.h).
810
811 - More stubs for compatibility: filter(), getwin(), putwin(),
812   noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(),
813   scr_set(), use_env(), vidattr(), vidputs().
814
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).
818
819 - Simplified build system.
820
821 - Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak
822   files for more info).
823
824 - Minimal implementation of color_content() -- no longer a stub.
825
826 - Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for
827   DOS/OS2/Win; "enhanced" versions of existing ACS characters used.
828
829 - Support for scroll wheels.
830
831 - Support for Pacific C.
832
833 BUGS FIXED:
834
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.
838
839 - The ability to build ncurses_tests has been restored (see demos dir).
840
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).
844
845 - Implicit wrefresh() in wgetch() was not being invoked in nodelay mode.
846
847 - subpad() was erroneously offsetting from the origin coordinates of the
848   parent pad (which are always -1,-1).
849
850 - In wborder(), whline(), and wvline(), the current (wattrset) attribute
851   was being used, but not the current background (wbkgd).
852
853 - Allow Russian 'r' character ASCII 0xe0 to be returned.
854
855 - termattrs() now also returns A_UNDERLINE, A_REVERSE.
856
857 - In Win32, with large scrollback buffers set, there was an unwanted
858   "scrollup" effect on startup.
859
860 - Revamped keyboard handling for Win32.
861
862 - New screen resize method for Win32.
863
864 - napms(), delay_output(), etc. now work with Cygwin.
865
866 - curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode --
867   the cursor stayed on.
868
869 - The A_REVERSE attribute was broken in XCurses.
870
871 - On 64-bit systems, XCurses was ignoring every other keystroke.
872
873 - Added focus hints for XCurses.
874
875 - Demos (except for tuidemo) once again have their proper titles in
876   XCurses (using Xinitscr() instead of the obsolete XCursesProgramName).
877
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.
881
882 - Reset screen size in resetty() under DOS, as in Win32 and OS/2.
883
884 - Changes for cursor size under DOS.
885
886 - Automatic setting of BIOS mode for CGA under DOS now works.
887
888 - The cursor is now always updated in PDC_gotoxy(); this fixes the
889   problem of missing characters in BIOS mode.
890
891 - Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(),
892   nl() and nonl() now return OK.
893
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.
898
899 - Added "const" to prototypes where appropriate.
900
901 - Miscellaneous code cleanup.
902
903 ACKNOWLEDGEMENTS:
904
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
916
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.
920
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.
926
927 -- William McBrine
928
929 ------------------------------------------------------------------------
930
931 PDCurses 2.6 - 2003/01/08
932 =========================
933
934 INTRODUCTION:
935
936  This release of PDCurses includes the following changes:
937
938 BUGS FIXED:
939
940 - Allow accented characters on Win32 platform when run on non-English
941   keyboards.
942
943 - Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned.
944
945 - Some bugs with halfdelay() fixed by William McBrine.
946
947 - pechochar() should now work correctly.
948
949 - redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi
950
951 - Don't include "special" characters like KEY_SHIFT_L to be returned in
952   getnstr() family. Bug 542913
953
954 - Entering TAB in wgetnstr() no longer exceeds requested buffer size.
955   Bug 489233
956
957 - Fixed bug 550066, scrollok() and pads.
958   Also beep() called when buffer exceeded. Bug 562041.
959
960 - Reverse video of X11 selection reinstated. Pablo Garcia Abio??
961
962 - Right Alt modifier now works like left Alt modifier under Win32
963
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 :-(
967
968 - Don't trap signals in XCurses if calling application has ignored them. 
969   Change by Frank Heckenbach.
970
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.
978
979 - Fixed bug with calling def_prog_mode(), resize_term(), 
980   reset_prog_mode(); the resize details were being lost.
981
982 NEW FEATURES:
983
984 - Clipboard support now available on DOS platform, but handled 
985   internally to the currently running process.
986
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.
990
991 NEW COMPILER SUPPORT:
992
993 - lcc-win32 now works correctly
994
995 ------------------------------------------------------------------------
996
997 PDCurses 2.5 - 2001/11/26
998 =========================
999
1000 INTRODUCTION:
1001
1002  This release of PDCurses includes the following changes:
1003
1004 - Set BASE address for Win32 DLL
1005
1006 - Add KEY_SUP and KEY_SDOWN.
1007
1008 - Add PDC_set_line_color()
1009
1010 - Add blink support as bold background
1011
1012 - Add bold colors
1013
1014 - Add getbkgd() macro
1015
1016 - Add new PDC functions for adding underline, overline, leftline and 
1017   rightline
1018
1019 - Add support for shifted keypad keys.
1020
1021 - Allow more keypad keys to work under Win32
1022
1023 - Change Win32 and OS/2 DLL name to curses.dll
1024
1025 - Change example resources to allow overriding from the command line
1026
1027 - Changes for building cleanly on OS/2
1028
1029 - Changes to handle building XCurses under AIX
1030
1031 - Check if prefresh() and pnoutrefresh() parameters are valid.
1032
1033 - Ensure build/install works from any directory
1034
1035 - Handle platforms where X11 headers do not typedef XPointer.
1036
1037 - Mention that Flexos is likely out-of-date.
1038
1039 - Pass delaytenths to XCurses_rawgetch()
1040
1041 - Remove boldFont
1042
1043 - Updates for cursor blinking and italic.
1044
1045 BUGS FIXED:
1046
1047 - Fix bug with getting Win32 clipboard contents. Added new 
1048   PDC_freeclipboard() function.
1049
1050 - Fix bug with halfdelay()
1051
1052 - Fix bug with mouse interrupting programs that are not trapping mouse 
1053   events under Win32.
1054
1055 - Fix return value from curs_set()
1056
1057 - Reverse the left and right pointing bars in ALT_CHARSET
1058
1059 NEW COMPILER SUPPORT:
1060
1061 - Add QNX-RTP port
1062
1063 ------------------------------------------------------------------------
1064
1065 PDCurses 2.4 - 2000/01/17
1066 =========================
1067
1068 INTRODUCTION:
1069
1070  This release of PDCurses includes the following changes:
1071
1072 - full support of X11 selection handling
1073
1074 - removed the need for the cursos2.h file
1075
1076 - enabled the "shifted" key on the numeric keypad
1077
1078 - added native clipboard support for X11, Win32 and OS/2
1079
1080 - added extra functions for obtaining internal PDCurses status
1081
1082 - added clipboard and key modifier tests in testcurs.c
1083
1084 - fixes for panel library
1085
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
1089
1090 - Added X11 shared library support
1091
1092 - Added extra slk formats supported by ncurses
1093
1094 - Fixed bug with resizing the terminal when slk were on.
1095
1096 - Changed behavior of slk_attrset(), slk_attron() slk_attroff()
1097   functions to work more like ncurses.
1098
1099 BUGS FIXED:
1100
1101 - some minor bug and portability fixes were included in this release
1102
1103 NEW FUNCTIONS:
1104
1105 - PDC_getclipboard() and PDC_setclipboard() for accessing the native
1106   clipboard (X11, Win32 and OS/2)
1107
1108 - PDC_set_title() for setting the title of the window (X11 and Win32 
1109   only)
1110
1111 - PDC_get_input_fd() for getting the file handle of the PDCurses input
1112
1113 - PDC_get_key_modifiers() for getting the keyboard modifier settings at 
1114   the time of the last (w)getch()
1115
1116 - Xinitscr() (only for X11 port) which allows standard X11 switches to 
1117   be passed to the application
1118
1119 NEW COMPILER SUPPORT:
1120
1121 - MingW32 GNU compiler under Win95/NT
1122
1123 - Cygnus Win32 GNU compiler under Win95/NT
1124
1125 - Borland C++ for OS/2 1.0+
1126
1127 - lcc-win32 compiler under Win95/NT
1128
1129 ACKNOWLEDGEMENTS: (for this release)
1130
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.
1140
1141 ------------------------------------------------------------------------
1142
1143 PDCurses 2.3 - 1998/07/09
1144 =========================
1145
1146 INTRODUCTION:
1147
1148  This release of PDCurses includes the following changes:
1149
1150 - added more System V R4 functions
1151
1152 - added Win32 port
1153
1154 - the X11 port is now fully functional
1155
1156 - the MS Visual C++ Win32 port now includes a DLL
1157
1158 - both the X11 and Win32 ports support the mouse
1159
1160 - the slk..() functions are now functional
1161
1162 - support for scrollbars under X11 are experimental at this stage
1163
1164 - long chtype extended to non-Unix ports
1165
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.
1169
1170 BUGS FIXED:
1171
1172 - some minor bugs were corrected in this release
1173
1174 NEW FUNCTIONS:
1175
1176 - slk..() functions
1177
1178 NEW COMPILER SUPPORT:
1179
1180 - MS Visual C++ under Win95/NT
1181
1182 - Watcom C++ under OS/2, Win32 and DOS
1183
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
1187
1188 EXTRA OPTIONS:
1189
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.
1193
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.
1198
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.
1203
1204
1205 ACKNOWLEDGEMENTS: (for this release)
1206
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.
1214
1215 ------------------------------------------------------------------------
1216
1217 PDCurses 2.2 - 1995/02/12
1218 =========================
1219
1220 INTRODUCTION:
1221
1222  This release of PDCurses has includes a number of major changes:
1223
1224 - The portable library functions are now grouped together into single 
1225   files with the same arrangement as System V R4 curses.
1226
1227 - A panels library has been included. This panels library was written by 
1228   Warren Tucker.
1229
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.
1233
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.
1237
1238 - Xwindows port (experimental at the moment).
1239
1240 BUGS FIXED:
1241
1242 - mvwin() checked the wrong coordinates
1243
1244 - removed DESQview shadow memory buffer checking bug in curses.h in 
1245   #define for wstandout()
1246
1247 - lots of others I can't remember
1248
1249 NEW FUNCTIONS:
1250
1251 - Too many to mention. See intro.man for a complete list of the 
1252   functions PDCurses now supports.
1253
1254 COMPILER SUPPORT:
1255
1256 - DJGPP 1.12 is now supported. The run-time error that caused programs 
1257   to crash has been removed.
1258
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.
1262
1263 - The Microway NDP C/C++ DOS compiler is now supported. Thanks to Wade 
1264   Schauer for this port.
1265
1266 - The Watcom C++ 10.0 DOS compiler is now supported. Thanks to Pieter 
1267   Kunst for this port.
1268
1269 - The library now has many functions grouped together to reduce the size 
1270   of the library and to improve the speed of compilation.
1271
1272 - The "names" of a couple of the compilers in the makefile has changed; 
1273   CSET2 is now ICC and GO32 is now GCC.
1274
1275 EXTRA OPTIONS:
1276
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
1285
1286 ACKNOWLEDGEMENTS: (for this release)
1287
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.
1291
1292 ------------------------------------------------------------------------
1293
1294 PDCurses 2.1 - 1993/06/20
1295 =========================
1296
1297 INTRODUCTION:
1298
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.
1305
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>.
1308
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.
1313
1314  Some people have suggested including information on where to get dmake 
1315  from. oak.oakland.edu in /pub/msdos/c
1316
1317 OTHER NOTES:
1318         
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.
1325
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.
1331
1332  Microsoft C 6.00 Users note:
1333  ----------------------------
1334
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.
1339
1340  Functional changes
1341  ------------------
1342
1343  Added OS/2 DLL support.
1344
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.
1349
1350  overlay() and overwrite()
1351
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.
1359
1360  typeahead()
1361
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.
1369
1370  In place of...
1371
1372         while(!typeahead(stdin))
1373          {
1374                 /* do something until any key is pressed... */
1375          }
1376
1377  use...
1378
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          }
1385
1386
1387 ACKNOWLEDGEMENTS: (in no particular order)
1388
1389  Jason Shumate, Pieter Kunst, David Nugent, Andreas Otte, Pasi 
1390  Hamalainen, James McLennan, Duane Paulson, Ib Hojme
1391         
1392  Apologies to anyone I may have left out.
1393
1394 ------------------------------------------------------------------------
1395
1396 PDCurses 2.0 - 1992/11/23
1397 =========================
1398
1399 INTRODUCTION:
1400
1401  Well, here it finally is; PDCurses v2.0.
1402
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.
1406
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.
1413
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.
1418
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.
1422
1423  If you discover bugs, and especially if you have fixes, please let me 
1424  know ASAP.
1425
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.
1429
1430 DIRECTIONS:
1431
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.
1435
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.
1439
1440     Change any paths in the defined macros to be suitable for your
1441     compiler.
1442
1443  3. Invoke DMAKE [-e environment_options] [target]
1444
1445     where environment_options are:
1446
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
1451
1452     see the makefile for valid combinations
1453
1454     targets: all, demos, lcursesd.lib, manual...
1455         
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
1459
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.
1464
1465 OTHER NOTES:
1466
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.
1471         
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.
1478         
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.
1484         
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.
1491
1492  Added System V color support.
1493
1494 COMPILER-SPECIFIC NOTES:
1495
1496  Microsoft C
1497  -----------
1498
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.
1503
1504  C Set/2
1505  -------
1506
1507  I have only tested the library using the migration libraries. I doubt 
1508  that the demo programs will work without them.
1509
1510  emx
1511  ---
1512
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.
1516
1517 BUGS and UNFINISHED BUSINESS:
1518
1519 - PDC_set_ctrl_break() function does not work under OS/2.
1520
1521 - win_print() and PDC_print() do not work under OS/2.
1522
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?
1525
1526 ACKNOWLEDGEMENTS:
1527
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.
1536
1537 -- Mark Hessling
1538
1539 ------------------------------------------------------------------------
1540
1541 PDCurses 2.0Beta - 1991/12/21
1542 =============================
1543
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.)
1547
1548 Many functions are now macros.  If you want the real thing, #undef the 
1549 macro. (X/Open requirement.)
1550
1551 Merged many sources into current release.
1552
1553 Added many X/Open routines (not quite all yet).
1554
1555 Added internal documentation to all routines.
1556
1557 Added a HISTORY file to the environment.
1558
1559 Added a CONTRIB file to the environment.
1560
1561 ------------------------------------------------------------------------
1562
1563 PDCurses 1.5Beta - 1990/07/14
1564 =============================
1565
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.
1574
1575 -- John 'Frotz' Fa'atuai
1576
1577 ------------------------------------------------------------------------
1578
1579 PCcurses 1.4 - 1990/01/14
1580 =========================
1581
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.
1587
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.
1594
1595   BUG FIXES FROM V.1.3 TO V.1.4:
1596
1597   !!!IMPORTANT CHANGE!!!
1598
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?
1607
1608   (END OF IMPORTANT CHANGE)
1609
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.
1615
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.
1623
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.
1632
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.
1644
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.
1652
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.
1659
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.
1664
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.
1670
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.
1675
1676 ------------------------------------------------------------------------
1677
1678 PCcurses 1.3 - 1988/10/05
1679 =========================
1680
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).
1690
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.
1699
1700   The makefiles for both MSC and TRC have been modified to produce 
1701 warning messages as part of normal compilation.
1702
1703 ------------------------------------------------------------------------
1704
1705 PCcurses 1.2 - 1988/10/02
1706 =========================
1707
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.
1713
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).
1717
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.
1726
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.
1732
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.
1738
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).
1746
1747   The manual file (curses.man) has been changed at appropriate places.
1748
1749   I would like to thank the following persons for their help:
1750
1751         Brandon S. Allbery (alberry@ncoast.UUCP)
1752                 for running comp.binaries.ibm.pc (at that time)
1753                 and comp.source.misc.
1754
1755         Steve Balogh (Steve@cit5.cit.oz.AU)
1756                 for writing a set of manual pages and posting
1757                 them to the net.
1758
1759         Torbjorn Lindh
1760                 for finding bugs and suggesting raw
1761                 character output routines.
1762
1763         Nathan Glasser (nathan@eddie.mit.edu)
1764                 for finding and reporting bugs.
1765
1766         Ingvar Olafsson (...enea!hafro!ingvar)
1767                 for finding and reporting bugs.
1768
1769         Eric Rosco (...enea!ipmoea!ericr)
1770                 for finding and reporting bugs.
1771
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.
1776
1777         N. Dean Pentcheff (dean@violet.berkeley.edu)
1778                 for finding bugs and rewriting cursesio.asm
1779                 for Turbo 'C' 1.5.
1780
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.
1789
1790 ------------------------------------------------------------------------
1791
1792 PCcurses 1.1 - 1988/03/06
1793 =========================
1794
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.
1799
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.
1802
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.
1810
1811   There are three makefiles:
1812
1813         makefile                generic MSC 3.0 makefile
1814         makefile.ms             MSC 4.0 makefile
1815         makefile.tc             Turbo C 1.0 makefile
1816
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
1820
1821         make -f makefile.tc all
1822
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!
1826
1827 ------------------------------------------------------------------------
1828
1829 PCcurses 1.0 - 1987/08/24
1830 =========================
1831
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.
1841
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.
1848
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.
1854
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.
1860
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.
1870
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 
1878 C.
1879
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.
1886
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...
1891
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...
1899
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.
1908
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!
1915
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.
1919
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
1924
1925 -- Bjorn Larsson