Hi Clem,
At 2024-05-25T11:40:13-0400, Clem Cole wrote:
> It was never needed to be ported -- it was developed on V7.
> It was released in comp.sources.unix volume1 as pcurses
This bit conflicts with other accounts. Here's what I have in draft.
HISTORY
4BSD (1980) introduced curses, implemented largely by Kenneth
C. R. C. Arnold, who organized the terminal abstraction and screen
management features of Bill Joy’s vi(1) editor into a library.
That system ran only on the VAX architecture; curses saw a port to
2.9BSD (1983) for the PDP‐11.
System V Release 2 (SVr2, 1984) significantly revised curses and
replaced the termcap portion thereof with a different API for
terminal handling, terminfo. System V added form and menu
libraries in SVr3 (1987) and enhanced curses with color support in
SVr3.2 later the same year. SVr4 (1989) brought the panel library.
pcurses by distinction was, by the accounts I have, a later effort by
Pavel Curtis to clone SVr2 curses by taking BSD curses and replacing its
termcap bits with a reimplementation terminfo. This was apparently done
for licensing reasons, as BSD code was free ("as in freedom") and System
V certainly was not.
The pcurses 0.7 tarball I have contains a document, doc/manual.tbl.ms,
which starts as follows. Note the 2nd and 3rd paragraphs.
.po +.5i
.TL
The Curses Reference Manual
.AU
Pavel Curtis
.NH
Introduction
.LP
Terminfo is a database describing many capabilities of over 150
different terminals. Curses is a subroutine package which
presents a high level screen model to the programmer, while
dealing with issues such as terminal differences and optimization of
output to change one screenfull of text into another.
.LP
Terminfo is based on Berkeley's termcap database, but contains a
number of improvements and extensions. Parameterized strings are
introduced, making it possible to describe such capabilities as
video attributes, and to handle far more unusual terminals than
possible with termcap.
.LP
Curses is also based on Berkeley's curses package, with many
improvements. The package makes use of the insert and delete
line and character features of terminals so equipped, and
determines how to optimally use these features with no help from the
programmer. It allows arbitrary combinations of video attributes
to be displayed, even on terminals that leave ``magic cookies''
on the screen to mark changes in attributes.
> That said, I believe late volumes have nervous updates.
I'm gathering data for another paragraph of that "History" section now.
The long and short of it seems to be that:
BSD curses, besides getting ported to many platforms, begat pcurses.
pcurses begat PCCurses, PDCurses, and ncurses.
PCCurses died.
PDCurses went dormant, begat PDCursesMod, and roused from its slumber.
ncurses, after a long period of erratic early administration that seemed
more concerned with seizing celebrity status for its developers (one of
whom was more single-minded and successful at this goal than the other)
than with software development, has been maintained with a steady hand
over 25 years.
There also exists NetBSD curses, which wasn't developed ex nihilo but
I'm not sure yet what origin it forked from.
Regards,
Branden