diff --git a/HISTORY b/HISTORY index 59892790..d70b5f82 100644 --- a/HISTORY +++ b/HISTORY @@ -1,120 +1,1138 @@ -MH - -991212 2.4 Key modifiers pressed by themselves are now - returned as keys - KEY_SHIFT_L KEY_SHIFT_R - KEY_CONTROL_L KEY_CONTROL_R - KEY_ALT_L KEY_ALT_R - This works on Win32 and X11 ports only - - Added support for lcc-win32, supplied by Matthias Burian - - Added support for MingW32, and CygnusW32 compilers - - Added clipboard support for X11, Win32 and OS/2 ports - - Added ability to get to the input file descriptor - - New function for X11; Xinitscr() which allows standard - X11 switches to be passed to the application - - Added X11 shared library support - -960920 2.3 Added more System V R4 functions - - Rewrote X11 port - - Added Win32 port - original port by Chris Szurgot - some updates by Mark Hessling - some updates by Gurusamy Sarathy - - slk() functions added by Kim Huron - - Support for more and newer versions of compilers - - Added mouse support for X11 and Win32 ports - - Size of chtype now long - -950126 2.2 Added more System V R4 functions - - Added beta Xwindows port - - Changed chtype to long - - Incorporated panels library - - Support for more and newer versions of compilers - -930531 2.1 Added support for djgpp - - Added beta Unix version - - Added OS/2 DLL support. - - Changed behaviour of overlay(), overwrite() and - typeahead() - -921120 2.0 Changed #if to #ifdef/#if defined to make it - easier to add new platforms/compilers. - - Added System V colour support. - - Added OS/2 port. -------- -Frotz - -911221 2.0Beta Changed back from short to int. (int is the - correct size for the default platform. Short might be - too short on some platforms. This is more portable. I, - also, made this mistake.) - - Many functions are now macros. If you want the real - thing, #undef the macro. (X/Open requirement.) - - Merged many sources into current release. - - Added many X/Open routines (not quite all yet). - - Added internal documentation to all routines. - - Added a HISTORY file to the environment. - - Added a CONTRIB file to the environment. - -900714 1.5Beta Added many levels of compiler support. Added mixed - prototypes for all "internal" routines. Removed all - assembly language. Added EGA/VGA support. Converted - all #ifdef to #if in all modules except CURSES.H and - CURSPRIV.H. Always include ASSERT.H. Added support for - an external malloc(), calloc() and free(). Added support - for FAST_VIDEO (direct-memory writes). Added various - memory model support (for FAST_VIDEO). Added much of the - December 1988 X/Open Curses specification. -------- -bl - -900114 1.4 Window origin mod in overlay() and overwrite(), - on public (and very reasonable) request. Swapped - #define'd values of OK and ERR; OK now 1, and - ERR is 0/NULL. Conforms better to UNIX versions. - borderchars[] removed from WINDOW struct since the - border() functions were redefined. Use of short wherever - possible. Portability improvements, mispelled name of - [w]setscrreg(). - -881005 1.3 All modules lint-checked with MSC '-W3' and - turbo'C' '-w -w-pro' switches. Support for border(), - wborder() functions. - -881002 1.2 Rcsid[] string in all modules, for maintenance. - - Support (by #ifdef UCMASM) for uppercase-only assembly - routine names. If UCMASM if defined, all assembler names - are #defined as upper case. Not needed if you do "MASM - /MX. Also missing declaration of cursesscroll(). Fixes - thanks to N.D. Pentcheff - -880306 1.1 'Raw' output routines, revision info in curses.h. - -870515 1.0 Initial Release. +PDCurses 2.7 - 2005/12/30 +========================= + +INTRODUCTION: + + Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses. + Here's a brief summary of changes in this release. (More details are + available in the CVS log and trackers on SourceForge.) + +NEW FEATURES: + +- Functions: delscreen(), getattrs(), has_key(), slk_color(), + wcolor_set(), wtimeout(). + +- Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(), + mvwvline(), timeout(), wresize(). + +- Stub implementations of terminfo functions (including a term.h). + +- More stubs for compatibility: filter(), getwin(), putwin(), + noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(), + scr_set(), use_env(), vidattr(), vidputs(). + +- The terminal's default colors are used as curses' default colors when + the environment variable "PDC_ORIGINAL_COLORS" is set to any value + (Win32 only at the moment). + +- Simplified build system. + +- Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak + files for more info). + +- Minimal implementation of color_content() -- no longer a stub. + +- Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for + DOS/OS2/Win; "enhanced" versions of existing ACS characters used. + +- Support for scroll wheels. + +- Support for Pacific C. + +BUGS FIXED: + +- Builds correctly (including demos) on all tested platforms (see + below); nearly all compiler warnings have been cleaned up; the ptest + demo is built on all platforms; "clean" targets are improved. + +- The ability to build ncurses_tests has been restored (see demos dir). + +- Line-breakout optimization now defaults to off (equivalent to + "typeahead(-1)"), so output is not interrupted by keystrokes (it's + supposed to resume on the next refresh(), which wasn't working). + +- Implicit wrefresh() in wgetch() was not being invoked in nodelay mode. + +- subpad() was erroneously offsetting from the origin coordinates of the + parent pad (which are always -1,-1). + +- In wborder(), whline(), and wvline(), the current (wattrset) attribute + was being used, but not the current background (wbkgd). + +- Allow Russian 'r' character ASCII 0xe0 to be returned. + +- termattrs() now also returns A_UNDERLINE, A_REVERSE. + +- In Win32, with large scrollback buffers set, there was an unwanted + "scrollup" effect on startup. + +- Revamped keyboard handling for Win32. + +- New screen resize method for Win32. + +- napms(), delay_output(), etc. now work with Cygwin. + +- curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode -- + the cursor stayed on. + +- The A_REVERSE attribute was broken in XCurses. + +- On 64-bit systems, XCurses was ignoring every other keystroke. + +- Added focus hints for XCurses. + +- Demos (except for tuidemo) once again have their proper titles in + XCurses (using Xinitscr() instead of the obsolete XCursesProgramName). + +- The 16-bit chtype is a working option again (by removing #define + CHTYPE_LONG from curses.h), except in XCurses. It's not recommended; + but if your needs are limited, it still works. + +- Reset screen size in resetty() under DOS, as in Win32 and OS/2. + +- Changes for cursor size under DOS. + +- Automatic setting of BIOS mode for CGA under DOS now works. + +- The cursor is now always updated in PDC_gotoxy(); this fixes the + problem of missing characters in BIOS mode. + +- Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(), + nl() and nonl() now return OK. + +- ERR and OK are now defined as -1 and 0, respectively, for + compatibility with other curses implementations -- note that this + change is not binary compatible; you'll have to rebuild programs that + use shared/dynamic libraries. + +- Added "const" to prototypes where appropriate. + +- Miscellaneous code cleanup. + +ACKNOWLEDGEMENTS: + + Walter Briscoe + Jean-Pierre Demailly + Ruslan Fedyarov + Warren Gay + Florian Grosse-Coosmann + Vladimir Kokovic + Matt Maloy + K.H. Man + Michael Ryazanov + Ron Thibodeau + Alexandr Zamaraev + + and of course, MARK HESSLING, for his over 13 years of service as the + maintainer of PDCurses. Plus, thanks to all who've reported bugs or + requested features. Apologies to anyone I've forgotten. + + I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS; + DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2; + EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows; + recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++; + and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris. + +-- William McBrine + +------------------------------------------------------------------------ + +PDCurses 2.6 - 2003/01/08 +========================= + +INTRODUCTION: + +This release of PDCurses includes the following changes: + +BUGS FIXED: +- Allow accented characters on Win32 platform when run on non-English keyboards. +- Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned. +- Some bugs with halfdelay() fixed by William McBrine. +- pechochar() should now work correctly. +- redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi +- Don't include "special" characters like KEY_SHIFT_L to be returned in getnstr() + family. Bug 542913 +- Entering TAB in wgetnstr() no longer exceeds requested buffer size. + Bug 489233 +- Fixed bug 550066, scrollok() and pads. + Also beep() called when buffer exceeded. Bug 562041. +- Reverse video of X11 selection reinstated. Pablo Garcia Abio?? +- Right Alt modifier now works like left Alt modifier under Win32 +- Add support for all libXaw replacement libraries with Scrollbar bug. Note + that for this to work, you still have to change the libXaw replacement + libraries to fix the bug :-( +- Don't trap signals in XCurses if calling application has ignored them. Change + by Frank Heckenbach. +- Bug reports from Warren W. Gay: + - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms. + - Fix definition of getsyx() and setsyx() to be consistent with ncurses. Bug 624424. + - Fix definition of echo() and noecho(). Bug 625001. + - Fix definition of keypad() and leaveok(). Bug 632653. + - Missing panel_hidden() prottype. Bug 649320. +- Fixed bug with calling def_prog_mode(), resize_term(), reset_prog_mode(); the resize + details were being lost. + +NEW FEATURES: +- Clipboard support now available on DOS platform, but handled internally to the + currently running process. +- new X11 resource; textCursor, allows the text cursor to be specified as a vertical + bar, or in the standard horizontal bar. Thanks to Frank Heckenbach for the + suggestion. + +NEW COMPILER SUPPORT: +- lcc-win32 now works correctly + +------------------------------------------------------------------------ + +PDCurses 2.5 - 2001/11/26 +========================= + +INTRODUCTION: + +This release of PDCurses includes the following changes: + +Set BASE address for Win32 DLL +Add KEY_SUP and KEY_SDOWN. +Add PDC_set_line_color() +Add blink support as bold background +Add bold colors +Add getbkgd() macro +Add new PDC functions for adding underline, overline, leftline and rightline +Add support for shifted keypad keys. +Allow more keypad keys to work under Win32 +Change Win32 and OS/2 DLL name to curses.dll +Change example resources to allow overriding from the cpmmand line +Changes for building cleanly on OS/2 +Changes to handle building XCurses under AIX +Check if prefresh() and pnoutrefresh() parameters are valid. +Ensure build/install works from any directory +Handle platforms where X11 headers do not typedef XPointer. +Mention that Flexos is likely out-of-date. +Pass delaytenths to XCurses_rawgetch() +Remove boldFont +Updates for cursor blinking and italic. + +BUGS FIXED: + +Fix bug with getting Win32 clipboard contents. Added new PDC_freeclipboard() function. +Fix bug with halfdelay() +Fix bug with mouse interrupting programs that are not trapping mouse events under Win32. +Fix return value from curs_set() +Reverse the left and right pointing bars in ALT_CHARSET + + +NEW COMPILER SUPPORT: + +Add QNX-RTP port + +Makefiles for each platform/compiler option reside in the platform +directory. These all have an extension of .mak. + +------------------------------------------------------------------------ + +PDCurses 2.4 - 2000/01/17 +========================= + +INTRODUCTION: + +This release of PDCurses includes the following changes: + +- full support of X11 selection handling +- removed the need for the cursos2.h file +- enabled the "shifted" key on the numeric keypad +- added native clipboard support for X11, Win32 and OS/2 +- added extra functions for obtaining internal PDCUrses status +- added clipboard and key modifier tests in testcurs.c +- fixes for panel library +- key modifiers pressed by themselves are now returned as keys +- Added X11 shared library support +- Added extra slk formats supported by ncurses +- Fixed bug with resizing the terminal when slk were on. +- Changed behaviour of slk_attrset(), slk_attron() alk_attroff() + functions to work more like ncurses. + +BUGS FIXED: + +some minor bug and portability fixes were included in this release + +NEW FUNCTIONS: + +PDC_getclipboard() and PDC_setclipboard() for accessing the native +clipboard. +PDC_set_title() for setting the title of the window (X11 and Win32 only) +PDC_get_input_fd() for getting the file handle of the PDCurses input +PDC_get_key_modifiers() for getting the keyboard modifier settings at the +time of the last (w)getch() +initscrX() (only for X11 port) which allows standard X11 switches to +be passed to the application + + +NEW COMPILER SUPPORT: + +- MingW32 GNU compiler under Win95/NT +- Cygnus Win32 GNU compiler under Win95/NT +- Borland C++ for OS/2 1.0+ +- lcc-win32 compiler under Win95/NT + +Makefiles for each platform/compiler option reside in the platform +directory. These all have an extension of .mak. + + +ACKNOWLEGEMENTS: (for this release) + +Georg Fuchs for various changes. +Juan David Palomar for pointing out getnstr() was not implemented. +William McBrine for fix to allow black/black as valid color pair. +Peter Preus for pointing out the missing bccos2.mak file. +Laura Michaels for a couple of bug fixes and changes required to support + Mingw32 compiler. +Frank Heckenbach for PDC_get_input_fd() and some portability fixes and + the fixes for panel library. +Matthias Burian for the lcc-win32 compiler support. + +Key modifiers pressed by themselves are now returned as keys +KEY_SHIFT_L KEY_SHIFT_R +KEY_CONTROL_L KEY_CONTROL_R +KEY_ALT_L KEY_ALT_R +This works on Win32 and X11 ports only + +Added support for lcc-win32, supplied by Matthias Burian + +Added support for MingW32, and CygnusW32 compilers + +Added clipboard support for X11, Win32 and OS/2 ports + +Added ability to get to the input file descriptor + +New function for X11; Xinitscr() which allows standard X11 switches to +be passed to the application + +Added X11 shared library support + +------------------------------------------------------------------------ + +PDCurses 2.3 - 1998/07/09 +========================= + +INTRODUCTION: + +This release of PDCurses includes the following changes: + +- the X11 port is now fully functional +- the MS Visual C++ Win32 port now includes a DLL +- both the X11 and Win32 ports support the mouse +- the slk..() functions are now functional +- support for scrollbars under X11 are experimental at this stage + +The name of the statically built library is pdcurses.lib (or pdcurses.a). +The name of the DLL import library (where applicable) is curses.lib. + +BUGS FIXED: + +some minor bugs were corrected in this release + +NEW FUNCTIONS: + +slk..() functions + + +NEW COMPILER SUPPORT: + +- MS Visual C++ under Win95/NT +- Watcom C++ under OS/2, Win32 and DOS +- two EMX ports have been provided: + - OS/2 only using OS/2 APIs + - OS/2 and DOS using EMX video support routines + +Makefiles for each platform/compiler option reside in the platform +directory. These all have an extension of .mak. + + +EXTRA OPTIONS: + +PDCurses recognises two environment variables which determines the +initialisation and finalisation behaviour. These environment variables +do not apply to the X11 port. + + PDC_PRESERVE_SCREEN +If this environment variable is set, PDCurses will not clear the screen +to the default white on black on startup. This allows you to overlay +a window over the top of the existing screen background. + + PDC_RESTORE_SCREEN +If this environment variable is set, PDCurses will take a copy of the +contents of the screen at the time that PDCurses is started; initscr(), +and when endwin() is called, the screen will be restored. + + +ACKNOWLEGEMENTS: (for this release) + +Chris Szurgot for original Win32 port. +Gurusamy Sarathy for some updates to the Win32 port. +Kim Huron for the slk..() functions. +Florian Grosse Coosmann for some bug fixes. +Esa Peuha for reducing compiler warnings. +Augustin Martin Domingo for patches to X11 port to enable accented + characters. + +Added more System V R4 functions + +Rewrote X11 port + +Added Win32 port - original port by Chris Szurgot +some updates by Mark Hessling +some updates by Gurusamy Sarathy + +slk() functions added by Kim Huron + +Support for more and newer versions of compilers + +Added mouse support for X11 and Win32 ports + +Size of chtype now long + +------------------------------------------------------------------------ + +PDCurses 2.2 - 1995/02/12 +========================= + +INTRODUCTION: + + This release of PDCurses has includes a number of major changes: + - the portable library functions are now grouped together into + single files with the same arrangement as System V R4 curses. + - a panels library has been included. This panels library was + written by Warren Tucker. + - quite a few more functions have been supplied by Wade Schauer + and incorporated into release 2.2. Wade also supplied the + support for the Microway NDP C/C++ 32 bit DOS compiler. + - the curses datatype has been changed from an unsigned in to + a long. This allows more attributes to be stored as well as + increasing the number of color-pairs from 32 to 64. + +BUGS FIXED: + + mvwin() checked the wrong coordinates + removed DESQview shadow memory buffer checking + bug in curses.h in #define for wstandout() + lots of others I can't remember + +NEW FUNCTIONS: + + Too many to mention. See intro.man for a complete list of the + functions PDCurses now supports. + +COMPILER SUPPORT: + + DJGPP 1.12 is now supported. The run-time error that caused + programs to crash has been removed. + + emx 0.9a is supported. A program compiled for OS/2 should also + work under DOS if you use the VID=EMX switch when compiling. See + the makefile for details. + + The Microway NDP C/C++ DOS compiler is now supported. Thanks to + Wade Schauer for this port. + + The Watcom C++ 10.0 DOS compiler is now supported. Thanks to + Pieter Kunst for this port. + + The library now has many functions grouped together to reduce the + size of the library and to improve the speed of compilation. + + The "names" of a couple of the compilers in the makefile has + changed; CSET2 is now ICC and GO32 is now GCC. + + The Xwindows port is experimental at the moment. + +EXTRA OPTIONS: + + One difference between the behaviour of PDCurses and Unix curses + is the attributes that are displayed when a character is cleared. + Under Unix curses, no attributes are displayed, so + the result is always black. Under PDCurses, these functions clear + with the current attributes in effect at the time. With the + introduction of the bkgd functions, by default, PDCurses clears + using the value set by (w)bkgd(). To have PDCurses behave the + same way as it did before release 2.2, compile with -DPDCURSES_WCLR + +ACKNOWLEGEMENTS: (for this release) + + Pieter Kunst,David Nugent,Warren Tucker,Darin Haugen,Stefan Strack, + Wade Schauer and others who either allerted me to bugs or supplied + fixes. + +Added more System V R4 functions + +Added beta Xwindows port + +Changed chtype to long + +Incorporated panels library + +Support for more and newer versions of compilers + +------------------------------------------------------------------------ + +PDCurses 2.1 - 1993/06/20 +========================= + +INTRODUCTION: + + The first thing that obviously needs mentioning is the title above. + The current code contains bug fixes for the DOS and OS/2 releases + and also includes an alpha release for Unix. The Unix release uses + another public domain package (mytinfo) to handle the low-level + screen writes. mytinfo was posted to comp.sources.unix (or misc) in + December 1992 or January 1993. Unless you are a glutton for punishment + I would recommend you avoid the Unix port at this stage. + + The other major addition to PDCurses is the support for DJGPP (the + DOS port of GNU C++). Thanks to David Nugent (davidn@csource.oz.au). + + Other additions are copywin() function, function debugging support + and getting the small and medium memory models to work. + The testcurs.c demo program has also been changed significantly and + a new demo program, tuidemo, has been added. + + Some people have suggested including information on where to get + dmake from. oak.oakland.edu in /pub/msdos/c + +OTHER NOTES: + + Under DOS, by default, screen writes to a CGA monitor are done via + the video BIOS rather than by direct video memory writes. This is + due to the CGA "snow" problem. If you have a CGA monitor and do not + suffer from snow, you can compile private\_queryad.c with CGA_DIRECT + defined. This will then use cause PDCurses to write directly to the + CGA video memory. + + Function debugging: Firstly to get function debugging, you have to + compile the library with OPT=N in the makefile. This also turns on + compiler debugging. You can control when you want PDCurses to write + to the debug file (called trace in the current directory) by using + the functions traceon() and traceoff() in your program. + + Microsoft C 6.00 Users note: + ---------------------------- + With the addition of several new functions, using dmake to compile + PDCurses now causes the compiler to run "out of heap space in pass 2". + Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes + this problem; hence the -EM switch. + + Functional changes + ------------------ + A few curses functions have been fixed to exhibit their correct + behaviour and make them more functionally portable with System V + curses. + The functions that have changed are overlay(), overwrite() and + typeahead. + + overlay() and overwrite() + Both of theses functions in PDCurses 2.0 allowed for one window to + be effectively placed on top of another, and the characters in the + first window were overlayed or overwritten starting at 0,0 in both + windows. This behaviour of these functions was not correct. These + functions only operate on windows that physically overlap with + respect to the displayed screen. To achieve the same functionality + as before, use the new function copywin(). See the manual page for + further details. + + typeahead() + This function in PDCurses 2.0 effectively checked to see if there + were any characters remaining in the keyboard buffer. This is not + the behaviour exhibited by System V curses. This function is intended + purely to set a flag so that curses can check while updating the + physical screen if any keyboard input is pending. To achieve the + same effect with typeahead() under PDCurses 2.1 the following code + should be used. + + In place of... + + while(!typeahead(stdin)) + { + /* do something until any key is pressed... */ + } + + use... + + nodelay(stdscr,TRUE); /* getch() to return ERR if no key pending */ + while(getch() == (ERR)) + { + /* do something until any key is pressed... */ + } + + +ACKNOWLEGEMENTS: (in no particlar order) + + Jason Shumate,Pieter Kunst,David Nugent,Andreas Otte, + Pasi Hamalainen,James McLennan,Duane Paulson,Ib Hojme + + Apologies to anyone I may have left out. + +Added support for djgpp + +Added beta Unix version + +Added OS/2 DLL support. + +Changed behaviour of overlay(), overwrite() and typeahead() + +------------------------------------------------------------------------ + +PDCurses 2.0 - 1992/11/23 +========================= + +INTRODUCTION: + + Well, here it finally is; PDCurses v2.0. + + PDCurses v2.0 is an almost total rewrite of PCCurses 1.4 done by John + 'Frotz' Fa'atuai, the previous maintainer. + + This version has been tested with Microsoft C v6.0, QuickC v2.0 and + Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02 + under OS/2 2.0. Also the library has been compiled successfully with + emx 0.8e, C Set/2 and Watcom 9. + Most testing was done with the large memory model where applicable. + The large memory model is probably the best model to use. + + The amount of testing has not been as extensive as I would have + liked, but demands on releasing a product have outweighed the + product's quality. Nothing new with that !! + Hopefully with wider circulation, more bugs will be fixed more quickly. + + I have included just 1 makefile which is suitable for dmake 3.8 for + both DOS and OS/2. The makefile does not rely on customisation of the + dmake.ini file. + + If you discover bugs, and especially if you have fixes, please let me + know ASAP. + + The source to the library is distributed as a zip file made with zip + 1.9. You will need Info-ZIP unzip 5.0 to unzip. + Follow the directions below to compile the library. + +DIRECTIONS: + + 1.Create a new directory in which to unzip pdcurs20.zip. This will + create a curses directory and a number of subdirectories containing + source code for the library and utilities and the documentation. + + 2.Make changes to the makefile where necessary: + Change the MODEL or model macro to the appropriate value (if it + applies to your compiler). Use model for Borland compilers. + + Change any paths in the defined macros to be suitable for your + compiler. + + 3.Invoke DMAKE [-e environment_options] [target] + + where environment_options are: + + OS (host operating system) + COMP (compiler) + OPT (optimised version or debug version) - optional. default Y + TOS (target operating system) - optional. default OS + + see the makefile for valid combinations + + targets: all, demos, lcursesd.lib, manual... + + NB. dmake is case sensitive with targets, so those environments + that use an upper case model value (eg MSC) MUST specify the + library target as for eg. Lcursesd.lib + + The makefile is by default set up for Borland C++. The use of + -e environment_options override these defaults. Of you prefer + you can just change the defaults in the makefile and invoke it + without the -e switch. + +OTHER NOTES: + + The documentation for the library is built into each source file, + a couple of specific doc files and the header files. A program is + supplied (manext) to build the manual. This program gets compiled + when you build the documentation. + + To generate the library response file correctly, I had to write a + quick and dirty program (buildlrf) to achive this. Originally the + makefiles just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" + which appended a suitable line to the response file. Unfortunately + under some combinations of makefiles and command processors (eg. + nmake and 4DOS) the & would get treated as stderr and the echo + command would fail. + + The original source for PDCurses that I received from the previous + maintainer contained support for the FLEXOS operating system. Not + having access to it, I could not test the changes I made so its + support has fallen by the wayside. If you really need to have PDCurses + running under FLEXOS, contact me and I will see what can be arranged. + + Under DOS, by default, screen writes to a CGA monitor are done via + the video BIOS rather than by direct video memory writes. This is + due to the CGA "snow" problem. If you have a CGA monitor and do not + suffer from snow, you can compile private\_queryad.c with CGA_DIRECT + defined. This will then use cause PDCurses to write directly to the + CGA video memory. + +COMPILER-SPECIFIC NOTES: + + Microsoft C + ----------- + It is possible with MSC 6.0 to build the OS/2 libraries and demo + programs from within DOS. This is the only case where it is possible + to specifiy the value of TOS on the command line to be OS2 and the + value of OS be DOS. + + C Set/2 + ------- + I have only tested the library using the migration libraries. I doubt + that the demo programs will work without them. + + emx + --- + Testing has been done with 0.8e of emx together with the 16_to_32 + libraries. + The emx\lib directory should include the vio32.lib and kbd32.lib + libraries from the 16_to_32 package. + +BUGS and UNFINISHED BUSINESS: + + PDC_set_ctrl_break() function does not work under OS/2. + win_print() and PDC_print() do not work under OS/2. + The file todo.man in the doc directory also lists those functions of + System V 3.2 curses not yet implemented. Any volunteers ? + +ACKNOWLEGEMENTS: + + John 'Frotz' Fa'atuai, the previous maintainer for providing an + excellent base for further development. + John Burnell (johnb@kea.am.dsir.govt.nz), for the OS/2 port. + John Steele, Jason (finally NOT a John) Shumate.... + for various fixes and suggestions. + Eberhardt Mattes (author of emx) for allowing code based on his + C library to be included with PDCurses. + Several others for their support, moral and actual. + +Changed #if to #ifdef/#if defined to make it easier to add new +platforms/compilers. + +Added System V colour support. + +Added OS/2 port. + +-- Mark Hessling + +------------------------------------------------------------------------ + +PDCurses 2.0Beta - 1991/12/21 +============================= + +Changed back from short to int. (int is the correct size for the default +platform. Short might be too short on some platforms. This is more +portable. I, also, made this mistake.) + +Many functions are now macros. If you want the real thing, #undef the +macro. (X/Open requirement.) + +Merged many sources into current release. + +Added many X/Open routines (not quite all yet). + +Added internal documentation to all routines. + +Added a HISTORY file to the environment. + +Added a CONTRIB file to the environment. + +------------------------------------------------------------------------ + +PDCurses 1.5Beta - 1990/07/14 +============================= + +Added many levels of compiler support. Added mixed prototypes for all +"internal" routines. Removed all assembly language. Added EGA/VGA +support. Converted all #ifdef to #if in all modules except CURSES.H and +CURSPRIV.H. Always include ASSERT.H. Added support for an external +malloc(), calloc() and free(). Added support for FAST_VIDEO +(direct-memory writes). Added various memory model support (for +FAST_VIDEO). Added much of the December 1988 X/Open Curses +specification. + +-- John 'Frotz' Fa'atuai + +------------------------------------------------------------------------ + +PCCURSES 1.4 - 1990/01/14 +========================= + + This is the release note for the fifth version of PCcurses, v.1.4. +Below this note, the release notes for v.1.0 - v.1.3 are included. Read +those first. + + In PCcurses v.1.4, both portability improvements and bugfixes have +been made. The files have been changed to allow lint-free compilation +with MicroSoft 'C' v.5.1, and with Turbo 'C' v.2.0. The source should +still compile without problems on older compilers, although this has +not been verified. + + The makefiles have been changed to suit both the public release and +the author, who maintains a special kind of libraries for himself. In +the case of MicroSoft 'C', changes were done in the makefile to lower +the warning level to 2 (was 3). This was to avoid ANSI warnings which +are abundant because PCcurses does not attempt to follow strict ANSI +'C' standard. + + BUG FIXES FROM V.1.3 TO V.1.4: + + !!!IMPORTANT CHANGE!!! + + The definitions for OK and ERR in curses.h were exchanged. This was +done to be more consistent with UNIX versions. Also, it permits func- +tions like newwin() and subwin() to return 0 (=NULL) when they fail +due to memory shortage. This incompatibility with UNIX curses was +pointed out by Fred C. Smith. If you have tested success/failure by +comparisons to anything other than ERR and OK, your applications will +need to be be changed on that point. Sorry... but presumably most of +you used the symbolic constants? + + (END OF IMPORTANT CHANGE) + + Fred also pointed out a bug in the file update.c. The bug caused the +first character printed after 'unauthorized' screen changes (like du- +ring a shell escape, for example) to be placed at the wrong screen posi- +tion. This happened even if the normal precautions (clear / touch / re- +fresh) were taken. The problem has now been fixed. + + PCcurses is currently also being used on a 68000 system with hard- +coded ESCape sequences for ANSI terminals. However, int's used by the +68000 C compiler are 32 bits. Therefore int's have been turned into +short's wherever possible in the code (otherwise all window structures +occupy twice as much space as required on the 68000). This does not +affect PC versions since normally both int's and short's are 16 bits +for PC C compilers. + + At some places in the source code there are references made to the +68000 version. There are also a makefile, a curses68.c file, and a +curses68.cmd file. These are for making, low-level I/O, and linking +commands when building the 68000 version. These files are probably +useful to no-one but the author, since it is very specific for it's +special hardware environment. Still in an effort to keep all curses- +related sources in one place they are included. Note however that +PCcurses will not officially support a non-PC environment. + + The file cursesio.c, which was included in the package at revision +level 1.2, and which was to be an alternative to the cursesio.asm +file, has been verified to behave incorrectly in the function +_curseskeytst(). The problem was that the value of 'cflag' does not +contain the proper data for the test that is attempted. Furthermore, +neither Turbo'C' or MicroSoft'C' allows any way to return the data +that is needed, and consequently you should not use cursesio.c. The +best solution is to simply use the ASM version. In v.1.2 and v.1.3, +the user could edit the makefile to select which version he wanted to +use. The makefiles in v.1.4 have removed this possiblity forcing the +use of the ASM file, and cursesio.c has been dropped from the distri- +bution. + + A bug in the wgetstr() function caused PCcurses to echo characters +when reading a keyboard string, even if the echo had been turned off. +Thanks to Per Foreby at Lund University, Sweden, for this. Per also +reported bugs concerning the handling of characters with bit 8 set. +Their ASCII code were considered as lower than 32, so they were +erased etc. like control characters, i.e. erasing two character posi- +tions. The control character test was changed to cope with this. + + The overlay() and overwrite() functions were changed so that the +overlaying window is positioned at it's 'own' coordinates inside the +underlying window (it used to be at the underlying window's [0,0] +position). There is some controversy about this - the documentation +for different curses versions say different things. I think the +choice made is the most reasonable. + + The border() and wborder() functions were changed to actually draw +a border, since this seems to be the correct behaviour of these func- +tions. They used to just set the border characters to be used by +box(). These functions are not present in standard BSD UNIX curses. + + The subwin() function previously did not allow the subwindow to be +as big as the original window in which it was created. This has now +been fixed. There was also the problem that the default size (set by +specifying numlines or numcols (or both) as 0 made the resulting +actual size 1 line/column too small. + + There were a few spelling errors in function names, both in the +function declarations and in curses.h. This was reported by Carlos +Amaral at INESC in Portugal. Thanks! There was also an unnecessary +(but harmless) parameter in a function call at one place. + +Window origin mod in overlay() and overwrite(), on public (and very +reasonable) request. Swapped #define'd values of OK and ERR; OK now 1, +and ERR is 0/NULL. Conforms better to UNIX versions. borderchars[] +removed from WINDOW struct since the border() functions were redefined. +Use of short wherever possible. Portability improvements, mispelled name +of [w]setscrreg(). + +------------------------------------------------------------------------ + +PCCURSES 1.3 - 1988/10/05 +========================= + + This is the release note for the fourth version of PCcurses, v.1.3. +Below this note, the release notes for v.1.0, v.1.1 and v.1.2 are in- +cluded. Read those first. + + The file 'border.c' is now included. It allows you to explicitely speci- +fy what characters should be used as box borders when the box() functions +are called. If the new border characters are non-0, they override the bor- +der characters specified in the box() call. In my understanding, this func- +tionality is required for AT&T UNIX sV.3 compatibility. Thanks for this +goes to Tony L. Hansen (hansen@pegasus.UUCP) for posting an article about +it on UseNet (newsgroup comp.unix.questions; his posting was not related +at all to PCcurses). + + The only other difference between v.1.2 and v.1.3 is that the latter has +been changed to avoid warning diagnostics if the source files are compiled +with warning switches on (for MicroSoft this means '-W3', for Turbo'C' it +means '-w -w-pro'). Of these, the Turbo'C' warning check is clearly to be +used rather than MicroSoft, even if neither of them comes even close to a +real UNIX 'lint'. Some of the warnings in fact indicated real bugs, mostly +functions that did not return correct return values or types. + + The makefiles for both MSC and TRC have been modified to produce warning +messages as part of normal compilation. + +All modules lint-checked with MSC '-W3' and turbo'C' '-w -w-pro' +switches. Support for border(), wborder() functions. + +------------------------------------------------------------------------ + +PCCURSES 1.2 - 1988/10/02 +========================= + + This is the release note for the third version of PCcurses, v.1.2. +Below this note, the release notes for v.1.0 and v.1.1 are included. Read +those first. + + The changes from v.1.1 to v.1.2 are minor. The biggest change is that there +was a bug related to limiting the cursor movement if the application tried to +move it outside the screen (something that should not be done anyway). Such +erronous application behaviour is now handled appropriately. + + All modules have been changed to have a revison string in them, which makes +it easier to determine what version is linked into a program (or what library +version you have). + + There is now a 'cursesio.c' file. That file does the same as 'cursesio.asm' +(i.e. it provides the interface to the lower-level system I/O routines). It +is written in 'C' and thus it is (possibly) more portable than the assembler +version (but still not so portable since it uses 8086 INT XX calls directly). +When one creates new curses libraries, one chooses whether to use the assem- +bler or the 'C' version of cursesio. The choice is made by commenting out the +appropriate dependencies for cursesio.obj, near the end of the makefiles. + + There is now a 'setmode.c' file. That file contains functions that save and +restore terminal modes. They do it into other variables than do savetty() and +resetty(), so one should probably use either savetty()/resetty() or the new +functions only - and not mix the both ways unless one really knows what one +does. + + Diff lists vs v.1.0 are no longer included in the distribution. The make +utility still is. PCcurses v.1.2 still compiles with MicroSoft 'C' v.4.0, +and with Borland Turbo 'C' v.1.0. There is as far as I know no reason to be- +lieve that it does not compile under MicroSoft 'C' v.3.0 and 5.x, or Turbo- +'C' v.1.5, but this has not been tested. + + There are two makefile's included, one for MicroSoft 'C', one for Turbo-'C'. +They are both copies of my personal makefile's, and as such they reflect the +directory structure on my own computer. This will have to be changed before +you run make. Check $(INCDIR) and $(LIBDIR) in particular, and make the choice +of ASM or 'C' cursesio version as mentioned above (the distribution version +uses the 'C version of cursesio). + + The manual file (curses.man) has been changed at appropriate places. + + I would like to thank the following persons for their help: + + Brandon S. Allbery (alberry@ncoast.UUCP) + for running comp.binaries.ibm.pc (at that time) + and comp.source.misc. + + Steve Balogh (Steve@cit5.cit.oz.AU) + for writing a set of manual pages and posting + them to the net. + + Torbjorn Lindh + for finding bugs and suggesting raw + character output routines. + + Nathan Glasser (nathan@eddie.mit.edu) + for finding and reporting bugs. + + Ingvar Olafsson (...enea!hafro!ingvar) + for finding and reporting bugs. + + Eric Rosco (...enea!ipmoea!ericr) + for finding and reporting bugs. + + Steve Creps (creps@silver.bacs.indiana.edu) + for doing a lot of work - among others + posting bug fixes to the net, and writing + the new cursesio.c module. + + N. Dean Pentcheff (dean@violet.berkeley.edu) + for finding bugs and rewriting cursesio.asm + for Turbo 'C' 1.5. + + Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff) + (jeff@ads.arpa) + has had a shareware version of curses deliverable since + about half a year before I released PCcurses 1.0 on Use- + Net. He is very concerned about confusion between the two + packages, and therefore any references on the network + should make clear whether they reference Dean's PCcurses + or Larsson's PCcurses. + +Rcsid[] string in all modules, for maintenance. + +Support (by #ifdef UCMASM) for uppercase-only assembly routine names. If +UCMASM if defined, all assembler names are #defined as upper case. Not +needed if you do "MASM /MX. Also missing declaration of cursesscroll(). +Fixes thanks to N.D. Pentcheff + +------------------------------------------------------------------------ + +PCCURSES 1.1 - 1988/03/06 +========================= + + This is the release note for the second version of PCcurses, v.1.1. +Below this note, the release note for v.1.0 is included. Read that first. +The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes, and +new (non-portable) functions for verbatim IBM character font display have +been added (in charadd.c and charins.c). The manual file (curses.man) has +been changed at appropriate places. + + In the file v10tov11.dif there are listings of the differencies between +version 1.0 and 1.1. The diff listings are in UNIX diff(1) format. + + Version 1.1 compiles with Turbo 'C' v.1.0, as well as MicroSoft 'C' v.3.0 +and v.4.0. On the release disk there is a make.exe utility which is very simi- +lar to UNIX make (If the package was mailed to you, the make utility will be +in uuencoded format - in make.uu - and must be uudecoded first). It is much +more powerful than MicroSoft's different MAKE'S; the latter ones will NOT ge- +nerate libraries properly if used with the PCcurses makefiles. + + There are three makefiles: + + makefile generic MSC 3.0 makefile + makefile.ms MSC 4.0 makefile + makefile.tc Turbo 'C' 1.0 makefile + + To make a library with for example Turbo 'C', make directories to hold .H +and .LIB files (these directories are the 'standard places'), edit makefile.tc +for this, and type + + make -f makefile.tc all + +and libraries for all memory models will be created in the .LIB directory, +while the include files will end up in the .H directory. Also read what is +said about installation below! + +'Raw' output routines, revision info in curses.h. + +------------------------------------------------------------------------ + +PCCURSES 1.0 - 1987/08/24 +========================= + + This is the release notes for the PCcurses v.1.0 cursor/window control +package. PCcurses offers the functionality of UNIX curses, plus some +extras. Normally it should be possible to port curses-based programs from +UNIX curses to PCcurses on the IBM PC without changes. PCcurses is a port/ +rewrite of Pavel Curtis' public domain 'ncurses' package. All the code has +been re-written - it is not just an edit of ncurses (or UNIX curses). I +mention this to clarify any copyright violation claims. The data struc- +tures and ideas are very similar to ncurses. As for UNIX curses, I have +not even seen any sources for it. + + For an introduction to the use of 'curses' and it's derivatives, you +should read 'Screen Updating and Cursor Movement Optimization: A Library +Package' by Kenneth C. R. C. Arnold, which describes the original Berkely +UNIX version of curses. It is available as part of the UNIX manuals. The +other source of information is 'The Ncurses Reference Manual' by Pavel +Curtis. The latter is part of Curtis' ncurses package. + + The only other documentation provided is a 'man' page which describes +all the included functions in a very terse way. In the sources, each +function is preceded by a rather thourough description of what the +function does. I didn't have time to write a nice manual/tutorial - sorry. + + PCcurses is released as a number of source files, a man page, and a make +file. A uuencoded copy of a 'make' utility, and a manpage for the 'make' is +also provided to make it easier to put together PCcurses libraries. Even if +you are not interested in PCcurses, it may be worthwhile to grab the make. + + The makefile assumes the presence of the MicroSoft 'C' compiler (3.0 or +4.0), MicroSoft MASM and LIB, plus some MS-DOS utilities. The reason for +supplying MAKE.EXE is that the MicroSoft 'MAKE:s' are much inferior to a +real UNIX make. The supplied make is a port of a public domain make, pub- +lished on UseNet. It is almost completely compatible with UNIX make. When +generating the curses libraries, the makefile will direct make to do some +directory creating and file copying, and then re-invoke itself with new +targets. The workings of the makefile are not absolutely crystal clear at +first sight... just start it and see what it does. + + For portability, the curses libraries depend on one assembler file for +access to the BIOS routines. There is no support for the EGA, but both +CGA, MGA, and the HGA can be used. The libraries are originally for Micro- +Soft 'C', but all C modules should be portable right away. In the assembler +file, segment names probably need to be changed, and possibly the parameter +passing scheme. I think Turbo C will work right away - as far as I under- +stand, all it's conventions are compatible with MicroSoft C. + + There are some parts left out between ncurses and PCcurses. One is the +support for multiple terminals - not very interesting on a PC anyway. Be- +cause we KNOW what terminal we have, there is no need for a termcap or +termio library. PCcurses also has some things that neither curses nor +ncurses have. Compared to the original UNIX curses, PCcurses has lots +of extras. + + The BIOS routines are used directly, which gives fast screen updates. +PCcurses does not do direct writes to screen RAM - in my opinion it is +a bit ugly to rely that much on hardware compatibility. Anyone could fix +that, of course... + + One of the more serious problems with PCcurses is the way in which nor- +mal, cbreak, and raw input modes are done. All those details are in the +'charget' module - I do raw I/O via the BIOS, and perform any buffering +myself. If an application program uses PCcurses, it should do ALL it's +I/O via PCcurses calls, otherwise the mix of normal and PCcurses I/O may +mess up the display. I think my code is reasonable... comments are welcome, +provided you express them nicely... + + To install, copy all files to a work directory, edit 'makefile' to define +the standard include and library file directory names of your choice (these +directories must exist already, and their path names must be relative to the +root directory, not to the current one). You must also run uudecode on +make.uu, to generate MAKE.EXE. You can do that on your PC, if you have +uudecode there, otherwise you can do it under UNIX and do a binary transfer +to the PC. When you have MAKE.EXE in your work directory (or in your /bin +directory), type make. + + Make will now create 4 sub-directories (one for each memory model), copy +some assembler include files into them, copy two include files to your +include directory, CHDIR to each sub-directory and re-invoke itself with +other make targets to compile and assemble all the source files into the +appropriate directories. Then the library manager is run to create the +library files in your desired library directory. Presto! + + If you only want to generate a library for one memory model, type 'make +small', 'make large', etc. The name of the memory model must be in lower +case, like in the makefile. + + I think the package is fairly well debugged - but then again, that's +what I always think. It was completed in May-87, and no problems found +yet. Now it's your turn... Comments, suggestions and bug reports and +fixes (no flames please) to + +-- Bjorn Larsson diff --git a/readme.now b/readme.now deleted file mode 100644 index fd651b7d..00000000 --- a/readme.now +++ /dev/null @@ -1,1024 +0,0 @@ -PDCurses 2.7 - 2005/12/30 -========================= - -INTRODUCTION: - - Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses. - Here's a brief summary of changes in this release. (More details are - available in the CVS log and trackers on SourceForge.) - -NEW FEATURES: - -- Functions: delscreen(), getattrs(), has_key(), slk_color(), - wcolor_set(), wtimeout(). - -- Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(), - mvwvline(), timeout(), wresize(). - -- Stub implementations of terminfo functions (including a term.h). - -- More stubs for compatibility: filter(), getwin(), putwin(), - noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(), - scr_set(), use_env(), vidattr(), vidputs(). - -- The terminal's default colors are used as curses' default colors when - the environment variable "PDC_ORIGINAL_COLORS" is set to any value - (Win32 only at the moment). - -- Simplified build system. - -- Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak - files for more info). - -- Minimal implementation of color_content() -- no longer a stub. - -- Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for - DOS/OS2/Win; "enhanced" versions of existing ACS characters used. - -- Support for scroll wheels. - -- Support for Pacific C. - -BUGS FIXED: - -- Builds correctly (including demos) on all tested platforms (see - below); nearly all compiler warnings have been cleaned up; the ptest - demo is built on all platforms; "clean" targets are improved. - -- The ability to build ncurses_tests has been restored (see demos dir). - -- Line-breakout optimization now defaults to off (equivalent to - "typeahead(-1)"), so output is not interrupted by keystrokes (it's - supposed to resume on the next refresh(), which wasn't working). - -- Implicit wrefresh() in wgetch() was not being invoked in nodelay mode. - -- subpad() was erroneously offsetting from the origin coordinates of the - parent pad (which are always -1,-1). - -- In wborder(), whline(), and wvline(), the current (wattrset) attribute - was being used, but not the current background (wbkgd). - -- Allow Russian 'r' character ASCII 0xe0 to be returned. - -- termattrs() now also returns A_UNDERLINE, A_REVERSE. - -- In Win32, with large scrollback buffers set, there was an unwanted - "scrollup" effect on startup. - -- Revamped keyboard handling for Win32. - -- New screen resize method for Win32. - -- napms(), delay_output(), etc. now work with Cygwin. - -- curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode -- - the cursor stayed on. - -- The A_REVERSE attribute was broken in XCurses. - -- On 64-bit systems, XCurses was ignoring every other keystroke. - -- Added focus hints for XCurses. - -- Demos (except for tuidemo) once again have their proper titles in - XCurses (using Xinitscr() instead of the obsolete XCursesProgramName). - -- The 16-bit chtype is a working option again (by removing #define - CHTYPE_LONG from curses.h), except in XCurses. It's not recommended; - but if your needs are limited, it still works. - -- Reset screen size in resetty() under DOS, as in Win32 and OS/2. - -- Changes for cursor size under DOS. - -- Automatic setting of BIOS mode for CGA under DOS now works. - -- The cursor is now always updated in PDC_gotoxy(); this fixes the - problem of missing characters in BIOS mode. - -- Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(), - nl() and nonl() now return OK. - -- ERR and OK are now defined as -1 and 0, respectively, for - compatibility with other curses implementations -- note that this - change is not binary compatible; you'll have to rebuild programs that - use shared/dynamic libraries. - -- Added "const" to prototypes where appropriate. - -- Miscellaneous code cleanup. - -ACKNOWLEDGEMENTS: - - Walter Briscoe - Jean-Pierre Demailly - Ruslan Fedyarov - Warren Gay - Florian Grosse-Coosmann - Vladimir Kokovic - Matt Maloy - K.H. Man - Michael Ryazanov - Ron Thibodeau - Alexandr Zamaraev - - and of course, MARK HESSLING, for his over 13 years of service as the - maintainer of PDCurses. Plus, thanks to all who've reported bugs or - requested features. Apologies to anyone I've forgotten. - - I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS; - DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2; - EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows; - recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++; - and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris. - --- William McBrine - ------------------------------------------------------------------------- - -PDCurses 2.6 - 2003/01/08 -========================= - -INTRODUCTION: - -This release of PDCurses includes the following changes: - -BUGS FIXED: -- Allow accented characters on Win32 platform when run on non-English keyboards. -- Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned. -- Some bugs with halfdelay() fixed by William McBrine. -- pechochar() should now work correctly. -- redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi -- Don't include "special" characters like KEY_SHIFT_L to be returned in getnstr() - family. Bug 542913 -- Entering TAB in wgetnstr() no longer exceeds requested buffer size. - Bug 489233 -- Fixed bug 550066, scrollok() and pads. - Also beep() called when buffer exceeded. Bug 562041. -- Reverse video of X11 selection reinstated. Pablo Garcia Abio?? -- Right Alt modifier now works like left Alt modifier under Win32 -- Add support for all libXaw replacement libraries with Scrollbar bug. Note - that for this to work, you still have to change the libXaw replacement - libraries to fix the bug :-( -- Don't trap signals in XCurses if calling application has ignored them. Change - by Frank Heckenbach. -- Bug reports from Warren W. Gay: - - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms. - - Fix definition of getsyx() and setsyx() to be consistent with ncurses. Bug 624424. - - Fix definition of echo() and noecho(). Bug 625001. - - Fix definition of keypad() and leaveok(). Bug 632653. - - Missing panel_hidden() prottype. Bug 649320. -- Fixed bug with calling def_prog_mode(), resize_term(), reset_prog_mode(); the resize - details were being lost. - -NEW FEATURES: -- Clipboard support now available on DOS platform, but handled internally to the - currently running process. -- new X11 resource; textCursor, allows the text cursor to be specified as a vertical - bar, or in the standard horizontal bar. Thanks to Frank Heckenbach for the - suggestion. - -NEW COMPILER SUPPORT: -- lcc-win32 now works correctly - ------------------------------------------------------------------------- - -PDCurses 2.5 - 2001/11/26 -========================= - -INTRODUCTION: - -This release of PDCurses includes the following changes: - -Set BASE address for Win32 DLL -Add KEY_SUP and KEY_SDOWN. -Add PDC_set_line_color() -Add blink support as bold background -Add bold colors -Add getbkgd() macro -Add new PDC functions for adding underline, overline, leftline and rightline -Add support for shifted keypad keys. -Allow more keypad keys to work under Win32 -Change Win32 and OS/2 DLL name to curses.dll -Change example resources to allow overriding from the cpmmand line -Changes for building cleanly on OS/2 -Changes to handle building XCurses under AIX -Check if prefresh() and pnoutrefresh() parameters are valid. -Ensure build/install works from any directory -Handle platforms where X11 headers do not typedef XPointer. -Mention that Flexos is likely out-of-date. -Pass delaytenths to XCurses_rawgetch() -Remove boldFont -Updates for cursor blinking and italic. - -BUGS FIXED: - -Fix bug with getting Win32 clipboard contents. Added new PDC_freeclipboard() function. -Fix bug with halfdelay() -Fix bug with mouse interrupting programs that are not trapping mouse events under Win32. -Fix return value from curs_set() -Reverse the left and right pointing bars in ALT_CHARSET - - -NEW COMPILER SUPPORT: - -Add QNX-RTP port - -Makefiles for each platform/compiler option reside in the platform -directory. These all have an extension of .mak. - ------------------------------------------------------------------------- - -PDCurses 2.4 - 2000/01/17 -========================= - -INTRODUCTION: - -This release of PDCurses includes the following changes: - -- full support of X11 selection handling -- removed the need for the cursos2.h file -- enabled the "shifted" key on the numeric keypad -- added native clipboard support for X11, Win32 and OS/2 -- added extra functions for obtaining internal PDCUrses status -- added clipboard and key modifier tests in testcurs.c -- fixes for panel library -- key modifiers pressed by themselves are now returned as keys -- Added X11 shared library support -- Added extra slk formats supported by ncurses -- Fixed bug with resizing the terminal when slk were on. -- Changed behaviour of slk_attrset(), slk_attron() alk_attroff() - functions to work more like ncurses. - -BUGS FIXED: - -some minor bug and portability fixes were included in this release - -NEW FUNCTIONS: - -PDC_getclipboard() and PDC_setclipboard() for accessing the native -clipboard. -PDC_set_title() for setting the title of the window (X11 and Win32 only) -PDC_get_input_fd() for getting the file handle of the PDCurses input -PDC_get_key_modifiers() for getting the keyboard modifier settings at the -time of the last (w)getch() -initscrX() (only for X11 port) which allows standard X11 switches to -be passed to the application - - -NEW COMPILER SUPPORT: - -- MingW32 GNU compiler under Win95/NT -- Cygnus Win32 GNU compiler under Win95/NT -- Borland C++ for OS/2 1.0+ -- lcc-win32 compiler under Win95/NT - -Makefiles for each platform/compiler option reside in the platform -directory. These all have an extension of .mak. - - -ACKNOWLEGEMENTS: (for this release) - -Georg Fuchs for various changes. -Juan David Palomar for pointing out getnstr() was not implemented. -William McBrine for fix to allow black/black as valid color pair. -Peter Preus for pointing out the missing bccos2.mak file. -Laura Michaels for a couple of bug fixes and changes required to support - Mingw32 compiler. -Frank Heckenbach for PDC_get_input_fd() and some portability fixes and - the fixes for panel library. -Matthias Burian for the lcc-win32 compiler support. - ------------------------------------------------------------------------- - -PDCurses 2.3 - 1998/07/09 -========================= - -INTRODUCTION: - -This release of PDCurses includes the following changes: - -- the X11 port is now fully functional -- the MS Visual C++ Win32 port now includes a DLL -- both the X11 and Win32 ports support the mouse -- the slk..() functions are now functional -- support for scrollbars under X11 are experimental at this stage - -The name of the statically built library is pdcurses.lib (or pdcurses.a). -The name of the DLL import library (where applicable) is curses.lib. - -BUGS FIXED: - -some minor bugs were corrected in this release - -NEW FUNCTIONS: - -slk..() functions - - -NEW COMPILER SUPPORT: - -- MS Visual C++ under Win95/NT -- Watcom C++ under OS/2, Win32 and DOS -- two EMX ports have been provided: - - OS/2 only using OS/2 APIs - - OS/2 and DOS using EMX video support routines - -Makefiles for each platform/compiler option reside in the platform -directory. These all have an extension of .mak. - - -EXTRA OPTIONS: - -PDCurses recognises two environment variables which determines the -initialisation and finalisation behaviour. These environment variables -do not apply to the X11 port. - - PDC_PRESERVE_SCREEN -If this environment variable is set, PDCurses will not clear the screen -to the default white on black on startup. This allows you to overlay -a window over the top of the existing screen background. - - PDC_RESTORE_SCREEN -If this environment variable is set, PDCurses will take a copy of the -contents of the screen at the time that PDCurses is started; initscr(), -and when endwin() is called, the screen will be restored. - - -ACKNOWLEGEMENTS: (for this release) - -Chris Szurgot for original Win32 port. -Gurusamy Sarathy for some updates to the Win32 port. -Kim Huron for the slk..() functions. -Florian Grosse Coosmann for some bug fixes. -Esa Peuha for reducing compiler warnings. -Augustin Martin Domingo for patches to X11 port to enable accented - characters. - ------------------------------------------------------------------------- - -PDCurses 2.2 - 1995/02/12 -========================= - -INTRODUCTION: - - This release of PDCurses has includes a number of major changes: - - the portable library functions are now grouped together into - single files with the same arrangement as System V R4 curses. - - a panels library has been included. This panels library was - written by Warren Tucker. - - quite a few more functions have been supplied by Wade Schauer - and incorporated into release 2.2. Wade also supplied the - support for the Microway NDP C/C++ 32 bit DOS compiler. - - the curses datatype has been changed from an unsigned in to - a long. This allows more attributes to be stored as well as - increasing the number of color-pairs from 32 to 64. - -BUGS FIXED: - - mvwin() checked the wrong coordinates - removed DESQview shadow memory buffer checking - bug in curses.h in #define for wstandout() - lots of others I can't remember - -NEW FUNCTIONS: - - Too many to mention. See intro.man for a complete list of the - functions PDCurses now supports. - -COMPILER SUPPORT: - - DJGPP 1.12 is now supported. The run-time error that caused - programs to crash has been removed. - - emx 0.9a is supported. A program compiled for OS/2 should also - work under DOS if you use the VID=EMX switch when compiling. See - the makefile for details. - - The Microway NDP C/C++ DOS compiler is now supported. Thanks to - Wade Schauer for this port. - - The Watcom C++ 10.0 DOS compiler is now supported. Thanks to - Pieter Kunst for this port. - - The library now has many functions grouped together to reduce the - size of the library and to improve the speed of compilation. - - The "names" of a couple of the compilers in the makefile has - changed; CSET2 is now ICC and GO32 is now GCC. - - The Xwindows port is experimental at the moment. - -EXTRA OPTIONS: - - One difference between the behaviour of PDCurses and Unix curses - is the attributes that are displayed when a character is cleared. - Under Unix curses, no attributes are displayed, so - the result is always black. Under PDCurses, these functions clear - with the current attributes in effect at the time. With the - introduction of the bkgd functions, by default, PDCurses clears - using the value set by (w)bkgd(). To have PDCurses behave the - same way as it did before release 2.2, compile with -DPDCURSES_WCLR - -ACKNOWLEGEMENTS: (for this release) - - Pieter Kunst,David Nugent,Warren Tucker,Darin Haugen,Stefan Strack, - Wade Schauer and others who either allerted me to bugs or supplied - fixes. - - ------------------------------------------------------------------------- - -PDCurses 2.1 - 1993/06/20 -========================= - -INTRODUCTION: - - The first thing that obviously needs mentioning is the title above. - The current code contains bug fixes for the DOS and OS/2 releases - and also includes an alpha release for Unix. The Unix release uses - another public domain package (mytinfo) to handle the low-level - screen writes. mytinfo was posted to comp.sources.unix (or misc) in - December 1992 or January 1993. Unless you are a glutton for punishment - I would recommend you avoid the Unix port at this stage. - - The other major addition to PDCurses is the support for DJGPP (the - DOS port of GNU C++). Thanks to David Nugent (davidn@csource.oz.au). - - Other additions are copywin() function, function debugging support - and getting the small and medium memory models to work. - The testcurs.c demo program has also been changed significantly and - a new demo program, tuidemo, has been added. - - Some people have suggested including information on where to get - dmake from. oak.oakland.edu in /pub/msdos/c - -OTHER NOTES: - - Under DOS, by default, screen writes to a CGA monitor are done via - the video BIOS rather than by direct video memory writes. This is - due to the CGA "snow" problem. If you have a CGA monitor and do not - suffer from snow, you can compile private\_queryad.c with CGA_DIRECT - defined. This will then use cause PDCurses to write directly to the - CGA video memory. - - Function debugging: Firstly to get function debugging, you have to - compile the library with OPT=N in the makefile. This also turns on - compiler debugging. You can control when you want PDCurses to write - to the debug file (called trace in the current directory) by using - the functions traceon() and traceoff() in your program. - - Microsoft C 6.00 Users note: - ---------------------------- - With the addition of several new functions, using dmake to compile - PDCurses now causes the compiler to run "out of heap space in pass 2". - Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes - this problem; hence the -EM switch. - - Functional changes - ------------------ - A few curses functions have been fixed to exhibit their correct - behaviour and make them more functionally portable with System V - curses. - The functions that have changed are overlay(), overwrite() and - typeahead. - - overlay() and overwrite() - Both of theses functions in PDCurses 2.0 allowed for one window to - be effectively placed on top of another, and the characters in the - first window were overlayed or overwritten starting at 0,0 in both - windows. This behaviour of these functions was not correct. These - functions only operate on windows that physically overlap with - respect to the displayed screen. To achieve the same functionality - as before, use the new function copywin(). See the manual page for - further details. - - typeahead() - This function in PDCurses 2.0 effectively checked to see if there - were any characters remaining in the keyboard buffer. This is not - the behaviour exhibited by System V curses. This function is intended - purely to set a flag so that curses can check while updating the - physical screen if any keyboard input is pending. To achieve the - same effect with typeahead() under PDCurses 2.1 the following code - should be used. - - In place of... - - while(!typeahead(stdin)) - { - /* do something until any key is pressed... */ - } - - use... - - nodelay(stdscr,TRUE); /* getch() to return ERR if no key pending */ - while(getch() == (ERR)) - { - /* do something until any key is pressed... */ - } - - -ACKNOWLEGEMENTS: (in no particlar order) - - Jason Shumate,Pieter Kunst,David Nugent,Andreas Otte, - Pasi Hamalainen,James McLennan,Duane Paulson,Ib Hojme - - Apologies to anyone I may have left out. - - ------------------------------------------------------------------------- - -PDCurses 2.0 - 1992/11/23 -========================= - -INTRODUCTION: - - Well, here it finally is; PDCurses v2.0. - - PDCurses v2.0 is an almost total rewrite of PCCurses 1.4 done by John - 'Frotz' Fa'atuai, the previous maintainer. - - This version has been tested with Microsoft C v6.0, QuickC v2.0 and - Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02 - under OS/2 2.0. Also the library has been compiled successfully with - emx 0.8e, C Set/2 and Watcom 9. - Most testing was done with the large memory model where applicable. - The large memory model is probably the best model to use. - - The amount of testing has not been as extensive as I would have - liked, but demands on releasing a product have outweighed the - product's quality. Nothing new with that !! - Hopefully with wider circulation, more bugs will be fixed more quickly. - - I have included just 1 makefile which is suitable for dmake 3.8 for - both DOS and OS/2. The makefile does not rely on customisation of the - dmake.ini file. - - If you discover bugs, and especially if you have fixes, please let me - know ASAP. - - The source to the library is distributed as a zip file made with zip - 1.9. You will need Info-ZIP unzip 5.0 to unzip. - Follow the directions below to compile the library. - -DIRECTIONS: - - 1.Create a new directory in which to unzip pdcurs20.zip. This will - create a curses directory and a number of subdirectories containing - source code for the library and utilities and the documentation. - - 2.Make changes to the makefile where necessary: - Change the MODEL or model macro to the appropriate value (if it - applies to your compiler). Use model for Borland compilers. - - Change any paths in the defined macros to be suitable for your - compiler. - - 3.Invoke DMAKE [-e environment_options] [target] - - where environment_options are: - - OS (host operating system) - COMP (compiler) - OPT (optimised version or debug version) - optional. default Y - TOS (target operating system) - optional. default OS - - see the makefile for valid combinations - - targets: all, demos, lcursesd.lib, manual... - - NB. dmake is case sensitive with targets, so those environments - that use an upper case model value (eg MSC) MUST specify the - library target as for eg. Lcursesd.lib - - The makefile is by default set up for Borland C++. The use of - -e environment_options override these defaults. Of you prefer - you can just change the defaults in the makefile and invoke it - without the -e switch. - -OTHER NOTES: - - The documentation for the library is built into each source file, - a couple of specific doc files and the header files. A program is - supplied (manext) to build the manual. This program gets compiled - when you build the documentation. - - To generate the library response file correctly, I had to write a - quick and dirty program (buildlrf) to achive this. Originally the - makefiles just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" - which appended a suitable line to the response file. Unfortunately - under some combinations of makefiles and command processors (eg. - nmake and 4DOS) the & would get treated as stderr and the echo - command would fail. - - The original source for PDCurses that I received from the previous - maintainer contained support for the FLEXOS operating system. Not - having access to it, I could not test the changes I made so its - support has fallen by the wayside. If you really need to have PDCurses - running under FLEXOS, contact me and I will see what can be arranged. - - Under DOS, by default, screen writes to a CGA monitor are done via - the video BIOS rather than by direct video memory writes. This is - due to the CGA "snow" problem. If you have a CGA monitor and do not - suffer from snow, you can compile private\_queryad.c with CGA_DIRECT - defined. This will then use cause PDCurses to write directly to the - CGA video memory. - -COMPILER-SPECIFIC NOTES: - - Microsoft C - ----------- - It is possible with MSC 6.0 to build the OS/2 libraries and demo - programs from within DOS. This is the only case where it is possible - to specifiy the value of TOS on the command line to be OS2 and the - value of OS be DOS. - - C Set/2 - ------- - I have only tested the library using the migration libraries. I doubt - that the demo programs will work without them. - - emx - --- - Testing has been done with 0.8e of emx together with the 16_to_32 - libraries. - The emx\lib directory should include the vio32.lib and kbd32.lib - libraries from the 16_to_32 package. - -BUGS and UNFINISHED BUSINESS: - - PDC_set_ctrl_break() function does not work under OS/2. - win_print() and PDC_print() do not work under OS/2. - The file todo.man in the doc directory also lists those functions of - System V 3.2 curses not yet implemented. Any volunteers ? - -ACKNOWLEGEMENTS: - - John 'Frotz' Fa'atuai, the previous maintainer for providing an - excellent base for further development. - John Burnell (johnb@kea.am.dsir.govt.nz), for the OS/2 port. - John Steele, Jason (finally NOT a John) Shumate.... - for various fixes and suggestions. - Eberhardt Mattes (author of emx) for allowing code based on his - C library to be included with PDCurses. - Several others for their support, moral and actual. - - --- Mark Hessling - ------------------------------------------------------------------------- - -PCCURSES 1.4 - 1990/01/14 -========================= - - This is the release note for the fifth version of PCcurses, v.1.4. -Below this note, the release notes for v.1.0 - v.1.3 are included. Read -those first. - - In PCcurses v.1.4, both portability improvements and bugfixes have -been made. The files have been changed to allow lint-free compilation -with MicroSoft 'C' v.5.1, and with Turbo 'C' v.2.0. The source should -still compile without problems on older compilers, although this has -not been verified. - - The makefiles have been changed to suit both the public release and -the author, who maintains a special kind of libraries for himself. In -the case of MicroSoft 'C', changes were done in the makefile to lower -the warning level to 2 (was 3). This was to avoid ANSI warnings which -are abundant because PCcurses does not attempt to follow strict ANSI -'C' standard. - - BUG FIXES FROM V.1.3 TO V.1.4: - - !!!IMPORTANT CHANGE!!! - - The definitions for OK and ERR in curses.h were exchanged. This was -done to be more consistent with UNIX versions. Also, it permits func- -tions like newwin() and subwin() to return 0 (=NULL) when they fail -due to memory shortage. This incompatibility with UNIX curses was -pointed out by Fred C. Smith. If you have tested success/failure by -comparisons to anything other than ERR and OK, your applications will -need to be be changed on that point. Sorry... but presumably most of -you used the symbolic constants? - - (END OF IMPORTANT CHANGE) - - Fred also pointed out a bug in the file update.c. The bug caused the -first character printed after 'unauthorized' screen changes (like du- -ring a shell escape, for example) to be placed at the wrong screen posi- -tion. This happened even if the normal precautions (clear / touch / re- -fresh) were taken. The problem has now been fixed. - - PCcurses is currently also being used on a 68000 system with hard- -coded ESCape sequences for ANSI terminals. However, int's used by the -68000 C compiler are 32 bits. Therefore int's have been turned into -short's wherever possible in the code (otherwise all window structures -occupy twice as much space as required on the 68000). This does not -affect PC versions since normally both int's and short's are 16 bits -for PC C compilers. - - At some places in the source code there are references made to the -68000 version. There are also a makefile, a curses68.c file, and a -curses68.cmd file. These are for making, low-level I/O, and linking -commands when building the 68000 version. These files are probably -useful to no-one but the author, since it is very specific for it's -special hardware environment. Still in an effort to keep all curses- -related sources in one place they are included. Note however that -PCcurses will not officially support a non-PC environment. - - The file cursesio.c, which was included in the package at revision -level 1.2, and which was to be an alternative to the cursesio.asm -file, has been verified to behave incorrectly in the function -_curseskeytst(). The problem was that the value of 'cflag' does not -contain the proper data for the test that is attempted. Furthermore, -neither Turbo'C' or MicroSoft'C' allows any way to return the data -that is needed, and consequently you should not use cursesio.c. The -best solution is to simply use the ASM version. In v.1.2 and v.1.3, -the user could edit the makefile to select which version he wanted to -use. The makefiles in v.1.4 have removed this possiblity forcing the -use of the ASM file, and cursesio.c has been dropped from the distri- -bution. - - A bug in the wgetstr() function caused PCcurses to echo characters -when reading a keyboard string, even if the echo had been turned off. -Thanks to Per Foreby at Lund University, Sweden, for this. Per also -reported bugs concerning the handling of characters with bit 8 set. -Their ASCII code were considered as lower than 32, so they were -erased etc. like control characters, i.e. erasing two character posi- -tions. The control character test was changed to cope with this. - - The overlay() and overwrite() functions were changed so that the -overlaying window is positioned at it's 'own' coordinates inside the -underlying window (it used to be at the underlying window's [0,0] -position). There is some controversy about this - the documentation -for different curses versions say different things. I think the -choice made is the most reasonable. - - The border() and wborder() functions were changed to actually draw -a border, since this seems to be the correct behaviour of these func- -tions. They used to just set the border characters to be used by -box(). These functions are not present in standard BSD UNIX curses. - - The subwin() function previously did not allow the subwindow to be -as big as the original window in which it was created. This has now -been fixed. There was also the problem that the default size (set by -specifying numlines or numcols (or both) as 0 made the resulting -actual size 1 line/column too small. - - There were a few spelling errors in function names, both in the -function declarations and in curses.h. This was reported by Carlos -Amaral at INESC in Portugal. Thanks! There was also an unnecessary -(but harmless) parameter in a function call at one place. - ------------------------------------------------------------------------- - -PCCURSES 1.3 - 1988/10/05 -========================= - - This is the release note for the fourth version of PCcurses, v.1.3. -Below this note, the release notes for v.1.0, v.1.1 and v.1.2 are in- -cluded. Read those first. - - The file 'border.c' is now included. It allows you to explicitely speci- -fy what characters should be used as box borders when the box() functions -are called. If the new border characters are non-0, they override the bor- -der characters specified in the box() call. In my understanding, this func- -tionality is required for AT&T UNIX sV.3 compatibility. Thanks for this -goes to Tony L. Hansen (hansen@pegasus.UUCP) for posting an article about -it on UseNet (newsgroup comp.unix.questions; his posting was not related -at all to PCcurses). - - The only other difference between v.1.2 and v.1.3 is that the latter has -been changed to avoid warning diagnostics if the source files are compiled -with warning switches on (for MicroSoft this means '-W3', for Turbo'C' it -means '-w -w-pro'). Of these, the Turbo'C' warning check is clearly to be -used rather than MicroSoft, even if neither of them comes even close to a -real UNIX 'lint'. Some of the warnings in fact indicated real bugs, mostly -functions that did not return correct return values or types. - - The makefiles for both MSC and TRC have been modified to produce warning -messages as part of normal compilation. - ------------------------------------------------------------------------- - -PCCURSES 1.2 - 1988/10/02 -========================= - - This is the release note for the third version of PCcurses, v.1.2. -Below this note, the release notes for v.1.0 and v.1.1 are included. Read -those first. - - The changes from v.1.1 to v.1.2 are minor. The biggest change is that there -was a bug related to limiting the cursor movement if the application tried to -move it outside the screen (something that should not be done anyway). Such -erronous application behaviour is now handled appropriately. - - All modules have been changed to have a revison string in them, which makes -it easier to determine what version is linked into a program (or what library -version you have). - - There is now a 'cursesio.c' file. That file does the same as 'cursesio.asm' -(i.e. it provides the interface to the lower-level system I/O routines). It -is written in 'C' and thus it is (possibly) more portable than the assembler -version (but still not so portable since it uses 8086 INT XX calls directly). -When one creates new curses libraries, one chooses whether to use the assem- -bler or the 'C' version of cursesio. The choice is made by commenting out the -appropriate dependencies for cursesio.obj, near the end of the makefiles. - - There is now a 'setmode.c' file. That file contains functions that save and -restore terminal modes. They do it into other variables than do savetty() and -resetty(), so one should probably use either savetty()/resetty() or the new -functions only - and not mix the both ways unless one really knows what one -does. - - Diff lists vs v.1.0 are no longer included in the distribution. The make -utility still is. PCcurses v.1.2 still compiles with MicroSoft 'C' v.4.0, -and with Borland Turbo 'C' v.1.0. There is as far as I know no reason to be- -lieve that it does not compile under MicroSoft 'C' v.3.0 and 5.x, or Turbo- -'C' v.1.5, but this has not been tested. - - There are two makefile's included, one for MicroSoft 'C', one for Turbo-'C'. -They are both copies of my personal makefile's, and as such they reflect the -directory structure on my own computer. This will have to be changed before -you run make. Check $(INCDIR) and $(LIBDIR) in particular, and make the choice -of ASM or 'C' cursesio version as mentioned above (the distribution version -uses the 'C version of cursesio). - - The manual file (curses.man) has been changed at appropriate places. - - I would like to thank the following persons for their help: - - Brandon S. Allbery (alberry@ncoast.UUCP) - for running comp.binaries.ibm.pc (at that time) - and comp.source.misc. - - Steve Balogh (Steve@cit5.cit.oz.AU) - for writing a set of manual pages and posting - them to the net. - - Torbjorn Lindh - for finding bugs and suggesting raw - character output routines. - - Nathan Glasser (nathan@eddie.mit.edu) - for finding and reporting bugs. - - Ingvar Olafsson (...enea!hafro!ingvar) - for finding and reporting bugs. - - Eric Rosco (...enea!ipmoea!ericr) - for finding and reporting bugs. - - Steve Creps (creps@silver.bacs.indiana.edu) - for doing a lot of work - among others - posting bug fixes to the net, and writing - the new cursesio.c module. - - N. Dean Pentcheff (dean@violet.berkeley.edu) - for finding bugs and rewriting cursesio.asm - for Turbo 'C' 1.5. - - Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff) - (jeff@ads.arpa) - has had a shareware version of curses deliverable since - about half a year before I released PCcurses 1.0 on Use- - Net. He is very concerned about confusion between the two - packages, and therefore any references on the network - should make clear whether they reference Dean's PCcurses - or Larsson's PCcurses. - ------------------------------------------------------------------------- - -PCCURSES 1.1 - 1988/03/06 -========================= - - This is the release note for the second version of PCcurses, v.1.1. -Below this note, the release note for v.1.0 is included. Read that first. -The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes, and -new (non-portable) functions for verbatim IBM character font display have -been added (in charadd.c and charins.c). The manual file (curses.man) has -been changed at appropriate places. - - In the file v10tov11.dif there are listings of the differencies between -version 1.0 and 1.1. The diff listings are in UNIX diff(1) format. - - Version 1.1 compiles with Turbo 'C' v.1.0, as well as MicroSoft 'C' v.3.0 -and v.4.0. On the release disk there is a make.exe utility which is very simi- -lar to UNIX make (If the package was mailed to you, the make utility will be -in uuencoded format - in make.uu - and must be uudecoded first). It is much -more powerful than MicroSoft's different MAKE'S; the latter ones will NOT ge- -nerate libraries properly if used with the PCcurses makefiles. - - There are three makefiles: - - makefile generic MSC 3.0 makefile - makefile.ms MSC 4.0 makefile - makefile.tc Turbo 'C' 1.0 makefile - - To make a library with for example Turbo 'C', make directories to hold .H -and .LIB files (these directories are the 'standard places'), edit makefile.tc -for this, and type - - make -f makefile.tc all - -and libraries for all memory models will be created in the .LIB directory, -while the include files will end up in the .H directory. Also read what is -said about installation below! - ------------------------------------------------------------------------- - -PCCURSES 1.0 - 1987/08/24 -========================= - - This is the release notes for the PCcurses v.1.0 cursor/window control -package. PCcurses offers the functionality of UNIX curses, plus some -extras. Normally it should be possible to port curses-based programs from -UNIX curses to PCcurses on the IBM PC without changes. PCcurses is a port/ -rewrite of Pavel Curtis' public domain 'ncurses' package. All the code has -been re-written - it is not just an edit of ncurses (or UNIX curses). I -mention this to clarify any copyright violation claims. The data struc- -tures and ideas are very similar to ncurses. As for UNIX curses, I have -not even seen any sources for it. - - For an introduction to the use of 'curses' and it's derivatives, you -should read 'Screen Updating and Cursor Movement Optimization: A Library -Package' by Kenneth C. R. C. Arnold, which describes the original Berkely -UNIX version of curses. It is available as part of the UNIX manuals. The -other source of information is 'The Ncurses Reference Manual' by Pavel -Curtis. The latter is part of Curtis' ncurses package. - - The only other documentation provided is a 'man' page which describes -all the included functions in a very terse way. In the sources, each -function is preceded by a rather thourough description of what the -function does. I didn't have time to write a nice manual/tutorial - sorry. - - PCcurses is released as a number of source files, a man page, and a make -file. A uuencoded copy of a 'make' utility, and a manpage for the 'make' is -also provided to make it easier to put together PCcurses libraries. Even if -you are not interested in PCcurses, it may be worthwhile to grab the make. - - The makefile assumes the presence of the MicroSoft 'C' compiler (3.0 or -4.0), MicroSoft MASM and LIB, plus some MS-DOS utilities. The reason for -supplying MAKE.EXE is that the MicroSoft 'MAKE:s' are much inferior to a -real UNIX make. The supplied make is a port of a public domain make, pub- -lished on UseNet. It is almost completely compatible with UNIX make. When -generating the curses libraries, the makefile will direct make to do some -directory creating and file copying, and then re-invoke itself with new -targets. The workings of the makefile are not absolutely crystal clear at -first sight... just start it and see what it does. - - For portability, the curses libraries depend on one assembler file for -access to the BIOS routines. There is no support for the EGA, but both -CGA, MGA, and the HGA can be used. The libraries are originally for Micro- -Soft 'C', but all C modules should be portable right away. In the assembler -file, segment names probably need to be changed, and possibly the parameter -passing scheme. I think Turbo C will work right away - as far as I under- -stand, all it's conventions are compatible with MicroSoft C. - - There are some parts left out between ncurses and PCcurses. One is the -support for multiple terminals - not very interesting on a PC anyway. Be- -cause we KNOW what terminal we have, there is no need for a termcap or -termio library. PCcurses also has some things that neither curses nor -ncurses have. Compared to the original UNIX curses, PCcurses has lots -of extras. - - The BIOS routines are used directly, which gives fast screen updates. -PCcurses does not do direct writes to screen RAM - in my opinion it is -a bit ugly to rely that much on hardware compatibility. Anyone could fix -that, of course... - - One of the more serious problems with PCcurses is the way in which nor- -mal, cbreak, and raw input modes are done. All those details are in the -'charget' module - I do raw I/O via the BIOS, and perform any buffering -myself. If an application program uses PCcurses, it should do ALL it's -I/O via PCcurses calls, otherwise the mix of normal and PCcurses I/O may -mess up the display. I think my code is reasonable... comments are welcome, -provided you express them nicely... - - To install, copy all files to a work directory, edit 'makefile' to define -the standard include and library file directory names of your choice (these -directories must exist already, and their path names must be relative to the -root directory, not to the current one). You must also run uudecode on -make.uu, to generate MAKE.EXE. You can do that on your PC, if you have -uudecode there, otherwise you can do it under UNIX and do a binary transfer -to the PC. When you have MAKE.EXE in your work directory (or in your /bin -directory), type make. - - Make will now create 4 sub-directories (one for each memory model), copy -some assembler include files into them, copy two include files to your -include directory, CHDIR to each sub-directory and re-invoke itself with -other make targets to compile and assemble all the source files into the -appropriate directories. Then the library manager is run to create the -library files in your desired library directory. Presto! - - If you only want to generate a library for one memory model, type 'make -small', 'make large', etc. The name of the memory model must be in lower -case, like in the makefile. - - I think the package is fairly well debugged - but then again, that's -what I always think. It was completed in May-87, and no problems found -yet. Now it's your turn... Comments, suggestions and bug reports and -fixes (no flames please) to - --- Bjorn Larsson