1PDCurses 3.4 - 2008/09/08
2=========================
3
4Nothing much new this time, but I've been sitting on some bug fixes for
5almost a year, so it's overdue. Apart from bugs, the main changes are in
6the documentation.
7
8New features:
9
10- setsyx() is now a function rather than a macro.
11
12Bug 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
64PDCurses 3.3 - 2007/07/11
65=========================
66
67This release adds an SDL backend, refines the demos, and is faster in
68some cases.
69
70New 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
102Bug 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
150PDCurses 3.2 - 2007/06/06
151=========================
152
153This release mainly covers changes to the build process, along with a
154few structural changes.
155
156New 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
177Bug 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
214PDCurses 3.1 - 2007/05/03
215=========================
216
217Primarily clipboard-related fixes, and special UTF-8 support.
218
219New 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
235Bug 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
285PDCurses 3.0 - 2007/04/01
286=========================
287
288The focuses for this release are X/Open conformance, i18n, better color
289support, cleaner code, and more consistency across platforms.
290
291This is only a brief summary of the changes. For more details, consult
292the CVS log.
293
294New 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
382Bug 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
627PDCurses 2.8 - 2006/04/01
628=========================
629
630As with the previous version, you should assume that apps linked against
631older dynamic versions of the library won't work with this one until
632recompiled.
633
634New 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
689Bug 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
792PDCurses 2.7 - 2005/12/30
793=========================
794
795INTRODUCTION:
796
797Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses.
798Here's a brief summary of changes in this release. (More details are
799available in the CVS log and trackers on SourceForge.)
800
801NEW 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
833BUGS 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
903ACKNOWLEDGEMENTS:
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
917and of course, MARK HESSLING, for his over 13 years of service as the
918maintainer of PDCurses. Plus, thanks to all who've reported bugs or
919requested features. Apologies to anyone I've forgotten.
920
921I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS;
922DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2;
923EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows;
924recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++;
925and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris.
926
927-- William McBrine
928
929------------------------------------------------------------------------
930
931PDCurses 2.6 - 2003/01/08
932=========================
933
934INTRODUCTION:
935
936 This release of PDCurses includes the following changes:
937
938BUGS 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
982NEW 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
991NEW COMPILER SUPPORT:
992
993- lcc-win32 now works correctly
994
995------------------------------------------------------------------------
996
997PDCurses 2.5 - 2001/11/26
998=========================
999
1000INTRODUCTION:
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
1045BUGS 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
1059NEW COMPILER SUPPORT:
1060
1061- Add QNX-RTP port
1062
1063------------------------------------------------------------------------
1064
1065PDCurses 2.4 - 2000/01/17
1066=========================
1067
1068INTRODUCTION:
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
1099BUGS FIXED:
1100
1101- some minor bug and portability fixes were included in this release
1102
1103NEW 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
1119NEW 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
1129ACKNOWLEDGEMENTS: (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
1143PDCurses 2.3 - 1998/07/09
1144=========================
1145
1146INTRODUCTION:
1147
1148This 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
1166The name of the statically built library is pdcurses.lib (or
1167pdcurses.a). The name of the DLL import library (where applicable) is
1168curses.lib.
1169
1170BUGS FIXED:
1171
1172- some minor bugs were corrected in this release
1173
1174NEW FUNCTIONS:
1175
1176- slk..() functions
1177
1178NEW 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
1188EXTRA OPTIONS:
1189
1190PDCurses recognizes two environment variables which determines the
1191initialization and finalization behavior.  These environment variables
1192do not apply to the X11 port.
1193
1194PDC_PRESERVE_SCREEN -
1195If this environment variable is set, PDCurses will not clear the screen
1196to the default white on black on startup.  This allows you to overlay
1197a window over the top of the existing screen background.
1198
1199PDC_RESTORE_SCREEN -
1200If this environment variable is set, PDCurses will take a copy of the
1201contents of the screen at the time that PDCurses is started; initscr(),
1202and when endwin() is called, the screen will be restored.
1203
1204
1205ACKNOWLEDGEMENTS: (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
1217PDCurses 2.2 - 1995/02/12
1218=========================
1219
1220INTRODUCTION:
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
1240BUGS 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
1249NEW FUNCTIONS:
1250
1251- Too many to mention. See intro.man for a complete list of the
1252  functions PDCurses now supports.
1253
1254COMPILER 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
1275EXTRA 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
1286ACKNOWLEDGEMENTS: (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
1294PDCurses 2.1 - 1993/06/20
1295=========================
1296
1297INTRODUCTION:
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
1317OTHER 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
1387ACKNOWLEDGEMENTS: (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
1396PDCurses 2.0 - 1992/11/23
1397=========================
1398
1399INTRODUCTION:
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
1430DIRECTIONS:
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
1465OTHER 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
1494COMPILER-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
1517BUGS 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
1526ACKNOWLEDGEMENTS:
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
1541PDCurses 2.0Beta - 1991/12/21
1542=============================
1543
1544Changed back from short to int. (int is the correct size for the default
1545platform. Short might be too short on some platforms. This is more
1546portable. I, also, made this mistake.)
1547
1548Many functions are now macros.  If you want the real thing, #undef the
1549macro. (X/Open requirement.)
1550
1551Merged many sources into current release.
1552
1553Added many X/Open routines (not quite all yet).
1554
1555Added internal documentation to all routines.
1556
1557Added a HISTORY file to the environment.
1558
1559Added a CONTRIB file to the environment.
1560
1561------------------------------------------------------------------------
1562
1563PDCurses 1.5Beta - 1990/07/14
1564=============================
1565
1566Added many levels of compiler support. Added mixed prototypes for all
1567"internal" routines. Removed all assembly language.  Added EGA/VGA
1568support.  Converted all #ifdef to #if in all modules except CURSES.H and
1569CURSPRIV.H. Always include ASSERT.H.  Added support for an external
1570malloc(), calloc() and free(). Added support for FAST_VIDEO
1571(direct-memory writes). Added various memory model support (for
1572FAST_VIDEO). Added much of the December 1988 X/Open Curses
1573specification.
1574
1575-- John 'Frotz' Fa'atuai
1576
1577------------------------------------------------------------------------
1578
1579PCcurses 1.4 - 1990/01/14
1580=========================
1581
1582  In PCcurses v.1.4, both portability improvements and bugfixes have
1583been made. The files have been changed to allow lint-free compilation
1584with Microsoft C v.5.1, and with Turbo C v.2.0. The source should still
1585compile without problems on older compilers, although this has not been
1586verified.
1587
1588  The makefiles have been changed to suit both the public release and
1589the author, who maintains a special kind of libraries for himself. In
1590the case of Microsoft C, changes were done in the makefile to lower the
1591warning level to 2 (was 3). This was to avoid ANSI warnings which are
1592abundant because PCcurses does not attempt to follow strict ANSI C
1593standard.
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
1600done to be more consistent with UNIX versions. Also, it permits
1601functions like newwin() and subwin() to return 0 (=NULL) when they fail
1602due to memory shortage. This incompatibility with UNIX curses was
1603pointed out by Fred C. Smith. If you have tested success/failure by
1604comparisons to anything other than ERR and OK, your applications will
1605need to be be changed on that point. Sorry... but presumably most of you
1606used 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
1611first character printed after 'unauthorized' screen changes (like during
1612a shell escape, for example) to be placed at the wrong screen position.
1613This happened even if the normal precautions (clear / touch / refresh)
1614were taken. The problem has now been fixed.
1615
1616  PCcurses is currently also being used on a 68000 system with
1617hard-coded ESCape sequences for ANSI terminals. However, ints used by
1618the 68000 C compiler are 32 bits. Therefore ints have been turned into
1619shorts wherever possible in the code (otherwise all window structures
1620occupy twice as much space as required on the 68000). This does not
1621affect PC versions since normally both ints and shorts are 16 bits for
1622PC C compilers.
1623
1624  At some places in the source code there are references made to the
162568000 version. There are also a makefile, a curses68.c file, and a
1626curses68.cmd file. These are for making, low-level I/O, and linking
1627commands when building the 68000 version. These files are probably
1628useful to no-one but the author, since it is very specific for its
1629special hardware environment. Still in an effort to keep all
1630curses-related sources in one place they are included. Note however that
1631PCcurses will not officially support a non-PC environment.
1632
1633  The file cursesio.c, which was included in the package at revision
1634level 1.2, and which was to be an alternative to the cursesio.asm file,
1635has been verified to behave incorrectly in the function _curseskeytst().
1636The problem was that the value of 'cflag' does not contain the proper
1637data for the test that is attempted. Furthermore, neither Turbo C or
1638Microsoft C allows any way to return the data that is needed, and
1639consequently you should not use cursesio.c. The best solution is to
1640simply use the ASM version. In v.1.2 and v.1.3, the user could edit the
1641makefile to select which version he wanted to use. The makefiles in
1642v.1.4 have removed this possibility forcing the use of the ASM file, and
1643cursesio.c has been dropped from the distribution.
1644
1645  A bug in the wgetstr() function caused PCcurses to echo characters
1646when reading a keyboard string, even if the echo had been turned off.
1647Thanks to Per Foreby at Lund University, Sweden, for this. Per also
1648reported bugs concerning the handling of characters with bit 8 set.
1649Their ASCII code were considered as lower than 32, so they were erased
1650etc. like control characters, i.e. erasing two character positions. The
1651control character test was changed to cope with this.
1652
1653  The overlay() and overwrite() functions were changed so that the
1654overlaying window is positioned at its 'own' coordinates inside the
1655underlying window (it used to be at the underlying window's [0,0]
1656position). There is some controversy about this - the documentation for
1657different curses versions say different things. I think the choice made
1658is the most reasonable.
1659
1660  The border() and wborder() functions were changed to actually draw a
1661border, since this seems to be the correct behavior of these functions.
1662They used to just set the border characters to be used by box(). These
1663functions are not present in standard BSD UNIX curses.
1664
1665  The subwin() function previously did not allow the subwindow to be as
1666big as the original window in which it was created. This has now been
1667fixed. There was also the problem that the default size (set by
1668specifying numlines or numcols (or both) as 0 made the resulting actual
1669size 1 line/column too small.
1670
1671  There were a few spelling errors in function names, both in the
1672function declarations and in curses.h. This was reported by Carlos
1673Amaral at INESC in Portugal. Thanks! There was also an unnecessary (but
1674harmless) parameter in a function call at one place.
1675
1676------------------------------------------------------------------------
1677
1678PCcurses 1.3 - 1988/10/05
1679=========================
1680
1681  The file 'border.c' is now included. It allows you to explicitly
1682specify what characters should be used as box borders when the box()
1683functions are called. If the new border characters are non-0, they
1684override the border characters specified in the box() call. In my
1685understanding, this functionality is required for AT&T UNIX sV.3
1686compatibility. 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
1689PCcurses).
1690
1691  The only other difference between v.1.2 and v.1.3 is that the latter
1692has been changed to avoid warning diagnostics if the source files are
1693compiled with warning switches on (for Microsoft this means '-W3', for
1694Turbo C it means '-w -w-pro'). Of these, the Turbo C warning check is
1695clearly to be used rather than Microsoft, even if neither of them comes
1696even close to a real UNIX 'lint'. Some of the warnings in fact indicated
1697real bugs, mostly functions that did not return correct return values or
1698types.
1699
1700  The makefiles for both MSC and TRC have been modified to produce
1701warning messages as part of normal compilation.
1702
1703------------------------------------------------------------------------
1704
1705PCcurses 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
1709there was a bug related to limiting the cursor movement if the
1710application tried to move it outside the screen (something that should
1711not be done anyway). Such erroneous application behavior is now handled
1712appropriately.
1713
1714  All modules have been changed to have a revision string in them, which
1715makes it easier to determine what version is linked into a program (or
1716what 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
1720I/O routines). It is written in C and thus it is (possibly) more
1721portable than the assembler version (but still not so portable since it
1722uses 8086 INT XX calls directly). When one creates new curses libraries,
1723one chooses whether to use the assembler or the C version of cursesio.
1724The choice is made by commenting out the appropriate dependencies for
1725cursesio.obj, near the end of the makefiles.
1726
1727  There is now a 'setmode.c' file. That file contains functions that
1728save and restore terminal modes. They do it into other variables than do
1729savetty() and resetty(), so one should probably use either
1730savetty()/resetty() or the new functions only - and not mix the both
1731ways unless one really knows what one does.
1732
1733  Diff lists vs v.1.0 are no longer included in the distribution. The
1734make utility still is. PCcurses v.1.2 still compiles with Microsoft C
1735v.4.0, and with Borland Turbo C v.1.0. There is as far as I know no
1736reason to believe that it does not compile under Microsoft C v.3.0 and
17375.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
1740C. They are both copies of my personal makefiles, and as such they
1741reflect the directory structure on my own computer. This will have to be
1742changed before you run make. Check $(INCDIR) and $(LIBDIR) in
1743particular, and make the choice of ASM or C cursesio version as
1744mentioned above (the distribution version uses the C version of
1745cursesio).
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
1792PCcurses 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,
1796and new (non-portable) functions for verbatim IBM character font display
1797have 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
1801version 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
1804and v.4.0. On the release disk there is a make.exe utility which is very
1805similar to UNIX make (If the package was mailed to you, the make utility
1806will be in uuencoded format - in make.uu - and must be uudecoded first).
1807It is much more powerful than Microsoft's different MAKEs; the latter
1808ones will NOT generate libraries properly if used with the PCcurses
1809makefiles.
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
1819makefile.tc for this, and type
1820
1821	make -f makefile.tc all
1822
1823and libraries for all memory models will be created in the .LIB
1824directory, while the include files will end up in the .H directory. Also
1825read what is said about installation below!
1826
1827------------------------------------------------------------------------
1828
1829PCcurses 1.0 - 1987/08/24
1830=========================
1831
1832  This is the release notes for the PCcurses v.1.0 cursor/window control
1833package. PCcurses offers the functionality of UNIX curses, plus some
1834extras. Normally it should be possible to port curses-based programs
1835from UNIX curses to PCcurses on the IBM PC without changes. PCcurses is
1836a port/ rewrite of Pavel Curtis' public domain 'ncurses' package. All
1837the code has been re-written - it is not just an edit of ncurses (or
1838UNIX curses). I mention this to clarify any copyright violation claims.
1839The data structures and ideas are very similar to ncurses. As for UNIX
1840curses, I have not even seen any sources for it.
1841
1842  For an introduction to the use of 'curses' and its derivatives, you
1843should read 'Screen Updating and Cursor Movement Optimization: A Library
1844Package' by Kenneth C. R. C. Arnold, which describes the original
1845Berkeley UNIX version of curses. It is available as part of the UNIX
1846manuals. The other source of information is 'The Ncurses Reference
1847Manual' by Pavel Curtis. The latter is part of Curtis' ncurses package.
1848
1849  The only other documentation provided is a 'man' page which describes
1850all the included functions in a very terse way. In the sources, each
1851function is preceded by a rather thorough description of what the
1852function does. I didn't have time to write a nice manual/tutorial -
1853sorry.
1854
1855  PCcurses is released as a number of source files, a man page, and a
1856make 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
1858libraries. Even if you are not interested in PCcurses, it may be
1859worthwhile to grab the make.
1860
1861  The makefile assumes the presence of the Microsoft C compiler (3.0 or
18624.0), Microsoft MASM and LIB, plus some MS-DOS utilities. The reason for
1863supplying MAKE.EXE is that the Microsoft 'MAKE:s' are much inferior to a
1864real UNIX make. The supplied make is a port of a public domain make,
1865published on Usenet. It is almost completely compatible with UNIX make.
1866When generating the curses libraries, the makefile will direct make to
1867do some directory creating and file copying, and then re-invoke itself
1868with new targets. The workings of the makefile are not absolutely
1869crystal 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
1872access to the BIOS routines. There is no support for the EGA, but both
1873CGA, MGA, and the HGA can be used. The libraries are originally for
1874Microsoft C, but all C modules should be portable right away. In the
1875assembler file, segment names probably need to be changed, and possibly
1876the parameter passing scheme. I think Turbo C will work right away - as
1877far as I understand, all its conventions are compatible with Microsoft
1878C.
1879
1880  There are some parts left out between ncurses and PCcurses. One is the
1881support for multiple terminals - not very interesting on a PC anyway.
1882Because we KNOW what terminal we have, there is no need for a termcap or
1883terminfo library. PCcurses also has some things that neither curses nor
1884ncurses have. Compared to the original UNIX curses, PCcurses has lots of
1885extras.
1886
1887  The BIOS routines are used directly, which gives fast screen updates.
1888PCcurses does not do direct writes to screen RAM - in my opinion it is
1889a bit ugly to rely that much on hardware compatibility. Anyone could fix
1890that, of course...
1891
1892  One of the more serious problems with PCcurses is the way in which
1893normal, cbreak, and raw input modes are done. All those details are in
1894the 'charget' module - I do raw I/O via the BIOS, and perform any
1895buffering myself. If an application program uses PCcurses, it should do
1896ALL its I/O via PCcurses calls, otherwise the mix of normal and
1897PCcurses I/O may mess up the display. I think my code is reasonable...
1898comments are welcome, provided you express them nicely...
1899
1900  To install, copy all files to a work directory, edit 'makefile' to
1901define the standard include and library file directory names of your
1902choice (these directories must exist already, and their path names must
1903be relative to the root directory, not to the current one). You must
1904also run uudecode on make.uu, to generate MAKE.EXE. You can do that on
1905your PC, if you have uudecode there, otherwise you can do it under UNIX
1906and do a binary transfer to the PC. When you have MAKE.EXE in your work
1907directory (or in your /bin directory), type make.
1908
1909  Make will now create 4 sub-directories (one for each memory model),
1910copy some assembler include files into them, copy two include files to
1911your include directory, CHDIR to each sub-directory and re-invoke itself
1912with other make targets to compile and assemble all the source files
1913into the appropriate directories. Then the library manager is run to
1914create 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
1918lower case, like in the makefile.
1919
1920  I think the package is fairly well debugged - but then again, that's
1921what I always think. It was completed in May-87, and no problems found
1922yet. Now it's your turn... Comments, suggestions and bug reports and
1923fixes (no flames please) to
1924
1925-- Bjorn Larsson
1926