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