summaryrefslogtreecommitdiff
path: root/lib/libcurses
diff options
context:
space:
mode:
authorcgd <cgd@NetBSD.org>1993-11-09 03:36:33 +0000
committercgd <cgd@NetBSD.org>1993-11-09 03:36:33 +0000
commitb4beac8f5fe8499fcd44ff0de7ab2f4ae0861845 (patch)
tree6c7b450a1b08a91b479730612c11d0975976de18 /lib/libcurses
parentc70688046bed3b7a3b85cc1320b1c0026edac386 (diff)
update to new version from berkeley. doesn't compile yet, nor
does it have rcsid's. this is for diffs. new doc layout thang.
Diffstat (limited to 'lib/libcurses')
-rw-r--r--lib/libcurses/PSD.doc/Makefile35
-rw-r--r--lib/libcurses/PSD.doc/Master54
-rw-r--r--lib/libcurses/PSD.doc/appen.A77
-rw-r--r--lib/libcurses/PSD.doc/appen.B201
-rw-r--r--lib/libcurses/PSD.doc/appen.C127
-rw-r--r--lib/libcurses/PSD.doc/appenA77
-rw-r--r--lib/libcurses/PSD.doc/c_macros70
-rw-r--r--lib/libcurses/PSD.doc/doc.I349
-rw-r--r--lib/libcurses/PSD.doc/doc.II142
-rw-r--r--lib/libcurses/PSD.doc/doc.III343
-rw-r--r--lib/libcurses/PSD.doc/doc.IV110
-rw-r--r--lib/libcurses/PSD.doc/ex1.c102
-rw-r--r--lib/libcurses/PSD.doc/ex2.c210
-rw-r--r--lib/libcurses/PSD.doc/fns.doc795
-rw-r--r--lib/libcurses/PSD.doc/intro.0106
-rw-r--r--lib/libcurses/PSD.doc/intro.1249
-rw-r--r--lib/libcurses/PSD.doc/intro.277
-rw-r--r--lib/libcurses/PSD.doc/intro.3228
-rw-r--r--lib/libcurses/PSD.doc/intro.469
-rw-r--r--lib/libcurses/PSD.doc/intro.587
-rw-r--r--lib/libcurses/PSD.doc/intro.644
-rw-r--r--lib/libcurses/PSD.doc/life.c163
-rw-r--r--lib/libcurses/PSD.doc/macros144
-rw-r--r--lib/libcurses/PSD.doc/paper.ps1719
-rw-r--r--lib/libcurses/PSD.doc/twinkle1.c157
-rw-r--r--lib/libcurses/PSD.doc/twinkle2.c96
-rw-r--r--lib/libcurses/PSD.doc/win_st.c58
27 files changed, 5889 insertions, 0 deletions
diff --git a/lib/libcurses/PSD.doc/Makefile b/lib/libcurses/PSD.doc/Makefile
new file mode 100644
index 00000000000..f93ee64ae97
--- /dev/null
+++ b/lib/libcurses/PSD.doc/Makefile
@@ -0,0 +1,35 @@
+# @(#)Makefile 8.1 (Berkeley) 8/14/93
+
+DIR= psd/19.curses
+SRCS= Master
+MACROS= -me
+
+CLEANFILES+=win_st.gr twinkle1.gr twinkle2.gr life.gr intro.2.tbl appen.A.tbl \
+ ex1.gr ex2.gr
+
+.SUFFIXES:
+.SUFFIXES: .c .gr
+
+#
+# this section formats C input source into nice troffable (or nroffable)
+# versions. It uses the capabilites of "vgrind", which sets keywords in
+# bold font, and comments in italics.
+#
+
+# Don't re-run vgrind unless you want to patch the output files.
+VFONT= /usr/libexec/vfontedpr
+.c.gr:
+ ${VFONT} $*.c | grep -v "^'wh" > $*.gr
+
+paper.ps: ${SRCS}
+ ${ROFF} ${SRCS} > ${.TARGET}
+
+Master: twinkle1.gr ex1.gr ex2.gr fns.doc intro.5 intro.2.tbl intro.0 intro.1 \
+ intro.3 intro.4 intro.6 macros c_macros
+
+intro.2.tbl: intro.2
+ ${TBL} intro.2 > intro.2.tbl
+
+.include <bsd.doc.mk>
+
+
diff --git a/lib/libcurses/PSD.doc/Master b/lib/libcurses/PSD.doc/Master
new file mode 100644
index 00000000000..d9e717106c3
--- /dev/null
+++ b/lib/libcurses/PSD.doc/Master
@@ -0,0 +1,54 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)Master 8.1 (Berkeley) 6/8/93
+.\"
+.ds Ln Screen Package
+.so macros
+.so c_macros
+.so intro.0
+.pn 3
+.bp
+.so intro.1
+.so intro.2.tbl
+.so intro.3
+.so intro.4
+.so intro.5
+.so intro.6
+.bp
+.so appen.A
+.pn 2
+.oh '\*(Ln''PS1:19-%'
+.eh 'PS1:19-%''\*(Ln'
+.bp
+.bi Contents
+.sp
+.xp
diff --git a/lib/libcurses/PSD.doc/appen.A b/lib/libcurses/PSD.doc/appen.A
new file mode 100644
index 00000000000..a40c95d7891
--- /dev/null
+++ b/lib/libcurses/PSD.doc/appen.A
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)appen.A 8.1 (Berkeley) 6/8/93
+.\"
+.ie t .oh '\*(Ln Appendix A''PS1:19-%'
+.eh 'PS1:19-%''\*(Ln Appendix A'
+.el .he ''\fIAppendix A\fR''
+.bp
+.(x
+.ti 0
+.b "Appendix A"
+.)x
+.sh 1 "Examples" 1
+.pp
+Here we present a few examples
+of how to use the package.
+They attempt to be representative,
+though not comprehensive. Further examples can be found in the games section
+of the source tree and in various utilities that use the screen such as
+.i systat(1) .
+.pp
+The following examples are intended to demonstrate
+the basic structure of a program
+using the package. An additional, more comprehensive, program can be found in
+the source code in the
+\fIexamples\fP subdirectory.
+.sh 2 "Simple Character Output"
+.pp
+This program demonstrates how to set up a window and output characters to it.
+Also, it demonstrates how one might control the output to the window. If
+you run this program, you will get a demonstration of the character output
+chracteristics discussed in the above Character Output section.
+.(l I
+.so ex1.gr
+.)l
+.sh 2 "Twinkle"
+.pp
+This is a moderately simple program which prints
+patterns on the screen.
+It switches between patterns of asterisks,
+putting them on one by one in random order,
+and then taking them off in the same fashion.
+It is more efficient to write this
+using only the motion optimization,
+as is demonstrated below.
+.(l I
+.so twinkle1.gr
+.)l
diff --git a/lib/libcurses/PSD.doc/appen.B b/lib/libcurses/PSD.doc/appen.B
new file mode 100644
index 00000000000..0f89fa551bb
--- /dev/null
+++ b/lib/libcurses/PSD.doc/appen.B
@@ -0,0 +1,201 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)appen.B 8.1 (Berkeley) 6/8/93
+.\"
+.ie t .oh '\*(Ln Appendix B''PS1:19-%'
+.eh 'PS1:19-%''\*(Ln Appendix B'
+.el .he ''\fIAppendix B\fR''
+.bp
+.(x
+.ti 0
+.b "Appendix B"
+.)x
+.nr $1 0
+.sh 1 "The WINDOW structure"
+.pp
+The WINDOW structure is defined as follows:
+.(l I
+.so win_st.gr
+.)l
+.pp
+.Vn \*_cury \\*
+.(f
+\**
+All variables not normally accessed directly by the user
+are named with an initial
+.Bq \*_
+to avoid conflicts with the user's variables.
+.)f
+and
+.Vn \*_curx
+are the current \*y for the window.
+New characters added to the screen
+are added at this point.
+.Vn \*_maxy
+and
+.Vn \*_maxx
+are the maximum values allowed for
+.Vn \*_cury\*,\*_curx ). (
+.Vn \*_begy
+and
+.Vn \*_begx
+are the starting \*y on the terminal for the window,
+.i i.e. ,
+the window's home.
+.Vn \*_cury ,
+.Vn \*_curx ,
+.Vn \*_maxy ,
+and
+.Vn \*_maxx
+are measured relative to
+.Vn \*_begy\*,\*_begx ), (
+not the terminal's home.
+.pp
+.Vn \*_clear
+tells if a clear-screen sequence is to be generated
+on the next
+.Fn refresh
+call.
+This is only meaningful for screens.
+The initial clear-screen for the first
+.Fn refresh
+call is generated by initially setting clear to be TRUE for
+.Vn curscr ,
+which always generates a clear-screen if set,
+irrelevant of the dimensions of the window involved.
+.Vn \*_leave
+is TRUE if the current \*y and the cursor
+are to be left after the last character changed on the terminal,
+or not moved if there is no change.
+.Vn \*_scroll
+is TRUE
+if scrolling is allowed.
+.pp
+.Vn \*_y
+is a pointer to an array of lines which describe the terminal.
+Thus:
+.(l
+\*_y[i]
+.)l
+.lp
+is a pointer to the
+.Vn i th
+line, and
+.(l
+\*_y[i][j]
+.)l
+.lp
+is the
+.Vn j th
+character on the
+.Vn i th
+line.
+.Vn \*_flags
+can have one or more values
+or'd into it.
+.pp
+For windows that are not subwindows,
+.Vn \*_orig
+is
+NULL .
+For subwindows,
+it points to the main window
+to which the window is subsidiary.
+.Vn \*_nextp
+is a pointer in a circularly linked list
+of all the windows which are subwindows of the same main window,
+plus the main window itself.
+.pp
+.Vn \*_firstch
+and
+.Vn \*_lastch
+are
+.Fn malloc ed
+arrays which contain the index of the
+first and last changed characters
+on the line.
+.Vn \*_ch\*_off
+is the x offset for the window
+in the
+.Vn \*_firstch
+and
+.Vn \*_lastch
+arrays for this window.
+For main windows,
+this is always 0;
+for subwindows
+it is the difference between the starting point of the main window
+and that of the subindow,
+so that change markers can be set relative to the main window.
+This makes these markers global in scope.
+.pp
+All subwindows share the appropriate portions of
+.Vn _y ,
+.Vn _firstch ,
+.Vn _lastch ,
+and
+.Vn _insdel
+with their main window.
+.pp
+.b \*_ENDLINE
+says that the end of the line for this window
+is also the end of a screen.
+.b \*_FULLWIN
+says that this window is a screen.
+.b \*_SCROLLWIN
+indicates that the last character of this screen
+is at the lower right-hand corner of the terminal;
+.i i.e. ,
+if a character was put there,
+the terminal would scroll.
+.b \*_FULLLINE
+says that the width of a line is the same as the width of the terminal.
+If
+.b \*_FLUSH
+is set,
+it says that
+.Fn fflush "" "" stdout
+should be called at the end of each
+.Fn refresh
+.b \*_STANDOUT
+says that all characters added to the screen
+are in standout mode.
+.b \*_INSDEL
+is reserved for future use,
+and is set by
+.Fn idlok .
+.Vn \*_firstch
+is set to
+.b \*_NOCHANGE
+for lines on which there has been no change
+since the last
+.Fn refresh .
diff --git a/lib/libcurses/PSD.doc/appen.C b/lib/libcurses/PSD.doc/appen.C
new file mode 100644
index 00000000000..65bef2bcb98
--- /dev/null
+++ b/lib/libcurses/PSD.doc/appen.C
@@ -0,0 +1,127 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)appen.C 8.1 (Berkeley) 6/8/93
+.\"
+.ie t .oh '\*(Ln Appendix A''PS1:19-%'
+.eh 'PS1:19-%''\*(Ln Appendix A'
+.el .he ''\fIAppendix A\fR''
+.bp
+.(x
+.ti 0
+.b "Appendix A"
+.)x
+.sh 1 "Examples" 1
+.pp
+Here we present a few examples
+of how to use the package.
+They attempt to be representative,
+though not comprehensive. Further examples can be found in the games section
+of the source tree and in various utilities that use the screen such as
+.i systat(1) .
+.sh 2 "Screen Updating"
+.pp
+The following examples are intended to demonstrate
+the basic structure of a program
+using the screen updating sections of the package.
+Several of the programs require calculational sections
+which are irrelevant of to the example,
+and are therefore usually not included.
+It is hoped that the data structure definitions
+give enough of an idea to allow understanding
+of what the relevant portions do.
+.sh 3 "Simple Character Output"
+.pp
+This program demonstrates how to set up a window and output characters to it.
+Also, it demonstrates how one might control the output to the window. If
+you run this program, you will get a demonstration of the character output
+chracteristics discussed in the above Character Output section.
+.(l I
+.so t2.gr
+.)l
+.sh 3 "A Small Screen Manipulator"
+.pp
+The next example follows the lines of the previous one but extends then to
+demonstrate the various othe uses of the package. Make sure you understand
+how this program works as it encompasses most of anything you will
+need to do with the package.
+.(l I
+.so t3.gr
+.)l
+.sh 3 "Twinkle"
+.pp
+This is a moderately simple program which prints
+patterns on the screen.
+It switches between patterns of asterisks,
+putting them on one by one in random order,
+and then taking them off in the same fashion.
+It is more efficient to write this
+using only the motion optimization,
+as is demonstrated below.
+.(l I
+.so twinkle1.gr
+.)l
+.sh 3 "Life"
+.pp
+This program fragment models the famous computer pattern game of life
+(Scientific American, May, 1974).
+The calculational routines create a linked list of structures
+defining where each piece is.
+Nothing here claims to be optimal,
+merely demonstrative.
+This code, however,
+is a very good place to use the screen updating routines,
+as it allows them to worry about what the last position looked like,
+so you don't have to.
+It also demonstrates some of the input routines.
+.(l I
+.so life.gr
+.)l
+.sh 2 "Motion optimization"
+.pp
+The following example shows how motion optimization
+is written on its own.
+Programs which flit from one place to another without
+regard for what is already there
+usually do not need the overhead of both space and time
+associated with screen updating.
+They should instead use motion optimization.
+.sh 3 "Twinkle"
+.pp
+The
+.b twinkle
+program
+is a good candidate for simple motion optimization.
+Here is how it could be written
+(only the routines that have been changed are shown):
+.(l
+.so twinkle2.gr
+.)l
diff --git a/lib/libcurses/PSD.doc/appenA b/lib/libcurses/PSD.doc/appenA
new file mode 100644
index 00000000000..a40c95d7891
--- /dev/null
+++ b/lib/libcurses/PSD.doc/appenA
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)appen.A 8.1 (Berkeley) 6/8/93
+.\"
+.ie t .oh '\*(Ln Appendix A''PS1:19-%'
+.eh 'PS1:19-%''\*(Ln Appendix A'
+.el .he ''\fIAppendix A\fR''
+.bp
+.(x
+.ti 0
+.b "Appendix A"
+.)x
+.sh 1 "Examples" 1
+.pp
+Here we present a few examples
+of how to use the package.
+They attempt to be representative,
+though not comprehensive. Further examples can be found in the games section
+of the source tree and in various utilities that use the screen such as
+.i systat(1) .
+.pp
+The following examples are intended to demonstrate
+the basic structure of a program
+using the package. An additional, more comprehensive, program can be found in
+the source code in the
+\fIexamples\fP subdirectory.
+.sh 2 "Simple Character Output"
+.pp
+This program demonstrates how to set up a window and output characters to it.
+Also, it demonstrates how one might control the output to the window. If
+you run this program, you will get a demonstration of the character output
+chracteristics discussed in the above Character Output section.
+.(l I
+.so ex1.gr
+.)l
+.sh 2 "Twinkle"
+.pp
+This is a moderately simple program which prints
+patterns on the screen.
+It switches between patterns of asterisks,
+putting them on one by one in random order,
+and then taking them off in the same fashion.
+It is more efficient to write this
+using only the motion optimization,
+as is demonstrated below.
+.(l I
+.so twinkle1.gr
+.)l
diff --git a/lib/libcurses/PSD.doc/c_macros b/lib/libcurses/PSD.doc/c_macros
new file mode 100644
index 00000000000..ba6ebbc1922
--- /dev/null
+++ b/lib/libcurses/PSD.doc/c_macros
@@ -0,0 +1,70 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)c_macros 8.1 (Berkeley) 6/4/93
+.\"
+'ie t 'ds _ \d\(mi\u
+'el 'ds _ _
+'tr *\(**
+'ps 9p
+'vs 10p
+'ds - \(mi
+'ds /* \\h'\\w' 'u-\\w'/'u'/*
+'bd B 3
+'bd S B 3
+'nr cm 0
+'nf
+'de ()
+'pn 1
+..
+'de +C
+'nr cm 1
+'ft 2
+'ds +K
+'ds -K
+..
+'de -C
+'nr cm 0
+'ft 1
+.ie t 'ds +K \f3
+.el 'ds +K \fI
+'ds -K \fP
+..
+'+C
+'-C
+'am +C
+'ne 3
+..
+'de -F
+'rm =f
+..
+'ft 1
+'lg 0
diff --git a/lib/libcurses/PSD.doc/doc.I b/lib/libcurses/PSD.doc/doc.I
new file mode 100644
index 00000000000..2345aba9b1c
--- /dev/null
+++ b/lib/libcurses/PSD.doc/doc.I
@@ -0,0 +1,349 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc.I 8.1 (Berkeley) 6/4/93
+.\"
+.Ds
+.Fd addch ch \*m
+char ch;
+.Fd waddch win\*,ch
+WINDOW *win;
+char ch;
+.De
+Add the character
+.Vn ch
+on the window
+at the current \*y.
+If the character is a newline
+(\'\en\')
+the line will be cleared to the end,
+and the current \*y will be changed to the
+beginning off the next line
+if newline mapping is on,
+or to the next line at the same x co-ordinate
+if it is off.
+A return
+(\'\er\')
+will move to the beginning of the line on the window.
+Tabs
+(\'\et\')
+will be expanded into spaces
+in the normal tabstop positions of
+every eight characters.
+\*(Es
+.Ds
+.Fd addstr str \*m
+char *str;
+.Fd waddstr win\*,str
+WINDOW *win;
+char *str;
+.De
+Add the string pointed to by
+.Vn str
+on the window at the current \*y.
+\*(Es
+In this case, it will put on as much as it can.
+.Ds
+.Fd box win\*,vert\*,hor
+WINDOW *win;
+char vert\*,hor;
+.De
+.Pp
+Draws a box around the window using
+.Vn vert
+as the character for drawing the vertical sides, and
+.Vn hor
+for drawing the horizontal lines.
+If scrolling is not allowed,
+and the window encompasses the lower right-hand corner of the terminal,
+the corners are left blank to avoid a scroll.
+.Ds
+.Fd clear "" \*m
+.Fd wclear win
+WINDOW *win;
+.De
+Resets the entire window to blanks.
+If
+.Vn win
+is a screen,
+this sets the clear flag,
+which will cause a clear-screen sequence to be sent
+on the next
+.Fn refresh
+call.
+This also moves the current \*y
+to (0\*,0).
+.Ds
+.Fd clearok scr\*,boolf \*m
+WINDOW *scr;
+bool boolf;
+.De
+Sets the clear flag for the screen
+.Vn scr .
+If
+.Vn boolf
+is TRUE,
+this will force a clear-screen to be printed on the next
+.Fn refresh ,
+or stop it from doing so if
+.Vn boolf
+is FALSE.
+This only works on screens,
+and,
+unlike
+.Fn clear ,
+does not alter the contents of the screen.
+If
+.Vn scr
+is
+.Vn curscr ,
+the next
+.Fn refresh
+call will cause a clear-screen,
+even if the window passed to
+.Fn refresh
+is not a screen.
+.Ds
+.Fd clrtobot "" \*m
+.Fd wclrtobot win
+WINDOW *win;
+.De
+Wipes the window clear from the current \*y to the bottom.
+This does not force a clear-screen sequence on the next refresh
+under any circumstances.
+\*(Nm
+.Ds
+.Fd clrtoeol "" \*m
+.Fd wclrtoeol win
+WINDOW *win;
+.De
+Wipes the window clear from the current \*y to the end of the line.
+\*(Nm
+.Ds
+.Fd delch
+.Fd wdelch win
+WINDOW *win;
+.De
+Delete the character at the current \*y.
+Each character after it on the line shifts to the left,
+and the last character becomes blank.
+.Ds
+.Fd deleteln
+.Fd wdeleteln win
+WINDOW *win;
+.De
+Delete the current line.
+Every line below the current one will move up,
+and the bottom line will become blank.
+The current \*y will remain unchanged.
+.Ds
+.Fd erase "" \*m
+.Fd werase win
+WINDOW *win;
+.De
+Erases the window to blanks without setting the clear flag.
+This is analagous to
+.Fn clear ,
+except that it never causes a clear-screen sequence to be generated
+on a
+.Fn refresh .
+\*(Nm
+.Ds
+.Fd flushok win\*,boolf \*m
+WINDOW *win;
+bool boolf;
+.De
+Normally,
+.Fn refresh
+.Fn fflush 's
+.Vn stdout
+when it is finished.
+.Fn flushok
+allows you to control this.
+if
+.Vn boolf
+is TRUE
+(\c
+.i i.e. ,
+non-zero)
+it will do the
+.Fn fflush ;
+if it is FALSE.
+it will not.
+.Ds
+.Fd idlok win\*,boolf
+WINDOW *win;
+bool boolf;
+.De
+Reserved for future use.
+This will eventually signal to
+.Fn refresh
+that it is all right to use the insert and delete line sequences
+when updating the window.
+.Ds
+.Fd insch c
+char c;
+.Fd winsch win\*,c
+WINDOW *win;
+char c;
+.De
+Insert
+.Vn c
+at the current \*y
+Each character after it shifts to the right,
+and the last character disappears.
+\*(Es
+.Ds
+.Fd insertln
+.Fd winsertln win
+WINDOW *win;
+.De
+Insert a line above the current one.
+Every line below the current line
+will be shifted down,
+and the bottom line will disappear.
+The current line will become blank,
+and the current \*y will remain unchanged.
+.Ds
+.Fd move y\*,x \*m
+int y\*,x;
+.Fd wmove win\*,y\*,x
+WINDOW *win;
+int y\*,x;
+.De
+Change the current \*y of the window to
+.Vn y\*,x ). (
+\*(Es
+.Ds
+.Fd overlay win1\*,win2
+WINDOW *win1\*,*win2;
+.De
+Overlay
+.Vn win1
+on
+.Vn win2 .
+The contents of
+.Vn win1 ,
+insofar as they fit,
+are placed on
+.Vn win2
+at their starting \*y.
+This is done non-destructively,
+i.e., blanks on
+.Vn win1
+leave the contents of the space on
+.Vn win2
+untouched.
+.Ds
+.Fd overwrite win1\*,win2
+WINDOW *win1\*,*win2;
+.De
+Overwrite
+.Vn win1
+on
+.Vn win2 .
+The contents of
+.Vn win1 ,
+insofar as they fit,
+are placed on
+.Vn win2
+at their starting \*y.
+This is done destructively,
+.i i.e. ,
+blanks on
+.Vn win1
+become blank on
+.Vn win2 .
+.Ds
+.Fd printw fmt\*,arg1\*,arg2\*,...
+char *fmt;
+.Fd wprintw win\*,fmt\*,arg1\*,arg2\*,...
+WINDOW *win;
+char *fmt;
+.De
+Performs a
+.Fn printf
+on the window starting at the current \*y.
+It uses
+.Fn addstr
+to add the string on the window.
+It is often advisable to use the field width options of
+.Fn printf
+to avoid leaving things on the window from earlier calls.
+\*(Es
+.Ds
+.Fd refresh "" \*m
+.Fd wrefresh win
+WINDOW *win;
+.De
+Synchronize the terminal screen with the desired window.
+If the window is not a screen,
+only that part covered by it is updated.
+\*(Es
+In this case, it will update whatever it can
+without causing the scroll.
+.sp
+As a special case,
+if
+.Fn wrefresh
+is called with the window
+.Vn curscr
+the screen is cleared
+and repainted as it is currently.
+This is very useful for allowing the redrawing of the screen
+when the user has garbage dumped on his terminal.
+.Ds
+.Fd standout "" \*m
+.Fd wstandout win
+WINDOW *win;
+.Fd standend "" \*m
+.Fd wstandend win
+WINDOW *win;
+.De
+Start and stop putting characters onto
+.i win
+in standout mode.
+.Fn standout
+causes any characters added to the window
+to be put in standout mode on the terminal
+(if it has that capability).
+.Fn standend
+stops this.
+The sequences
+.Vn SO
+and
+.Vn SE
+(or
+.Vn US
+and
+.Vn UE
+if they are not defined)
+are used (see Appendix A).
diff --git a/lib/libcurses/PSD.doc/doc.II b/lib/libcurses/PSD.doc/doc.II
new file mode 100644
index 00000000000..1f6880247bc
--- /dev/null
+++ b/lib/libcurses/PSD.doc/doc.II
@@ -0,0 +1,142 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc.II 8.1 (Berkeley) 6/4/93
+.\"
+.Ds
+.Fd cbreak "" \*m
+.Fd nocbreak "" \*m
+.Fd crmode "" \*m
+.Fd nocrmode "" \*m
+.De
+Set or unset the terminal to/from cbreak mode.
+The misnamed macros
+.Fn crmode
+and
+.Fn nocrmode
+are retained for backwards compatibility
+with ealier versions of the library.
+.Ds
+.Fd echo "" \*m
+.Fd noecho "" \*m
+.De
+Sets the terminal to echo or not echo characters.
+.Ds
+.Fd getch "" \*m
+.Fd wgetch win
+WINDOW *win;
+.De
+Gets a character from the terminal and (if necessary)
+echos it on the window.
+\*(Es
+Otherwise, the character gotten is returned.
+If
+.i noecho
+has been set, then the window is left unaltered.
+In order to retain control of the terminal,
+it is necessary to have one of
+.i noecho ,
+.i cbreak ,
+or
+.i rawmode
+set.
+If you do not set one,
+whatever routine you call to read characters will set
+.i cbreak
+for you,
+and then reset to the original mode when finished.
+.Ds
+.Fd getstr str \*m
+char *str;
+.Fd wgetstr win\*,str
+WINDOW *win;
+char *str;
+.De
+Get a string through the window
+and put it in the location pointed to by
+.Vn str ,
+which is assumed to be large enough to handle it.
+It sets tty modes if necessary,
+and then calls
+.Fn getch
+(or
+.Fn wgetch ) "" win
+to get the characters needed to fill in the string
+until a newline or EOF is encountered.
+The newline stripped off the string.
+\*(Es
+.Ds
+.Fd \*_putchar c
+char c;
+.De
+Put out a character using the
+.Fn putchar
+macro.
+This function is used to output every character
+that
+.b curses
+generates.
+Thus,
+it can be redefined by the user who wants to do non-standard things
+with the output.
+It is named with an initial \*(lq\*_\*(rq
+because it usually should be invisible to the programmer.
+.Ds
+.Fd raw "" \*m
+.Fd noraw "" \*m
+.De
+Set or unset the terminal to/from raw mode.
+On version 7
+.Un \**
+.(f
+\**
+.Un
+is a trademark of Bell Laboratories.
+.)f
+this also turns of newline mapping
+(see
+.Fn nl ).
+.Ds
+.Fd scanw fmt\*,arg1\*,arg2\*,...
+char *fmt;
+.Fd wscanw win\*,fmt\*,arg1\*,arg2\*,...
+WINDOW *win;
+char *fmt;
+.De
+Perform a
+.Fn scanf
+through the window using
+.Vn fmt .
+It does this using consecutive
+.Fn getch 's
+(or
+.Fn wgetch 's). "" win
+\*(Es
diff --git a/lib/libcurses/PSD.doc/doc.III b/lib/libcurses/PSD.doc/doc.III
new file mode 100644
index 00000000000..7d710d49dbc
--- /dev/null
+++ b/lib/libcurses/PSD.doc/doc.III
@@ -0,0 +1,343 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc.III 8.1 (Berkeley) 6/4/93
+.\"
+.Ds
+.Fd baudrate "" \*m
+.De
+Returns the output baud rate of the terminal.
+This is a system dependent constant
+(defined in
+.b <sys/tty.h>
+on BSD systems,
+which is included by
+.b <curses.h> ).
+.Ds
+.Fd delwin win
+WINDOW *win;
+.De
+Deletes the window from existence.
+All resources are freed for future use by
+.b calloc (3).
+If a window has a
+.Fn subwin
+allocated window inside of it,
+deleting the outer window
+the subwindow is not affected,
+even though this does invalidate it.
+Therefore,
+subwindows should be deleted before their
+outer windows are.
+.Ds
+.Fd endwin
+.De
+Finish up window routines before exit.
+This restores the terminal to the state it was before
+.Fn initscr
+(or
+.Fn gettmode
+and
+.Fn setterm )
+was called.
+It should always be called before exiting.
+It does not exit.
+This is especially useful for resetting tty stats
+when trapping rubouts via
+.b signal (2).
+.Ds
+.Fd erasechar "" \*m
+.De
+Returns the erase character
+for the terminal,
+.i i.e. ,
+the character used by the user to erase a single character from the input.
+.Ds
+.Fd getcap str "" "char *"
+char *str;
+.De
+Return a pointer to the
+.b termcap
+capability described by
+.Vn str
+(see
+.b termcap (5)
+for details).
+.Ds
+.Fd getyx win\*,y\*,x \*m
+WINDOW *win;
+int y\*,x;
+.De
+Puts the current \*y of
+.Vn win
+in the variables
+.Vn y
+and
+.Vn x .
+Since it is a macro,
+not a function,
+you do not pass the address
+of
+.Vn y
+and
+.Vn x .
+.Ds
+.Fd inch "" \*m
+.Fd winch win \*m
+WINDOW *win;
+.De
+Returns the character at the current \*(y
+on the given window.
+This does not make any changes to the window.
+.Ds
+.Fd initscr
+.De
+Initialize the screen routines.
+This must be called before any of the screen routines are used.
+It initializes the terminal-type data and such,
+and without it none of the routines can operate.
+If standard input is not a tty,
+it sets the specifications to the terminal
+whose name is pointed to by
+.Vn Def\*_term
+(initialy "dumb").
+If the boolean
+.Vn My\*_term
+is true,
+.Vn Def\*_term
+is always used.
+If the system supports the
+.b TIOCGWINSZ
+.Fn ioctl "" "" 2
+call,
+it is used to get the number of lines and columns for the terminal,
+otherwise it is taken from the
+.b termcap
+description.
+.Ds
+.Fd killchar "" \*m
+.De
+Returns the line kill character
+for the terminal,
+.i i.e. ,
+the character used by the user to erase an entire line from the input.
+.Ds
+.Fd leaveok win\*,boolf \*m
+WINDOW *win;
+bool boolf;
+.De
+Sets the boolean flag for leaving the cursor after the last change.
+If
+.Vn boolf
+is TRUE,
+the cursor will be left after the last update on the terminal,
+and the current \*y for
+.Vn win
+will be changed accordingly.
+If it is FALSE,
+it will be moved to the current \*y.
+This flag
+(initialy FALSE)
+retains its value until changed by the user.
+.Ds
+.Fd longname termbuf\*,name
+char *termbuf\*,*name;
+.Fd fullname termbuf\*,name
+char *termbuf\*,*name;
+.De
+.Fn longname
+fills in
+.Vn name
+with the long name of the terminal described by the
+.b termcap
+entry in
+.Vn termbuf .
+It is generally of little use,
+but is nice for telling the user in a readable format what terminal
+we think he has.
+This is available in the global variable
+.Vn ttytype .
+.Vn termbuf
+is usually set via the termlib routine
+.Fn tgetent .
+.Fn fullname
+is the same as
+.Fn longname ,
+except that it gives the fullest name given in the entry,
+which can be quite verbose.
+.Ds
+.Fd mvwin win\*,y\*,x
+WINDOW *win;
+int y, x;
+.De
+Move the home position of the window
+.Vn win
+from its current starting coordinates
+to
+.Vn y\*,x ). (
+If that would put part or all of the window
+off the edge of the terminal screen,
+.Fn mvwin
+returns ERR and does not change anything.
+For subwindows,
+.Fn mvwin
+also returns ERR if you attempt to move it off its main window.
+If you move a main window,
+all subwindows are moved along with it.
+.Ds
+.Fd newwin lines\*,cols\*,begin\*_y\*,begin\*_x "" "WINDOW *"
+int lines\*,cols\*,begin\*_y\*,begin\*_x;
+.De
+Create a new window with
+.Vn lines
+lines and
+.Vn cols
+columns starting at position
+.Vn begin\*_y\*,begin\*_x ). (
+If either
+.Vn lines
+or
+.Vn cols
+is 0 (zero),
+that dimension will be set to
+.Vn "LINES \- begin\*_y" ) (
+or
+.Vn "COLS \- begin\*_x" ) (
+respectively.
+Thus, to get a new window of dimensions
+.Vn LINES
+\(mu
+.Vn COLS ,
+use
+.Fn newwin . "" 0\*,0\*,0\*,0
+.Ds
+.Fd nl "" \*m
+.Fd nonl "" \*m
+.De
+Set or unset the terminal to/from nl mode,
+.i i.e. ,
+start/stop the system from mapping
+.b <RETURN>
+to
+.b <LINE-FEED> .
+If the mapping is not done,
+.Fn refresh
+can do more optimization,
+so it is recommended, but not required, to turn it off.
+.Ds
+.Fd scrollok win\*,boolf \*m
+WINDOW *win;
+bool boolf;
+.De
+Set the scroll flag for the given window.
+If
+.Vn boolf
+is FALSE, scrolling is not allowed.
+This is its default setting.
+.Ds
+.Fd touchline win\*,y\*,startx\*,endx
+WINDOW *win;
+int y\*,startx\*,endx;
+.De
+This function performs a function similar to
+.Fn touchwin
+on a single line.
+It marks the first change for the given line
+to be
+.Vn startx ,
+if it is before the current first change mark,
+and
+the last change mark is set to be
+.Vn endx
+if it is currently less than
+.Vn endx .
+.Ds
+.Fd touchoverlap win1\*,win2
+WINDOW *win1, *win2;
+.De
+Touch the window
+.Vn win2
+in the area which overlaps with
+.Vn win1 .
+If they do not overlap,
+no changes are made.
+.Ds
+.Fd touchwin win
+WINDOW *win;
+.De
+Make it appear that the every location on the window
+has been changed.
+This is usually only needed for refreshes with overlapping windows.
+.Ds
+.Fd subwin win\*,lines\*,cols\*,begin\*_y\*,begin\*_x "" "WINDOW *"
+WINDOW *win;
+int lines\*,cols\*,begin\*_y\*,begin\*_x;
+.De
+Create a new window with
+.Vn lines
+lines and
+.Vn cols
+columns starting at position
+.Vn begin\*_y\*,begin\*_x ) (
+inside the window
+.i win .
+This means that any change made to either window
+in the area covered
+by the subwindow will be made on both windows.
+.Vn begin\*_y\*,begin\*_x
+are specified relative to the overall screen,
+not the relative (0\*,0) of
+.Vn win .
+If either
+.Vn lines
+or
+.Vn cols
+is 0 (zero),
+that dimension will be set to
+.Vn "LINES \- begin\*_y" ) (
+or
+.Vn "COLS \- begin\*_x" ) (
+respectively.
+.Ds
+.Fd unctrl ch \*m
+char ch;
+.De
+This is actually a debug function for the library,
+but it is of general usefulness.
+It returns a string which is a representation of
+.Vn ch .
+Control characters become their upper-case equivalents preceded by a "^".
+Other letters stay just as they are.
+To use
+.Fn unctrl ,
+you may have to have
+.b #include\ <unctrl.h>
+in your file.
diff --git a/lib/libcurses/PSD.doc/doc.IV b/lib/libcurses/PSD.doc/doc.IV
new file mode 100644
index 00000000000..717a9863abb
--- /dev/null
+++ b/lib/libcurses/PSD.doc/doc.IV
@@ -0,0 +1,110 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)doc.IV 8.1 (Berkeley) 6/4/93
+.\"
+.Ds
+.Fd gettmode
+.De
+Get the tty stats.
+This is normally called by
+.Fn initscr .
+.Ds
+.Fd mvcur lasty\*,lastx\*,newy\*,newx
+int lasty\*,lastx\*,newy\*,newx;
+.De
+Moves the terminal's cursor from
+.Vn lasty\*,lastx ) (
+to
+.Vn newy\*,newx ) (
+in an approximation of optimal fashion.
+This routine uses the functions borrowed from
+.i ex
+version 2.6.
+It is possible to use this optimization
+without the benefit of the screen routines.
+With the screen routines, this should not be called by the user.
+.Fn move
+and
+.Fn refresh
+should be used to move the cursor position,
+so that the routines know what's going on.
+.Ds
+.Fd scroll win
+WINDOW *win;
+.De
+Scroll the window upward one line.
+This is normally not used by the user.
+.Ds
+.Fd savetty "" \*m
+.Fd resetty "" \*m
+.De
+.Fn savetty
+saves the current tty characteristic flags.
+.Fn resetty
+restores them to what
+.Fn savetty
+stored.
+These functions are performed automatically by
+.Fn initscr
+and
+.Fn endwin .
+.Ds
+.Fd setterm name
+char *name;
+.De
+Set the terminal characteristics to be those of the terminal named
+.Vn name ,
+getting the terminal size from the
+.b TIOCGWINSZ
+.Fn ioctl "" "" 2
+if it exists,
+otherwise from the environment.
+This is normally called by
+.Fn initscr .
+.Ds
+.Fd tstp
+.De
+If the new
+.b tty (4)
+driver is in use,
+this function
+will save the current tty state
+and then put the process to sleep.
+When the process gets restarted,
+it restores the tty state
+and then calls
+.Fn wrefresh "" "" curscr
+to redraw the screen.
+.Fn initscr
+sets the signal
+SIGTSTP
+to trap to this routine.
diff --git a/lib/libcurses/PSD.doc/ex1.c b/lib/libcurses/PSD.doc/ex1.c
new file mode 100644
index 00000000000..02ed9b936bd
--- /dev/null
+++ b/lib/libcurses/PSD.doc/ex1.c
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1992, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)ex1.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <curses.h>
+#include <stdio.h>
+#include <signal.h>
+
+
+#define YSIZE 10
+#define XSIZE 20
+
+int quit();
+
+main()
+{
+ int i, j, c;
+ size_t len;
+ char id[100];
+ FILE *fp;
+ char *s;
+
+ initscr(); /* Always call initscr() first */
+ signal(SIGINT, quit); /* Make sure wou have a 'cleanup' fn */
+ crmode(); /* We want cbreak mode */
+ noecho(); /* We want to have control of chars */
+ delwin(stdscr); /* Create our own stdscr */
+ stdscr = newwin(YSIZE, XSIZE, 10, 35);
+ flushok(stdscr, TRUE); /* Enable flushing of stdout */
+ scrollok(stdscr, TRUE); /* Enable scrolling */
+ erase(); /* Initially, clear the screen */
+
+ standout();
+ move(0,0);
+ while (1) {
+ c = getchar();
+ switch(c) {
+ case 'q': /* Quit on 'q' */
+ quit();
+ break;
+ case 's': /* Go into standout mode on 's' */
+ standout();
+ break;
+ case 'e': /* Exit standout mode on 'e' */
+ standend();
+ break;
+ case 'r': /* Force a refresh on 'r' */
+ wrefresh(curscr);
+ break;
+ default: /* By default output the character */
+ addch(c);
+ refresh();
+ }
+ }
+}
+
+
+int
+quit()
+{
+ erase(); /* Terminate by erasing the screen */
+ refresh();
+ endwin(); /* Always end with endwin() */
+ delwin(curscr); /* Return storage */
+ delwin(stdscr);
+ putchar('\n');
+ exit(0);
+}
+
+
+
+
diff --git a/lib/libcurses/PSD.doc/ex2.c b/lib/libcurses/PSD.doc/ex2.c
new file mode 100644
index 00000000000..13e8f2990b9
--- /dev/null
+++ b/lib/libcurses/PSD.doc/ex2.c
@@ -0,0 +1,210 @@
+.\" Copyright (c) 1992, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)ex2.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <curses.h>
+#include <stdio.h>
+#include <signal.h>
+
+#define YSIZE LINES
+#define XSIZE COLS
+
+static int quit();
+
+/*
+ * This program fills the screen up with characters and the allows the user to
+ * manipulate the text on the screen using some basic commands.
+ * Nothing fancy, just a demonstration of the elementary features of the
+ * curses(3) package.
+ */
+main()
+{
+ int i, j, c, n, d = 0;
+ char id[100];
+ int hh = 0;
+ int curx, cury, base, arg;
+
+ initscr();
+ signal(SIGINT, quit);
+ crmode();
+ noecho();
+ nonl();
+ delwin(stdscr);
+ stdscr = newwin(YSIZE, XSIZE, 0, 0);
+ flushok(stdscr, TRUE);
+ scrollok(stdscr, TRUE);
+ erase();
+ refresh();
+
+ move(0,0);
+ refresh();
+ for (i = 0; i < YSIZE + 2; i++) {
+ sprintf(id, "%d: ", i);
+ addstr(id);
+ for (j = 0; j < XSIZE - strlen(id); j++)
+ addch('0' + (i % 10));
+ }
+ c = getchar();
+ base = 2;
+ curx = cury = 0;
+ move(0, 0);
+ refresh();
+
+ /*
+ * The screen manipulator has the following commands:
+ * 'D' - clear to the end of the current line.
+ * 'B' - clear to the bottom of the screen.
+ * 'E' - erase the screen.
+ * 's' - enter standout mode.
+ * 'e' - exit standout mode.
+ * 'd' n - delete n lines below cursor line.
+ * 'i' n - insert n lines below cursor line.
+ * 'q' - quit.
+ * 'f' - move cursor one position to the right.
+ * 'b' - move cursor one position to the left.
+ * 'n' - move cursor one line down.
+ * 'p' - move cursor one line up.
+ * 'h' - home cusor.
+ * 'l' - force refresh.
+ * 'r' - simulate a carriage return.
+ *
+ * All other characters are ignored.
+ */
+ for(;;) {
+ switch(c = getchar()) {
+ case 'D':
+ clrtoeol();
+ refresh();
+ continue;
+ case 'B':
+ clrtobot();
+ refresh();
+ continue;
+ case 'E':
+ erase();
+ refresh();
+ continue;
+ case 's':
+ standout();
+ continue;
+ case 'e':
+ standend();
+ continue;
+ case 'd':
+ arg = getchar() - '0';
+ for (i = 0; i < arg; i++)
+ deleteln();
+ refresh();
+ continue;
+ case 'i':
+ arg = getchar() - '0';
+ for (i = 0; i < arg; i++)
+ insertln();
+ refresh();
+ continue;
+ case 'q':
+ quit();
+ case 'f':
+ if (curx < XSIZE - 1)
+ curx++;
+ else {
+ cury++;
+ curx = 0;
+ }
+ break;
+ case 'b':
+ if (curx == 0) {
+ cury--;
+ curx = XSIZE - 1;
+ } else
+ curx--;
+ break;
+ case 'n':
+ cury++;
+ break;
+ case 'p':
+ cury--;
+ break;
+ case 'h':
+ curx = cury = 0;
+ break;
+ case 'l':
+ wrefresh(curscr);
+ continue;
+ case 'r': /* return */
+ {
+ int x, y;
+ getyx(stdscr, y, x);
+ move(y+1, 0);
+ insertln();
+ move(y, x);
+ clrtoeol();
+ refresh();
+ continue;
+ }
+ default:
+ continue;
+ }
+
+ if (cury < 0) {
+ base--;
+ move(0, 0);
+ insertln();
+ sprintf(id, "%d: ", base);
+ addstr(id);
+ for (j = 0; j < XSIZE - strlen(id) - 2; j++)
+ addch('0' + (base % 10));
+ cury++;
+ } else if (cury >= YSIZE) {
+ move(0, 0);
+ deleteln();
+ move(YSIZE - 1, 0);
+ sprintf(id, "%d: ", base + YSIZE);
+ addstr(id);
+ for (j = 0; j < XSIZE - strlen(id) - 2; j++)
+ addch('0' + ((base + YSIZE) % 10));
+ cury--;
+ base++;
+ }
+ move(cury, curx);
+ refresh();
+ }
+}
+
+int
+quit()
+{
+ erase();
+ refresh();
+ endwin();
+ exit(0);
+}
diff --git a/lib/libcurses/PSD.doc/fns.doc b/lib/libcurses/PSD.doc/fns.doc
new file mode 100644
index 00000000000..30d5c4c971d
--- /dev/null
+++ b/lib/libcurses/PSD.doc/fns.doc
@@ -0,0 +1,795 @@
+.\" Copyright (c) 1992, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)fns.doc 8.1 (Berkeley) 6/4/93
+.\"
+.Ds
+.Fn addch "char ch" \(dg
+.De
+Add the character
+.Vn ch
+on the window
+at the current \*y.
+If the character is a newline
+(\'\en\')
+the line will be cleared to the end,
+and the current \*y will be changed to the
+beginning off the next line
+if newline mapping is on,
+or to the next line at the same x co-ordinate
+if it is off.
+A return
+(\'\er\')
+will move to the beginning of the line on the window.
+Tabs
+(\'\et\')
+will be expanded into spaces
+in the normal tabstop positions of
+every eight characters.
+\*(Es
+.Ds
+.Fn addstr "char *str" \(dg
+.De
+Add the string pointed to by
+.Vn str
+on the window at the current \*y.
+\*(Es
+In this case, it will put on as much as it can.
+.Ds
+.Fn baudrate "" \(dg
+.De
+Returns the output baud rate of the terminal.
+This is a system dependent constant
+(defined in
+.b <sys/tty.h>
+on BSD systems,
+which is included by
+.b <curses.h> ).
+.Ds
+.Fn box "WINDOW win" "char vert" "char hor"
+.De
+.Pp
+Draws a box around the window using
+.Vn vert
+as the character for drawing the vertical sides, and
+.Vn hor
+for drawing the horizontal lines.
+If scrolling is not allowed,
+and the window encompasses the lower right-hand corner of the terminal,
+the corners are left blank to avoid a scroll.
+.Ds
+.Fn cbreak "" \(dg
+.De
+Set or the terminal to cbreak mode.
+.Ds
+.Fn clear "" \(dg
+.De
+Resets the entire window to blanks.
+If
+.Vn win
+is a screen,
+this sets the clear flag,
+which will cause a clear-screen sequence to be sent
+on the next
+.Fn refresh
+call.
+This also moves the current \*y
+to (0\*,0).
+.Ds
+.Fn clearok "WINDOW *scr" "int boolf" \(dg
+.De
+Sets the clear flag for the screen
+.Vn scr .
+If
+.Vn boolf
+is non-zero,
+this will force a clear-screen to be printed on the next
+.Fn refresh ,
+or stop it from doing so if
+.Vn boolf
+is 0.
+This only works on screens,
+and,
+unlike
+.Fn clear ,
+does not alter the contents of the screen.
+If
+.Vn scr
+is
+.Vn curscr ,
+the next
+.Fn refresh
+call will cause a clear-screen,
+even if the window passed to
+.Fn refresh
+is not a screen.
+.Ds
+.Fn clrtobot "" \(dg
+.De
+Wipes the window clear from the current \*y to the bottom.
+This does not force a clear-screen sequence on the next refresh
+under any circumstances.
+\*(Nm
+.Ds
+.Fn clrtoeol "" \(dg
+.De
+Wipes the window clear from the current \*y to the end of the line.
+\*(Nm
+.Ds
+.Fn crmode "" \(dg
+.De
+Identical to
+.Fn cbreak .
+The misnamed macro
+.Fn crmode
+and
+.Fn nocrmode
+is retained for backwards compatibility
+with ealier versions of the library.
+.Ds
+.Fn delch ""
+.De
+Delete the character at the current \*y.
+Each character after it on the line shifts to the left,
+and the last character becomes blank.
+.Ds
+.Fn deleteln ""
+.De
+Delete the current line.
+Every line below the current one will move up,
+and the bottom line will become blank.
+The current \*y will remain unchanged.
+.Ds
+.Fn delwin "WINDOW *win"
+.De
+Deletes the window from existence.
+All resources are freed for future use by
+.b calloc (3).
+If a window has a
+.Fn subwin
+allocated window inside of it,
+deleting the outer window
+the subwindow is not affected,
+even though this does invalidate it.
+Therefore,
+subwindows should be deleted before their
+outer windows are.
+.Ds
+.Fn echo "" \(dg
+.De
+Sets the terminal to echo characters.
+.Ds
+.Fn endwin ""
+.De
+Finish up window routines before exit.
+This restores the terminal to the state it was before
+.Fn initscr
+(or
+.Fn gettmode
+and
+.Fn setterm )
+was called.
+It should always be called before exiting and before the final calls to
+.Fn delwin .
+It does not exit.
+This is especially useful for resetting tty stats
+when trapping rubouts via
+.b signal (2).
+.Ds
+.Fn erase "" \(dg
+.De
+Erases the window to blanks without setting the clear flag.
+This is analagous to
+.Fn clear ,
+except that it never causes a clear-screen sequence to be generated
+on a
+.Fn refresh .
+\*(Nm
+.Ds
+.Fn erasechar "" \(dg
+.De
+Returns the erase character
+for the terminal,
+.i i.e. ,
+the character used by the user to erase a single character from the input.
+.Ds
+.Fn flushok "WINDOW *win" "int boolf"
+.De
+Normally,
+.Fn refresh
+.Fn fflush 's
+.Vn stdout
+when it is finished.
+.Fn flushok
+allows you to control this.
+if
+.Vn boolf
+is non-zero
+(\c
+.i i.e. ,
+non-zero)
+it will do the
+.Fn fflush ,
+otherwise it will not.
+.Ds
+.Fn getch "" \(dg
+.De
+Gets a character from the terminal and (if necessary)
+echos it on the window.
+\*(Es
+Otherwise, the character gotten is returned.
+If
+.i noecho
+has been set, then the window is left unaltered.
+In order to retain control of the terminal,
+it is necessary to have one of
+.i noecho ,
+.i cbreak ,
+or
+.i rawmode
+set.
+If you do not set one,
+whatever routine you call to read characters will set
+.i cbreak
+for you,
+and then reset to the original mode when finished.
+.Ds
+.Fn getstr "char *str" \(dg
+.De
+Get a string through the window
+and put it in the location pointed to by
+.Vn str ,
+which is assumed to be large enough to handle it.
+It sets tty modes if necessary,
+and then calls
+.Fn getch
+(or
+.Fn wgetch )
+to get the characters needed to fill in the string
+until a newline or EOF is encountered.
+The newline stripped off the string.
+\*(Es
+.Ds
+.Fn gettmode ""
+.De
+Get the tty stats.
+This is normally called by
+.Fn initscr .
+.Ds
+.Fn getyx "WINDOW *win" "int y" "int x"
+.De
+Puts the current \*y of
+.Vn win
+in the variables
+.Vn y
+and
+.Vn x .
+Since it is a macro,
+not a function,
+you do not pass the address
+of
+.Vn y
+and
+.Vn x .
+.Ds
+.Fn idlok "WINDOW *win" "int boolf"
+.De
+Reserved for future use.
+This will eventually signal to
+.Fn refresh
+that it is all right to use the insert and delete line sequences
+when updating the window.
+.Ds
+.Fn inch "" \(dg
+.De
+Returns the character at the current position on the given window.
+This does not make any changes to the window.
+.Ds
+.Fn initscr ""
+.De
+Initialize the screen routines.
+This must be called before any of the screen routines are used.
+It initializes the terminal-type data and such,
+and without it none of the routines can operate.
+If standard input is not a tty,
+it sets the specifications to the terminal
+whose name is pointed to by
+.Vn Def\*_term
+(initially "dumb").
+If the boolean
+.Vn My\*_term
+is non-zero,
+.Vn Def\*_term
+is always used.
+If the system supports the
+.b TIOCGWINSZ
+.i ioctl(2)
+call,
+it is used to get the number of lines and columns for the terminal,
+otherwise it is taken from the
+.b termcap
+description.
+.Ds
+.Fn insch "char c"
+.De
+Insert
+.Vn c
+at the current \*y
+Each character after it shifts to the right,
+and the last character disappears.
+\*(Es
+.Ds
+.Fn insertln ""
+.De
+Insert a line above the current one.
+Every line below the current line
+will be shifted down,
+and the bottom line will disappear.
+The current line will become blank,
+and the current \*y will remain unchanged.
+.Ds
+.Fn killchar "" \(dg
+.De
+Returns the line kill character
+for the terminal,
+.i i.e. ,
+the character used by the user to erase an entire line from the input.
+.Ds
+.Fn leaveok "WINDOW *win" "int boolf" \(dg
+.De
+Sets the boolean flag for leaving the cursor after the last change.
+If
+.Vn boolf
+is non-zero,
+the cursor will be left after the last update on the terminal,
+and the current \*y for
+.Vn win
+will be changed accordingly.
+If
+.Vn boolf
+ is 0 the cursor will be moved to the current \*y.
+This flag
+(initially 0)
+retains its value until changed by the user.
+.Ds
+.Fn move "int y" "int x"
+.De
+Change the current \*y of the window to
+.Vn y\*,x ). (
+\*(Es
+.Ds
+.Fn mvcur "int lasty" "int lastx" "int newy" "int newx"
+.De
+Moves the terminal's cursor from
+.Vn lasty\*,lastx ) (
+to
+.Vn newy\*,newx ) (
+in an approximation of optimal fashion.
+This routine uses the functions borrowed from
+.i ex
+version 2.6.
+It is possible to use this optimization
+without the benefit of the screen routines.
+With the screen routines, this should not be called by the user.
+.Fn move
+and
+.Fn refresh
+should be used to move the cursor position,
+so that the routines know what's going on.
+.Ds
+.Fn mvprintw "int y" "int x" "const char *fmt" "..."
+.De
+Equivalent to:
+.(l
+move(y, x);
+printw(fmt, ...);
+.)l
+.Ds
+.Fn mvscanw "int y" "int x" "const char *fmt" "..."
+.De
+Equivalent to:
+.(l
+move(y, x);
+scanw(fmt, ...);
+.)l
+.Ds
+.Fn mvwin "WINDOW *win" "int y" "int x"
+.De
+Move the home position of the window
+.Vn win
+from its current starting coordinates
+to
+.Vn y\*,x ). (
+If that would put part or all of the window
+off the edge of the terminal screen,
+.Fn mvwin
+returns ERR and does not change anything.
+For subwindows,
+.Fn mvwin
+also returns ERR if you attempt to move it off its main window.
+If you move a main window,
+all subwindows are moved along with it.
+.Ds
+.Fn mvwprintw "WINDOW *win" "int y" "int x" "const char *fmt" "..."
+.De
+Equivalent to:
+.(l
+wmove(win, y, x);
+printw(fmt, ...);
+.)l
+.Ds
+.Fn mvwscanw "WINDOW *win" "int y" "int x" "const char *fmt" "..."
+.De
+Equivalent to:
+.(l
+wmove(win, y, x);
+scanw(fmt, ...);
+.)l
+.Ds
+.Ft "WINDOW *"
+.Fn newwin "int lines" "int cols" "int begin_y" "int begin_x"
+.De
+Create a new window with
+.Vn lines
+lines and
+.Vn cols
+columns starting at position
+.Vn begin\*_y\*,begin\*_x ). (
+If either
+.Vn lines
+or
+.Vn cols
+is 0 (zero),
+that dimension will be set to
+.Vn "LINES \- begin\*_y" ) (
+or
+.Vn "COLS \- begin\*_x" ) (
+respectively.
+Thus, to get a new window of dimensions
+.Vn LINES
+\(mu
+.Vn COLS ,
+use
+.Fn newwin 0 0 0 0 .
+.Ds
+.Fn nl "" \(dg
+.De
+Set the terminal to nl mode,
+.i i.e. ,
+start/stop the system from mapping
+.b <RETURN>
+to
+.b <LINE-FEED> .
+If the mapping is not done,
+.Fn refresh
+can do more optimization,
+so it is recommended, but not required, to turn it off.
+.Ds
+.Fn nocbreak "" \(dg
+.De
+Unset the terminal from cbreak mode.
+.Ds
+.Fn nocrmode "" \(dg
+.De
+Identical to
+.Fn nocbreak .
+The misnamed macro
+.Fn nocrmode
+is retained for backwards compatibility
+with ealier versions of the library.
+.Ds
+.Fn noecho "" \(dg
+.De
+Turn echoing of characters off.
+.Ds
+.Fn nonl "" \(dg
+.De
+Unset the terminal to from nl mode. See
+.Fn nl .
+.Ds
+.Fn noraw "" \(dg
+.De
+Unset the terminal from raw mode. See
+.Fn raw .
+.Ds
+.Fn overlay "WINDOW *win1" "WINDOW *win2"
+.De
+Overlay
+.Vn win1
+on
+.Vn win2 .
+The contents of
+.Vn win1 ,
+insofar as they fit,
+are placed on
+.Vn win2
+at their starting \*y.
+This is done non-destructively,
+i.e., blanks on
+.Vn win1
+leave the contents of the space on
+.Vn win2
+untouched. Note that all non-blank characters are overwritten
+destructively in the overlay.
+.Ds
+.Fn overwrite "WINDOW *win1" "WINDOW *win2"
+.De
+Overwrite
+.Vn win1
+on
+.Vn win2 .
+The contents of
+.Vn win1 ,
+insofar as they fit,
+are placed on
+.Vn win2
+at their starting \*y.
+This is done destructively,
+.i i.e. ,
+blanks on
+.Vn win1
+become blank on
+.Vn win2 .
+.Ds
+.Fn printw "char *fmt" "..."
+.De
+Performs a
+.Fn printf
+on the window starting at the current \*y.
+It uses
+.Fn addstr
+to add the string on the window.
+It is often advisable to use the field width options of
+.Fn printf
+to avoid leaving things on the window from earlier calls.
+\*(Es
+.Ds
+.Fn raw "" \(dg
+.De
+Set the terminal to raw mode.
+On version 7
+.Un \**
+.(f
+\**
+.Un
+is a trademark of Unix System Laboratories.
+.)f
+this also turns off newline mapping
+(see
+.Fn nl ).
+.Ds
+.Fn refresh "" \(dg
+.De
+Synchronize the terminal screen with the desired window.
+If the window is not a screen,
+only that part covered by it is updated.
+\*(Es
+In this case, it will update whatever it can
+without causing the scroll.
+.sp
+As a special case,
+if
+.Fn wrefresh
+is called with the window
+.Vn curscr
+the screen is cleared
+and repainted as it is currently.
+This is very useful for allowing the redrawing of the screen
+when the user has garbage dumped on his terminal.
+.Ds
+.Fn resetty "" \(dg
+.De
+.Fn resetty
+restores them to what
+.Fn savetty
+stored.
+These functions are performed automatically by
+.Fn initscr
+and
+.Fn endwin .
+This function should not be used by the user.
+.Ds
+.Fn savetty "" \(dg
+.De
+.Fn savetty
+saves the current tty characteristic flags. See
+.Fn resetty .
+This function should not be used by the user.
+.Ds
+.Fn scanw "char *fmt" "..."
+.De
+Perform a
+.Fn scanf
+through the window using
+.Vn fmt .
+It does this using consecutive calls to
+.Fn getch
+(or
+.Fn wgetch ).
+\*(Es
+.Ds
+.Fn scroll "WINDOW *win"
+.De
+Scroll the window upward one line.
+This is normally not used by the user.
+.Ds
+.Fn scrollok "WINDOW *win" "int boolf" \(dg
+.De
+Set the scroll flag for the given window.
+If
+.Vn boolf
+is 0, scrolling is not allowed.
+This is its default setting.
+.Ds
+.Fn standend "" \(dg
+.De
+End standout mode initiated by
+.Fn standout .
+.Ds
+.Fn standout "" \(dg
+.De
+Causes any characters added to the window
+to be put in standout mode on the terminal
+(if it has that capability).
+.Ds
+.Ft "WINDOW *"
+.Fn subwin "WINDOW *win" "int lines" "int cols" "int begin_y" "int begin_x"
+.De
+Create a new window with
+.Vn lines
+lines and
+.Vn cols
+columns starting at position
+.Vn begin\*_y\*,begin\*_x ) (
+inside the window
+.i win .
+This means that any change made to either window
+in the area covered
+by the subwindow will be made on both windows.
+.Vn begin\*_y\*,begin\*_x
+are specified relative to the overall screen,
+not the relative (0\*,0) of
+.Vn win .
+If either
+.Vn lines
+or
+.Vn cols
+is 0 (zero),
+that dimension will be set to
+.Vn "LINES \- begin\*_y" ) (
+or
+.Vn "COLS \- begin\*_x" ) (
+respectively.
+.Ds
+.Fn touchline "WINDOW *win" "int y" "int startx" "int endx"
+.De
+This function performs a function similar to
+.Fn touchwin
+on a single line.
+It marks the first change for the given line
+to be
+.Vn startx ,
+if it is before the current first change mark,
+and
+the last change mark is set to be
+.Vn endx
+if it is currently less than
+.Vn endx .
+.Ds
+.Fn touchoverlap "WINDOW *win1" "WINDOW *win2"
+.De
+Touch the window
+.Vn win2
+in the area which overlaps with
+.Vn win1 .
+If they do not overlap,
+no changes are made.
+.Ds
+.Fn touchwin "WINDOW *win"
+.De
+Make it appear that the every location on the window
+has been changed.
+This is usually only needed for refreshes with overlapping windows.
+.Ds
+.Fn tstp
+.De
+This function
+will save the current tty state
+and then put the process to sleep.
+When the process gets restarted,
+it restores the saved tty state
+and then calls
+.Fn wrefresh "curscr"
+to redraw the screen.
+.Fn Initscr
+sets the signal
+SIGTSTP
+to trap to this routine.
+.Ds
+.Fn unctrl "char *ch" \(dg
+.De
+Returns a string which is an ASCII representation of
+.Vn ch .
+Characters are 8 bits long.
+.Ds
+.Fn unctrllen "char *ch" \(dg
+.De
+Returns the length of the ASCII representation of
+.Vn ch .
+.Ds
+.Fn vwprintw "WINDOW *win" "const char *fmt" "va_list ap"
+.De
+Identical to
+.Fn printw
+except that it takes both a window specification and a pointer to a variable
+length argument list.
+.Ds
+.Fn vwscanw "WINDOW *win" "const char *fmt" "va_list ap"
+.De
+Identical to
+.Fn scanw
+except that it takes both a window specification and a pointer to a variable
+length argument list.
+.Ds
+.Fn waddbytes "WINDOW *win" "char *str" "int len"
+.De
+This function is the low level character output function.
+.Vn Len
+characters of the string
+.Vn str
+are output to the current \*y position of the window specified by
+.Vn win.
+.sp 2
+.pp
+\fIThe following functions differ from the standard functions only in their
+specification of a window, rather than the use of the default
+.Vn stdscr.\fP
+.Ds
+.Fn waddch "WINDOW *win" "char ch"
+.Fn waddstr "WINDOW *win" "char *str"
+.Fn wclear "WINDOW *win"
+.Fn wclrtobot "WINDOW *win"
+.Fn wclrtoeol "WINDOW *win"
+.Fn wdelch "WINDOW *win"
+.Fn wdeleteln "WINDOW *win"
+.Fn werase "WINDOW *win"
+.Fn wgetch "WINDOW *win"
+.Fn wgetstr "WINDOW *win" "char *str"
+.Fn winch "WINDOW *win" \(dg
+.Fn winsch "WINDOW *win" "char c"
+.Fn winsertln "WINDOW *win"
+.Fn wmove "WINDOW *win" "int y" int x"
+.Fn wprintw "WINDOW *win" "char *fmt" "..."
+.Fn wrefresh "WINDOW *win"
+.Fn wscanw "WINDOW *win" "char *fmt" "..."
+.Fn wstandend "WINDOW *win"
+.Fn wstandout "WINDOW *win"
+.Dg
diff --git a/lib/libcurses/PSD.doc/intro.0 b/lib/libcurses/PSD.doc/intro.0
new file mode 100644
index 00000000000..c95b49d4782
--- /dev/null
+++ b/lib/libcurses/PSD.doc/intro.0
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.0 8.1 (Berkeley) 6/4/93
+.\"
+.tp
+.(l C
+.ps 12
+.ft B
+Screen Updating and Cursor Movement Optimization:
+.fl
+A Library Package
+.ft
+.ps
+.sp
+.i "Kenneth C. R. C. Arnold"
+.i "Elan Amir"
+.sp
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.sp 3
+.bi ABSTRACT
+.sp 2
+.)l
+.(q
+.pp
+This document describes a package of C library functions
+which allow the user to:
+.ie t .ip \ \ \ \(bu
+.el .ip 1)
+update a screen with reasonable optimization,
+.ie t .ip \ \ \ \(bu
+.el .ip 2)
+get input from the terminal
+in a screen-oriented fashion,
+and
+.ie t .ip \ \ \ \(bu
+.el .ip 3)
+independent from the above, move the cursor optimally
+from one point to another.
+.pp
+These routines all use the
+\*(tc \*(db to describe the capabilities of the terminal.
+.)q
+.b Acknowledgements
+.pp
+This package would not exist
+without the work of Bill Joy,
+who,
+in writing his editor,
+created the capability to generally describe terminals,
+wrote the routines which read this \*(db,
+and, most importantly,
+those which implement optimal cursor movement,
+which routines I have simply lifted nearly intact.
+Doug Merritt and Kurt Shoens also were extremely important,
+as were both willing to waste time listening to me rant and rave.
+The help and/or support of
+Ken Abrams,
+Alan Char,
+Mark Horton,
+and
+Joe Kalash,
+was, and is,
+also greatly appreciated.
+.i "Ken Arnold 16 April 1986"
+.pp
+The help and/or support of Kirk McKusick and Keith Bostic (public vi!)
+was invaluable in bringing the package ``into the 90's'', which now
+includes completely new data structures and screen refresh optimization
+routines.
+.i "Elan Amir 29 December 1992"
+
+
+
+
diff --git a/lib/libcurses/PSD.doc/intro.1 b/lib/libcurses/PSD.doc/intro.1
new file mode 100644
index 00000000000..a86d7571ade
--- /dev/null
+++ b/lib/libcurses/PSD.doc/intro.1
@@ -0,0 +1,249 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.1 8.1 (Berkeley) 6/4/93
+.\"
+.bp
+.sh 1 Overview
+.pp
+In making available the generalized terminal descriptions in \*(tc,
+much information was made available to the programmer,
+but little work was taken out of one's hands.
+The purpose of this package is to allow the C programmer
+to do the most common type of terminal dependent functions,
+those of movement optimization and optimal screen updating,
+without doing any of the dirty work,
+and with nearly as much ease as is necessary to simply print
+or read things.
+.sh 2 "Terminology"
+.pp
+In this document, the following terminology is used:
+.de Ip
+.sp
+.in 5n
+.ti 0n
+.b "\\$1" :
+..
+.Ip window
+An internal representation
+containing an image of what a section of the terminal screen may look like
+at some point in time.
+This subsection can either encompass the entire terminal screen,
+or any smaller portion down to a single character within that screen.
+.Ip terminal
+Sometimes called
+.b terminal
+.b screen .
+The package's idea of what the terminal's screen currently looks like,
+.i i.e. ,
+what the user sees now.
+This is a special
+.i screen :
+.Ip screen
+This is a subset of windows which are as large as the terminal screen,
+.i i.e. ,
+they start at the upper left hand corner
+and encompass the lower right hand corner.
+One of these,
+.Vn stdscr ,
+is automatically provided for the programmer.
+.rm Ip
+.sh 2 "Compiling Applications"
+.pp
+In order to use the library,
+it is necessary to have certain types and variables defined.
+Therefore, the programmer must have a line:
+.(l
+.b "#include <curses.h>"
+.)l
+at the top of the program source.
+Compilations should have the following form:
+.(l
+.ie t \fBcc\fR [ \fIflags\fR ] file ... \fB\-lcurses \-ltermcap\fR
+.el \fIcc\fR [ flags ] file ... \fI\-lcurses \-ltermcap\fR
+.)l
+.sh 2 "Screen Updating"
+.pp
+In order to update the screen optimally,
+it is necessary for the routines to know what the screen currently looks like
+and what the programmer wants it to look like next.
+For this purpose,
+a data type
+(structure)
+named
+.Vn WINDOW
+is defined
+which describes a window image to the routines,
+including its starting position on the screen
+(the \*y of the upper left hand corner)
+and its size.
+One of these
+(called
+.Vn curscr
+for
+.i "current screen" )
+is a screen image of what the terminal currently looks like.
+Another screen
+(called
+.Vn stdscr ,
+for
+.i "standard screen" )
+is provided
+by default
+to make changes on.
+.pp
+A window is a purely internal representation.
+It is used to build and store
+a potential image of a portion of the terminal.
+It doesn't bear any necessary relation
+to what is really on the terminal screen.
+It is more like an array of characters on which to make changes.
+.pp
+When one has a window which describes
+what some part the terminal should look like,
+the routine
+.Fn refresh
+(or
+.Fn wrefresh
+if the window is not
+.Vn stdscr )
+is called.
+.Fn Refresh
+makes the terminal,
+in the area covered by the window,
+look like that window.
+Note, therefore, that changing something on a window
+.i does
+.bi not
+.i "change the terminal" .
+Actual updates to the terminal screen
+are made only by calling
+.Fn refresh
+or
+.Fn wrefresh .
+This allows the programmer to maintain several different ideas
+of what a portion of the terminal screen should look like.
+Also, changes can be made to windows in any order,
+without regard to motion efficiency.
+Then, at will,
+the programmer can effectively say
+.q "make it look like this" ,
+and the package will execute the changes in an optimal way.
+.sh 2 "Naming Conventions"
+.pp
+As hinted above,
+the routines can use several windows,
+but two are always available:
+.Vn curscr ,
+which is the image of what the terminal looks like at present,
+and
+.Vn stdscr ,
+which is the image of what the programmer wants the terminal to look like next.
+The user should not access
+.Vn curscr
+directly.
+Changes should be made to
+the appropriate screen,
+and then the routine
+.Fn refresh
+(or
+.Fn wrefresh )
+should be called.
+.pp
+Many functions are set up to deal with
+.Vn stdscr
+as a default screen.
+For example, to add a character to
+.Vn stdscr ,
+one calls
+.Fn addch
+with the desired character.
+If a different window is to be used,
+the routine
+.Fn waddch
+(for
+.b w indow-specific
+.Fn addch )
+is provided\**.
+.(f
+\**
+Actually,
+.Fn addch
+is really a
+.q #define
+macro with arguments,
+as are most of the "functions" which act upon
+.Vn stdscr .
+.)f
+This convention of prepending function names with a
+.Bq w
+when they are to be applied to specific windows
+is consistent.
+The only routines which do
+.i not
+do this are those
+to which a window must always be specified.
+.pp
+In order to move the current \*y from one point to another,
+the routines
+.Fn move
+and
+.Fn wmove
+are provided.
+However,
+it is often desirable to first move and then perform some I/O operation.
+In order to avoid clumsiness,
+most I/O routines can be preceded by the prefix
+.Bq mv
+and the desired \*y can then be added to the arguments to the function.
+For example,
+the calls
+.(l
+move(y\*,x);
+addch(ch);
+.)l
+can be replaced by
+.(l
+mvaddch(y\*,x\*,ch);
+.)l
+and
+.(l
+wmove(win\*,y\*,x);
+waddch(win\*,ch);
+.)l
+can be replaced by
+.(l
+mvwaddch(win\*,y\*,x\*,ch);
+.)l
+Note that the window description pointer
+.Vn win ) (
+comes before the added \*y.
+If a window pointer is needed, it is always the first parameter passed.
diff --git a/lib/libcurses/PSD.doc/intro.2 b/lib/libcurses/PSD.doc/intro.2
new file mode 100644
index 00000000000..d98c0c76198
--- /dev/null
+++ b/lib/libcurses/PSD.doc/intro.2
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.2 8.1 (Berkeley) 6/4/93
+.\"
+.sh 1 Variables
+.pp
+Many variables which are used to describe the terminal environment
+are available to the programmer. They are:
+.(b
+.TS
+expand;
+lw(6m) lw(8n) lw(50n).
+type name description
+_
+WINDOW * curscr T{
+.fi
+current version of the screen (terminal screen).
+T}
+WINDOW * stdscr T{
+standard screen. Most updates are usually done here.
+T}
+char * Def\*_term T{
+default terminal type if type cannot be determined
+T}
+bool My\*_term T{
+use the terminal specification in \fIDef\*_term\fR as terminal,
+irrelevant of real terminal type
+T}
+char * ttytype T{
+full name of the current terminal.
+T}
+int LINES T{
+number of lines on the terminal
+T}
+int COLS T{
+number of columns on the terminal
+T}
+int ERR T{
+error flag returned by routines on a fail.
+T}
+int OK T{
+flag returned by routines upon success.
+T}
+.TE
+.fi
+.ev
+.)b
+.lp
diff --git a/lib/libcurses/PSD.doc/intro.3 b/lib/libcurses/PSD.doc/intro.3
new file mode 100644
index 00000000000..d0ba9a2ab7b
--- /dev/null
+++ b/lib/libcurses/PSD.doc/intro.3
@@ -0,0 +1,228 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.3 8.1 (Berkeley) 6/4/93
+.\"
+.sh 1 Usage
+.pp
+This is a description of how to actually use the screen package.
+For simplicity, we assume all updating, reading, etc.
+is applied to
+.Vn stdscr ,
+although a different window can of course be specified.
+.sh 2 "Initialization"
+.pp
+In order to use the screen package,
+the routines must know about terminal characteristics,
+and the space for
+.Vn curscr
+and
+.Vn stdscr
+must be allocated.
+These functions are performed by
+.Fn initscr .
+Since it must allocate space for the windows,
+it can overflow core when attempting to do so.
+On this rather rare occasion,
+.Fn initscr
+returns ERR.
+.Fn Initscr
+must
+.bi always
+be called before any of the routines which affect windows are used.
+If it is not,
+the program will core dump as soon as either
+.Vn curscr
+or
+.Vn stdscr
+are referenced.
+However, it is usually best to wait to call it
+until after you are sure you will need it,
+like after checking for startup errors.
+Terminal status changing routines
+like
+.Fn nl
+and
+.Fn cbreak
+should be called after
+.Fn initscr .
+.pp
+After the initial window allocation done by
+.Fn initscr ,
+specific window characteristics can be set.
+Scrolling can be enabled by calling
+.Fn scrollok .
+If you want the cursor to be left after the last change, use
+.Fn leaveok .
+If this isn't done,
+.Fn refresh
+will move the cursor to the window's current \*y after updating it.
+Additional windows can be created by using the functions
+.Fn newwin
+and
+.Fn subwin .
+.Fn Delwin
+allows you to delete an exisiting window.
+The variables
+.Vn LINES
+and
+.Vn COLS
+control the size of the terminal. They are initially implicitly set by
+.Fn initscr ,
+but can be altered explicitly by the user followed by a call to
+.Fn initscr .
+Note that any call to
+.Fn initscr ,
+will always delete any existing
+.Vn stdscr
+and/or
+.Vn curscr
+before creating new ones so this change is best done before the initial call to
+.Fn initscr .
+.pp
+.sh 2 "Output"
+.pp
+The basic functions
+used to change what will go on a window are
+.Fn addch
+and
+.Fn move .
+.Fn Addch
+adds a character at the current \*y,
+returning ERR if it would cause the window to illegally scroll,
+.i i.e. ,
+printing a character in the lower right-hand corner
+of a terminal which automatically scrolls
+if scrolling is not allowed.
+.Fn Move
+changes the current \*y to whatever you want them to be.
+It returns ERR if you try to move off the window.
+As mentioned above, you can combine the two into
+.Fn mvaddch
+to do both things in one call.
+.pp
+The other output functions
+(such as
+.Fn addstr
+and
+.Fn printw )
+all call
+.Fn addch
+to add characters to the window.
+.pp
+After a change has been made to the window,
+you must call
+.Fn refresh .
+when you want the portion of the terminal covered by the window
+to reflect the change.
+In order to optimize finding changes,
+.Fn refresh
+assumes that any part of the window not changed
+since the last
+.Fn refresh
+of that window has not been changed on the terminal,
+.i i.e. ,
+that you have not refreshed a portion of the terminal
+with an overlapping window.
+If this is not the case,
+the routines
+.Fn touchwin ,
+.Fn touchline ,
+and
+.Fn touchoverlap
+are provided to make it look like a desired part of window has been changed,
+thus forcing
+.Fn refresh
+to check that whole subsection of the terminal for changes.
+.pp
+If you call
+.Fn wrefresh
+with
+.Vn curscr ,
+it will make the screen look like the image of
+.Vn curscr .
+This is useful for implementing a command
+which would redraw the screen in case it got messed up.
+.sh 2 Input
+.pp
+Input is essentially a mirror image of output.
+The complementary function to
+.Fn addch
+is
+.Fn getch
+which,
+if echo is set,
+will call
+.Fn addch
+to echo the character.
+Since the screen package needs to know what is on the terminal at all times,
+if characters are to be echoed,
+the tty must be in raw or cbreak mode.
+If it is not,
+.Fn getch
+sets it to be cbreak,
+and then reads in the character.
+.sh 2 "Termination"
+.pp
+In order to perform certain optimizations,
+and,
+on some terminals,
+to work at all,
+some things must be done
+before the screen routines start up.
+These functions are performed in
+.Fn getttmode
+and
+.Fn setterm ,
+which are called by
+.Fn initscr .
+In order to clean up after the routines,
+the routine
+.Fn endwin
+is provided.
+It restores tty modes to what they were
+when
+.Fn initscr
+was first called.
+The terminal state module uses the variable
+.Vn curses_termios
+to save the original terminal state which is then restored upon a call to
+.Fn endwin .
+Thus,
+anytime after the call to initscr,
+.Fn endwin
+should be called before exiting. Note however, that
+.Fn endwin
+should always be called
+.b before
+the final calls to
+.Fn delwin ,
+which free the storage of the windows.
diff --git a/lib/libcurses/PSD.doc/intro.4 b/lib/libcurses/PSD.doc/intro.4
new file mode 100644
index 00000000000..9e529822c5d
--- /dev/null
+++ b/lib/libcurses/PSD.doc/intro.4
@@ -0,0 +1,69 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.4 8.1 (Berkeley) 6/4/93
+.\"
+.sh 1 "Cursor Movement Optimizations"
+.pp
+One of the most difficult things to do properly is motion optimization.
+After using
+.Fn gettmode
+and
+.Fn setterm
+to get the terminal descriptions,
+the function
+.Fn mvcur
+deals with this task.
+It usage is simple:
+simply tell it where you are now and where you want to go.
+For example
+.(l
+mvcur(0\*,0\*,LINES/2\*,COLS/2);
+.)l
+.lp
+would move the cursor from the home position (0\*,0)
+to the middle of the screen.
+If you wish to force absolute addressing,
+you can use the function
+.Fn tgoto
+from the
+.b termlib (7)
+routines,
+or you can tell
+.Fn mvcur
+that you are impossibly far away,
+For example,
+to absolutely address the lower left hand corner of the screen
+from anywhere
+just claim that you are in the upper right hand corner:
+.(l
+mvcur(0\*,COLS\-1\*,LINES\-1\*,0);
+.)l
diff --git a/lib/libcurses/PSD.doc/intro.5 b/lib/libcurses/PSD.doc/intro.5
new file mode 100644
index 00000000000..d0f96575b4b
--- /dev/null
+++ b/lib/libcurses/PSD.doc/intro.5
@@ -0,0 +1,87 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.5 8.1 (Berkeley) 6/4/93
+.\"
+.sh 1 "Character Output and Scrolling"
+.pp
+The character output policy deals with the following problems. First,
+where is the location of the cursor after a character is printed, and
+secondly, when does the screen scroll if scrolling is enabled.
+.pp
+In the normal case the characters are output as expected, with the cursor
+occupying the position of the next character to be output. However, when the
+cursor is on the last column of the line, the cursor will remain on that
+position after the last character on the line is output and will only assume
+the position on the next line when the next character (the first on the next
+line) is output.
+.pp
+Likewise, if scrolling is enabled, a scroll will be invoked only when the
+first character on he first line past the bottom line of the window is
+output. If scrolling is not enabled the chracters will to be output to the
+bottom right corner of the window which is the cursor location.
+.pp
+This policy allows consistent behavior of the cursor at the boundary
+conditions. Furthermore, it prevents a scroll from happening before it is
+actually needed (the old package used to scroll when the bottom right position
+was output a character). As a precendent, it models the
+.i xterm
+character output conventions.
+.sh 1 "Terminal State Handling"
+.pp
+The variable
+.Vn curses_termios
+contains the terminal state of the terminal. Certain historical routines
+return information:
+.Fn baudrate ,
+.Fn erasechar ,
+.Fn killchar ,
+and
+.Fn ospeed .
+These routines are obsolete and exist only for backward compatibility. If
+you wish to use the information in the
+.Vn curses_termios
+structure, you should use the
+\fItsetattr\fP(3)
+routines.
+.sh 1 "Subwindows"
+.pp
+Subwindows are windows which do not have an independent text structure,
+.i i.e. ,
+they are windows whose text is a subset of the text of a larger window: the
+.i parent
+window. One consequence of this is that changes to either the parent or the
+child window are destructive to the other,
+.i i.e. ,
+a change to the subwindow is also a change to the parent window and a change
+to the parent window in the region defined by the subwindow is implicitly a
+change to the subwindow as well.
+Apart from this detail, subwindows function like any other window.
diff --git a/lib/libcurses/PSD.doc/intro.6 b/lib/libcurses/PSD.doc/intro.6
new file mode 100644
index 00000000000..7c4560dc33a
--- /dev/null
+++ b/lib/libcurses/PSD.doc/intro.6
@@ -0,0 +1,44 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.6 8.1 (Berkeley) 6/4/93
+.\"
+.sh 1 "The Functions"
+.pp
+In the following definitions,
+.q \*m
+means that the
+.q function
+is really a
+.q #define
+macro with arguments.
+.ta 11m 17m 25m 33m 41m 49m 57m 65m 73m
+.so fns.doc
diff --git a/lib/libcurses/PSD.doc/life.c b/lib/libcurses/PSD.doc/life.c
new file mode 100644
index 00000000000..72febba29ae
--- /dev/null
+++ b/lib/libcurses/PSD.doc/life.c
@@ -0,0 +1,163 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)life.c 8.1 (Berkeley) 6/8/93
+.\"
+# include <curses.h>
+# include <signal.h>
+
+/*
+ * Run a life game. This is a demonstration program for
+ * the Screen Updating section of the -lcurses cursor package.
+ */
+
+typedef struct lst_st { /* linked list element */
+ int y, x; /* (y, x) position of piece */
+ struct lst_st *next, *last; /* doubly linked */
+} LIST;
+
+LIST *Head; /* head of linked list */
+
+int die();
+
+main(ac, av)
+int ac;
+char *av[];
+{
+ evalargs(ac, av); /* evaluate arguments */
+
+ initscr(); /* initialize screen package */
+ signal(SIGINT, die); /* set to restore tty stats */
+ cbreak(); /* set for char-by-char */
+ noecho(); /* input */
+ nonl(); /* for optimization */
+
+ getstart(); /* get starting position */
+ for (;;) {
+ prboard(); /* print out current board */
+ update(); /* update board position */
+ }
+}
+
+/*
+ * This is the routine which is called when rubout is hit.
+ * It resets the tty stats to their original values. This
+ * is the normal way of leaving the program.
+ */
+die()
+{
+ signal(SIGINT, SIG_IGN); /* ignore rubouts */
+ mvcur(0, COLS - 1, LINES - 1, 0); /* go to bottom of screen */
+ endwin(); /* set terminal to good state */
+ exit(0);
+}
+
+/*
+ * Get the starting position from the user. They keys u, i, o, j, l,
+ * m, ,, and . are used for moving their relative directions from the
+ * k key. Thus, u move diagonally up to the left, , moves directly down,
+ * etc. x places a piece at the current position, " " takes it away.
+ * The input can also be from a file. The list is built after the
+ * board setup is ready.
+ */
+getstart()
+{
+ reg char c;
+ reg int x, y;
+ auto char buf[100];
+
+ box(stdscr, '|', '_'); /* box in the screen */
+ move(1, 1); /* move to upper left corner */
+
+ for (;;) {
+ refresh(); /* print current position */
+ if ((c = getch()) == 'q')
+ break;
+ switch (c) {
+ case 'u':
+ case 'i':
+ case 'o':
+ case 'j':
+ case 'l':
+ case 'm':
+ case ',':
+ case '.':
+ adjustyx(c);
+ break;
+ case 'f':
+ mvaddstr(0, 0, "File name: ");
+ getstr(buf);
+ readfile(buf);
+ break;
+ case 'x':
+ addch('X');
+ break;
+ case ' ':
+ addch(' ');
+ break;
+ }
+ }
+
+ if (Head != NULL) /* start new list */
+ dellist(Head);
+ Head = malloc(sizeof (LIST));
+
+ /*
+ * loop through the screen looking for 'x's, and add a list
+ * element for each one
+ */
+ for (y = 1; y < LINES - 1; y++)
+ for (x = 1; x < COLS - 1; x++) {
+ move(y, x);
+ if (inch() == 'x')
+ addlist(y, x);
+ }
+}
+
+/*
+ * Print out the current board position from the linked list
+ */
+prboard() {
+
+ reg LIST *hp;
+
+ erase(); /* clear out last position */
+ box(stdscr, '|', '_'); /* box in the screen */
+
+ /*
+ * go through the list adding each piece to the newly
+ * blank board
+ */
+ for (hp = Head; hp; hp = hp->next)
+ mvaddch(hp->y, hp->x, 'X');
+
+ refresh();
+}
diff --git a/lib/libcurses/PSD.doc/macros b/lib/libcurses/PSD.doc/macros
new file mode 100644
index 00000000000..b7f3abf793e
--- /dev/null
+++ b/lib/libcurses/PSD.doc/macros
@@ -0,0 +1,144 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)macros 8.1 (Berkeley) 8/14/93
+.\"
+.\" this is the uncommented version. The commented one is in "macros.coms"
+.ie t .ds _ \d\(mi\u
+.el .ds _ _
+.ds , ,\
+.ds y (y\*,x) co-ordinates
+.ds db database
+.ie n .ds f \fI
+.el .ds f \fB
+.ds tc \*ftermcap\fP(5)
+.ds Es This returns ERR if it would cause the screen to scroll illegally.
+.ds Nm This has no associated \*(lq\fBmv\fP\*(rq command.
+.ie t .ds m \fB\s-2\(dg\s+2\fP
+.el .ds m [*]
+.\" .hy WINDOW
+.\".he ''\*(Ln''
+.\".fo ''\- % \-''
+.oh '\*(Ln''PS1:19-%'
+.eh 'PS1:19-%''\*(Ln'
+.de Un
+.b
+\s-2\\$2UNIX\\$1\s+2
+.ft
+..
+.de Ds
+.sp
+.lp
+.ev 1
+.nf
+.ft I
+.in 0
+.di Df
+..
+.de De
+.di
+.Df
+.ne \n(dn+2
+.ev
+.ip
+..
+.de Dg
+.di
+.Df
+.ne \n(dn+2
+.ev
+..
+.de Fd
+.br
+\&\\$4
+.fi
+.b
+\&\\$1(\\$2)
+.ft
+\&\\$3
+.br
+.nf
+..
+.de Vn
+\&\\$3\c
+.i "\\$1" \\$2
+..
+.de Bq
+.ie t \&\*(lq\fB\\$1\fP\*(rq
+.el \&\*(lq\fI\\$1\fP\*(rq
+..
+.de $0
+.(x
+.in \\n(Xs
+\\*($n \\$1
+.)x
+..
+.de $1
+.nr Xs 0
+..
+.de $2
+.nr Xs 3
+..
+.de $3
+.nr Xs 6
+..
+.de Fn
+.if \\n(.$==0 .tm error
+.nr ll 0
+.nr dg 0
+.ft R
+.if '\\$\\n(.$'.' .nr ll 1
+.if '\\$\\n(.$',' .nr ll 1
+.if '\\$\\n(.$')' .nr ll 1
+.if '\\$\\n(.$').' .nr ll 1
+.if '\\$\\n(.$';' .nr ll 1
+.if '\\$\\n(.$':' .nr ll 1
+.if '\\$\\n(.$'\'s' .nr ll 1
+.if '\\$\\n(.$'\(dg' .nr ll 1
+.\" .if '\\$\\n(.$'' .nr ll 1
+.nr al \\n(.$-\\n(ll
+.ds ot \f(CB\\$1\fP(
+.if \\n(al>1 .as ot \fI\\$2\fP
+.if \\n(al>2 .as ot ", \fI\\$3\fP
+.if \\n(al>3 .as ot ", \fI\\$4\fP
+.if \\n(al>4 .as ot ", \fI\\$5\fP
+.if \\n(al>5 .as ot ", \fI\\$6\fP
+.if \\n(al>6 .as ot ", \fI\\$7\fP
+.if \\n(al>7 .as ot ", \fI\\$8\fP
+.if \\n(al>8 .as ot ", \fI\\$9\fP
+.as ot )
+.if \\n(.$>1 \{\
+. if \\n(ll==0 .as ot ;
+. if '\\$\\n(.$'\(dg' .as ot ;
+.\}
+.if \\n(ll==1 .as ot \\$\\n(.$
+\\*(ot
+..
diff --git a/lib/libcurses/PSD.doc/paper.ps b/lib/libcurses/PSD.doc/paper.ps
new file mode 100644
index 00000000000..91e76f432e0
--- /dev/null
+++ b/lib/libcurses/PSD.doc/paper.ps
@@ -0,0 +1,1719 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.08
+%%DocumentNeededResources: font Times-Bold
+%%+ font Times-Italic
+%%+ font Times-Roman
+%%+ font Times-BoldItalic
+%%+ font Courier-Bold
+%%+ font Symbol
+%%DocumentSuppliedResources: procset grops 1.08 0
+%%Pages: 19
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.08 0
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/FL{
+currentgray exch setgray fill setgray
+}bind def
+/BL/fill load def
+/LW/setlinewidth load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-BoldItalic
+%%IncludeResource: font Courier-Bold
+%%IncludeResource: font Symbol
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL
+792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron
+/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space
+/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft
+/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four
+/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C
+/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash
+/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q
+/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase
+/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger
+/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus
+/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu
+/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright
+/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde
+/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
+/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
+/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
+/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve
+/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
+/udieresis/yacute/thorn/ydieresis]def/Courier-Bold@0 ENC0/Courier-Bold RE
+/Times-BoldItalic@0 ENC0/Times-BoldItalic RE/Times-Roman@0 ENC0/Times-Roman RE
+/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 12/Times-Bold@0 SF -6.67(SS)148.024 99 S -5.326(cc)6.67 G 7.436 -5.326
+(rr ee)5.326 H -5.326(ee)5.326 G 13.34 -6.67(nn U)5.326 H(Up)-1.992 E(pd)
+194.144 99 Q(da)200.818 99 Q(at)207.492 99 Q(ti)213.494 99 Q(in)217.492 99 Q
+(ng)220.83 99 Q 3(ga)227.504 99 S(an)236.506 99 Q(nd)242.508 99 Q 3(dC)249.182
+99 S(Cu)258.856 99 Q(ur)267.522 99 Q(rs)274.196 99 Q(so)279.526 99 Q(or)284.196
+99 Q 3(rM)290.198 99 S(Mo)298.528 99 Q -.12(ov)309.858 99 S -.12(ve)315.74 99 S
+(em)321.622 99 Q(me)326.952 99 Q(en)336.95 99 Q(nt)342.28 99 Q 3(tO)348.954 99
+S(Op)355.952 99 Q(pt)365.29 99 Q(ti)371.964 99 Q(im)375.962 99 Q(mi)379.3 99 Q
+(iz)389.298 99 Q(za)392.636 99 Q(at)397.966 99 Q(ti)403.968 99 Q(io)407.966 99
+Q(on)411.304 99 Q(n:)417.306 99 Q(:)423.98 99 Q 17.324 -8.662(AA L)239.049
+109.8 T(Li).66 E(ib)258.723 109.8 Q(br)262.061 109.8 Q(ra)268.735 109.8 Q(ar)
+274.065 109.8 Q(ry)280.067 109.8 Q 3(yP)285.397 109.8 S -.12(Pa)294.399 109.8 S
+(ac)301.613 109.8 Q(ck)307.615 109.8 Q(ka)312.945 109.8 Q(ag)319.619 109.8 Q
+(ge)325.621 109.8 Q(e)331.623 109.8 Q/F1 9/Times-Italic@0 SF -.315(Ke)244.03
+131.4 S(nneth C. R. C. Arnold).315 E(Elan Amir)269.374 142.2 Q/F2 9
+/Times-Roman@0 SF(Computer Science Di)238.365 163.8 Q(vision)-.225 E
+(Department of Electrical Engineering and Computer Science)178.524 174.6 Q(Uni)
+226.552 185.4 Q -.135(ve)-.225 G(rsity of California, Berk).135 E(ele)-.09 E(y)
+-.135 E(Berk)238.162 196.2 Q(ele)-.09 E 1.17 -.585(y, C)-.135 H 2.25
+(alifornia 94720).585 F/F3 9/Times-BoldItalic@0 SF(ABSTRA)265.284 239.4 Q(CT)
+-.585 E/F4 10/Times-Roman@0 SF
+(This document describes a package of C library functions which allo)97 285.6 Q
+2.5(wt)-.25 G(he user to:)384.2 285.6 Q 14<8375>79.5 301.8 S
+(pdate a screen with reasonable optimization,)102 301.8 Q 14<8367>79.5 318 S
+(et input from the terminal in a screen-oriented f)102 318 Q(ashion, and)-.1 E
+14<8369>79.5 334.2 S(ndependent from the abo)99.78 334.2 Q -.15(ve)-.15 G 2.5
+(,m).15 G .3 -.15(ove t)221.4 334.2 T
+(he cursor optimally from one point to another).15 E(.)-.55 E
+(These routines all use the)97 350.4 Q/F5 10/Times-Bold@0 SF -3.328(tt)2.5 G
+-4.438(ee)3.328 G -4.438(rr)4.438 G -8.328(mm)4.438 G -4.438(cc)8.328 G -4.998
+(aa)4.438 G -5.558(pp)4.998 G F4
+(\(5\) database to describe the capabilities of the terminal.)5.558 E/F6 9
+/Times-Bold@0 SF -6.496(AA)72 364.6 S -3.994(cc)6.496 G -5.002(kk)3.994 G
+-5.002(nn)5.002 G 6.656 -4.498(oo w)5.002 H(wl)-1.998 E(le)103.424 364.6 Q(ed)
+105.928 364.6 Q(dg)109.926 364.6 Q(ge)114.932 364.6 Q(em)119.434 364.6 Q(me)
+123.432 364.6 Q(en)130.931 364.6 Q(nt)134.929 364.6 Q(ts)139.935 364.6 Q(s)
+142.934 364.6 Q F4 1.221(This package w)97 380.8 R 1.221(ould not e)-.1 F 1.221
+(xist without the w)-.15 F 1.221(ork of Bill Jo)-.1 F 2.52 -.65(y, w)-.1 H 1.22
+(ho, in writing his editor).65 F 3.72(,c)-.4 G 1.22(reated the)463.63 380.8 R
+1.134(capability to generally describe terminals, wrote the routines which rea\
+d this database, and, most impor)72 392.8 R(-)-.2 E(tantly)72 404.8 Q 3.036(,t)
+-.65 G .536(hose which implement optimal cursor mo)102.446 404.8 R -.15(ve)-.15
+G .536(ment, which routines I ha).15 F .835 -.15(ve s)-.2 H .535
+(imply lifted nearly intact.).15 F .413(Doug Merritt and K)72 416.8 R .413
+(urt Shoens also were e)-.15 F .413
+(xtremely important, as were both willing to w)-.15 F .414(aste time listening)
+-.1 F .913(to me rant and ra)72 428.8 R -.15(ve)-.2 G 5.912(.T).15 G .912
+(he help and/or support of K)167.024 428.8 R .912(en Abrams, Alan Char)-.25 F
+3.412(,M)-.4 G .912(ark Horton, and Joe Kalash,)388.712 428.8 R -.1(wa)72 440.8
+S(s, and is, also greatly appreciated.).1 E/F7 10/Times-Italic@0 SF -.35(Ke)5 G
+2.5(nA).35 G 7.5(rnold 16)247.9 440.8 R(April 1986)2.5 E F4 .509
+(The help and/or support of Kirk McK)97 457 R .509(usick and K)-.15 F .509
+(eith Bostic \(public vi!\))-.25 F -.1(wa)5.51 G 3.01(si).1 G -1.95 -.4(nv a)
+418.08 457 T .51(luable in bringing).4 F .865(the package `)72 469 R .865
+(`into the 90')-.74 F(s')-.55 E .865(', which no)-.74 F 3.365(wi)-.25 G .865
+(ncludes completely ne)243.515 469 R 3.365(wd)-.25 G .864
+(ata structures and screen refresh opti-)350.01 469 R(mization routines.)72 481
+Q F7(Elan Amir)5 E(29 December 1992)7.5 E EP
+%%Page: 3 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 326.978(eP)
+134.236 60 S(PS)465.656 60 Q(S1)471.768 60 Q(1:)477.33 60 Q(:1)482.332 60 Q(19)
+485.664 60 Q(9-)490.666 60 Q(-3)495.668 60 Q(3)499 60 Q -4.998(11)72 96 S 7.496
+-2.498(.. O)4.998 H(Ov)84.506 96 Q -.1(ve)92.288 96 S(er)97.19 96 Q -.1(rv)
+101.632 96 S(vi)105.974 96 Q(ie)110.976 96 Q(ew)113.758 96 Q(w)118.2 96 Q/F1 10
+/Times-Roman@0 SF 2.106(In making a)97 112.2 R -.25(va)-.2 G 2.106
+(ilable the generalized terminal descriptions in).25 F F0 -3.328(tt)4.606 G
+-4.438(ee)3.328 G -4.438(rr)4.438 G -8.328(mm)4.438 G -4.438(cc)8.328 G -4.998
+(aa)4.438 G -5.558(pp)4.998 G F1 2.106(\(5\), much information w)5.558 F(as)-.1
+E .391(made a)72 124.2 R -.25(va)-.2 G .391(ilable to the programmer).25 F
+2.891(,b)-.4 G .391(ut little w)220.095 124.2 R .391(ork w)-.1 F .391(as tak)
+-.1 F .39(en out of one')-.1 F 2.89(sh)-.55 G 2.89(ands. The)374.02 124.2 R .39
+(purpose of this pack-)2.89 F .821(age is to allo)72 136.2 R 3.321(wt)-.25 G
+.822(he C programmer to do the most common type of terminal dependent function\
+s, those of)138.364 136.2 R(mo)72 148.2 Q -.15(ve)-.15 G .45
+(ment optimization and optimal screen updating, without doing an).15 F 2.95(yo)
+-.15 G 2.95(ft)371.7 148.2 S .45(he dirty w)380.76 148.2 R .45
+(ork, and with nearly)-.1 F
+(as much ease as is necessary to simply print or read things.)72 160.2 Q F0
+-4.998(11)72 184.2 S -2.498(..)4.998 G -4.998(11)2.498 G 7.496 -2.498(.. T)
+4.998 H -.92(Te)92.01 184.2 S(er)97.762 184.2 Q(rm)102.204 184.2 Q(mi)106.646
+184.2 Q(in)114.978 184.2 Q(no)117.76 184.2 Q(ol)123.322 184.2 Q(lo)128.324
+184.2 Q(og)131.106 184.2 Q(gy)136.108 184.2 Q(y)141.11 184.2 Q F1
+(In this document, the follo)97 200.4 Q(wing terminology is used:)-.25 E F0
+-7.218(ww)72 224.4 S -2.778(ii)7.218 G -5.558(nn)2.778 G -5.558(dd)5.558 G
+7.396 -4.998(oo w)5.558 H(w)98.032 224.4 Q F1 2.843(:A)C 2.843(ni)118.095 224.4
+S .343(nternal representation containing an image of what a section of the ter\
+minal screen may look)128.718 224.4 R(lik)97 236.4 Q 3.322(ea)-.1 G 3.322(ts)
+119.662 236.4 S .822(ome point in time.)129.654 236.4 R .821
+(This subsection can either encompass the entire terminal screen, or an)5.821 F
+(y)-.15 E(smaller portion do)97 248.4 Q
+(wn to a single character within that screen.)-.25 E F0 -3.328(tt)72 272.4 S
+-4.438(ee)3.328 G -4.438(rr)4.438 G -8.328(mm)4.438 G -2.778(ii)8.328 G -5.558
+(nn)2.778 G -4.998(aa)5.558 G -2.778(ll)4.998 G F1 3.248(:S)2.778 G .748
+(ometimes called)120.264 272.4 R F0 -3.328(tt)3.248 G -4.438(ee)3.328 G -4.438
+(rr)4.438 G -8.328(mm)4.438 G -2.778(ii)8.328 G -5.558(nn)2.778 G -4.998(aa)
+5.558 G 6.304 -2.778(ll s)4.998 H(sc)-1.11 E(cr)233.348 272.4 Q -.18(re)237.79
+272.4 S(ee)242.052 272.4 Q(en)246.494 272.4 Q(n)250.936 272.4 Q F1 5.748(.T)C
+.748(he package')270.854 272.4 R 3.248(si)-.55 G .748
+(dea of what the terminal')329 272.4 R 3.249(ss)-.55 G .749(creen currently)
+443.001 272.4 R(looks lik)97 284.4 Q(e,)-.1 E/F2 10/Times-Italic@0 SF(i.e)2.5 E
+(.)-.15 E F1 2.5(,w)C(hat the user sees no)165.36 284.4 Q 3.8 -.65(w. T)-.25 H
+(his is a special).65 E F2(scr)2.5 E(een)-.37 E F1(:)A F0 -3.888(ss)72 308.4 S
+-4.438(cc)3.888 G 6.196 -4.438(rr ee)4.438 H -4.438(ee)4.438 G -5.558(nn)4.438
+G F1 2.524(:T)5.558 G .024(his is a subset of windo)110.456 308.4 R .023
+(ws which are as lar)-.25 F .023(ge as the terminal screen,)-.18 F F2(i.e)2.523
+E(.)-.15 E F1 2.523(,t)C(he)404.335 308.4 Q 2.523(ys)-.15 G .023
+(tart at the upper left)425.038 308.4 R .729(hand corner and encompass the lo)
+97 320.4 R .729(wer right hand corner)-.25 F 5.729(.O)-.55 G .729(ne of these,)
+339.641 320.4 R F2(stdscr)3.23 E F1 3.23(,i)C 3.23(sa)422.55 320.4 S .73
+(utomatically pro-)434.11 320.4 R(vided for the programmer)97 332.4 Q(.)-.55 E
+F0 -4.998(11)72 356.4 S -2.498(..)4.998 G -4.998(22)2.498 G 7.496 -2.498(.. C)
+4.998 H(Co)92.01 356.4 Q(om)99.232 356.4 Q(mp)104.234 356.4 Q(pi)112.566 356.4
+Q(il)118.128 356.4 Q(li)120.91 356.4 Q(in)123.692 356.4 Q(ng)126.474 356.4 Q
+2.5(gA)132.036 356.4 S -.25(Ap)139.538 356.4 S(pp)146.51 356.4 Q(pl)152.072
+356.4 Q(li)157.634 356.4 Q(ic)160.416 356.4 Q(ca)163.198 356.4 Q(at)167.64
+356.4 Q(ti)172.642 356.4 Q(io)175.974 356.4 Q(on)178.756 356.4 Q(ns)183.758
+356.4 Q(s)189.32 356.4 Q F1 .487(In order to use the library)97 372.6 R 2.987
+(,i)-.65 G 2.987(ti)208.973 372.6 S 2.987(sn)217.52 372.6 S .487
+(ecessary to ha)229.397 372.6 R .787 -.15(ve c)-.2 H .487(ertain types and v)
+.15 F .487(ariables def)-.25 F 2.987(ined. Therefore,)-.2 F(the)2.987 E
+(programmer must ha)72 384.6 Q .3 -.15(ve a l)-.2 H(ine:).15 E F0 -4.998(##)112
+400.8 S -2.778(ii)4.998 G -5.558(nn)2.778 G -4.438(cc)5.558 G -2.778(ll)4.438 G
+-5.558(uu)2.778 G -5.558(dd)5.558 G 8.876 -4.438(ee <)5.558 H(<c)-1.26 E(cu)
+156.34 400.8 Q(ur)160.782 400.8 Q(rs)166.344 400.8 Q(se)170.786 400.8 Q(es)
+174.678 400.8 Q(s.)179.12 400.8 Q(.h)183.012 400.8 Q(h>)185.514 400.8 Q(>)
+191.076 400.8 Q F1(at the top of the program source.)72 417 Q
+(Compilations should ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing form:)-.25 E
+F0 -4.438(cc)112 433.2 S -4.438(cc)4.438 G F1([)6.938 E F2(fla)2.5 E(gs)-.1 E
+F1 2.5(]f)2.5 G(ile ...)160.024 433.2 Q F0 -5.698<adad>2.5 G -2.778(ll)5.698 G
+-4.438(cc)2.778 G -5.558(uu)4.438 G -4.438(rr)5.558 G -3.888(ss)4.438 G -4.438
+(ee)3.888 G 7.776 -3.888(ss \255)4.438 H<ad6c>-1.81 E(lt)225.884 433.2 Q(te)
+228.666 433.2 Q(er)231.998 433.2 Q(rm)236.44 433.2 Q(mc)240.882 433.2 Q(ca)
+249.214 433.2 Q(ap)253.656 433.2 Q(p)258.658 433.2 Q -4.998(11)72 461.4 S
+-2.498(..)4.998 G -4.998(33)2.498 G 7.496 -2.498(.. S)4.998 H(Sc)92.01 461.4 Q
+(cr)97.572 461.4 Q -.18(re)102.014 461.4 S(ee)106.276 461.4 Q(en)110.718 461.4
+Q 2.5(nU)115.16 461.4 S(Up)123.222 461.4 Q(pd)130.444 461.4 Q(da)136.006 461.4
+Q(at)141.568 461.4 Q(ti)146.57 461.4 Q(in)149.902 461.4 Q(ng)152.684 461.4 Q(g)
+158.246 461.4 Q F1 .562(In order to update the screen optimally)97 477.6 R
+3.063(,i)-.65 G 3.063(ti)263.037 477.6 S 3.063(sn)271.66 477.6 S .563
+(ecessary for the routines to kno)283.613 477.6 R 3.063(ww)-.25 G .563
+(hat the screen cur)428.931 477.6 R(-)-.2 E .578(rently looks lik)72 489.6 R
+3.078(ea)-.1 G .578(nd what the programmer w)145.574 489.6 R .578
+(ants it to look lik)-.1 F 3.078(en)-.1 G -.15(ex)338.616 489.6 S 3.078(t. F)
+.15 F .578(or this purpose, a data type \(struc-)-.15 F 1.163(ture\) named)72
+501.6 R F2(WINDO)3.663 E(W)-.5 E F1 1.163(is def)3.663 F 1.163
+(ined which describes a windo)-.2 F 3.663(wi)-.25 G 1.164
+(mage to the routines, including its starting)328.407 501.6 R 1.449
+(position on the screen \(the \(y)72 513.6 R 2.5(,x)-.65 G 3.949(\)c)204.965
+513.6 S 1.449(o-ordinates of the upper left hand corner\) and its size.)216.684
+513.6 R 1.448(One of these)6.449 F(\(called)72 525.6 Q F2(cur)4.043 E(scr)-.1 E
+F1(for)4.043 E F2(curr)4.043 E 1.543(ent scr)-.37 F(een)-.37 E F1 4.044(\)i)C
+4.044(sas)217.446 525.6 S 1.544
+(creen image of what the terminal currently looks lik)237.754 525.6 R 4.044
+(e. Another)-.1 F(screen \(called)72 537.6 Q F2(stdscr)2.5 E F1 2.5(,f)C(or)
+161.97 537.6 Q F2(standar)2.5 E 2.5(ds)-.37 G(cr)214.38 537.6 Q(een)-.37 E F1
+2.5(\)i)C 2.5(sp)244.83 537.6 S(ro)256.22 537.6 Q(vided by def)-.15 E
+(ault to mak)-.1 E 2.5(ec)-.1 G(hanges on.)370.57 537.6 Q 2.775(Aw)97 553.8 S
+(indo)114.215 553.8 Q 2.775(wi)-.25 G 2.775(sap)144.52 553.8 S .274
+(urely internal representation.)163.4 553.8 R .274(It is used to b)5.274 F .274
+(uild and store a potential image of a por)-.2 F(-)-.2 E .96
+(tion of the terminal.)72 565.8 R .96(It doesn')5.96 F 3.46(tb)-.18 G .96
+(ear an)207.57 565.8 R 3.46(yn)-.15 G .96
+(ecessary relation to what is really on the terminal screen.)245.99 565.8 R .96
+(It is)5.96 F(more lik)72 577.8 Q 2.5(ea)-.1 G 2.5(na)116.89 577.8 S
+(rray of characters on which to mak)128.83 577.8 Q 2.5(ec)-.1 G(hanges.)279.51
+577.8 Q .828(When one has a windo)97 594 R 3.328(ww)-.25 G .827
+(hich describes what some part the terminal should look lik)208.92 594 R .827
+(e, the routine)-.1 F/F3 10/Courier-Bold@0 SF(refresh)72 606 Q F1 .146
+(\(\) \(or)B F3(wrefresh)2.646 E F1 .146(\(\) if the windo)B 2.646(wi)-.25 G
+2.646(sn)255.936 606 S(ot)267.472 606 Q F2(stdscr)2.646 E F1 2.646(\)i)C 2.646
+(sc)310.544 606 S(alled.)321.52 606 Q F3(Refresh)5.146 E F1 .146(\(\) mak)B
+.147(es the terminal, in the)-.1 F .231(area co)72 618 R -.15(ve)-.15 G .231
+(red by the windo).15 F 1.531 -.65(w, l)-.25 H .231(ook lik).65 F 2.731(et)-.1
+G .231(hat windo)230.617 618 R 4.031 -.65(w. N)-.25 H .23
+(ote, therefore, that changing something on a windo).65 F(w)-.25 E F2(does)72
+630 Q/F4 10/Times-BoldItalic@0 SF(not)2.936 E F2 -.15(ch)2.936 G(ang).15 E
+2.936(et)-.1 G .436(he terminal)143.888 630 R F1 5.436(.A)C .436
+(ctual updates to the terminal screen are made only by calling)205.31 630 R F3
+(refresh)2.937 E F1(\(\))A(or)72 642 Q F3(wrefresh)3.228 E F1 3.228(\(\). This)
+B(allo)3.228 E .728(ws the programmer to maintain se)-.25 F -.15(ve)-.25 G .727
+(ral dif).15 F .727(ferent ideas of what a portion of the)-.25 F .888
+(terminal screen should look lik)72 654 R 3.389(e. Also,)-.1 F .889
+(changes can be made to windo)3.389 F .889(ws in an)-.25 F 3.389(yo)-.15 G
+(rder)411.953 654 Q 3.389(,w)-.4 G .889(ithout re)440.762 654 R -.05(ga)-.15 G
+.889(rd to).05 F .214(motion ef)72 666 R -.2(fi)-.25 G(cienc).2 E 4.014 -.65
+(y. T)-.15 H .214(hen, at will, the programmer can ef).65 F(fecti)-.25 E -.15
+(ve)-.25 G .214(ly say \231mak).15 F 2.713(ei)-.1 G 2.713(tl)382.002 666 S .213
+(ook lik)390.275 666 R 2.713(et)-.1 G .213(his\232, and the pack-)428.381 666 R
+(age will e)72 678 Q -.15(xe)-.15 G(cute the changes in an optimal w).15 E(ay)
+-.1 E(.)-.65 E EP
+%%Page: 4 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G 334.474
+-4.998(44 S)3.328 H(Sc)-.56 E(cr)442.888 60 Q -.18(re)447.33 60 S(ee)451.592 60
+Q(en)456.034 60 Q 2.5(nP)460.476 60 S -.1(Pa)468.538 60 S(ac)474.55 60 Q(ck)
+479.552 60 Q(ka)483.994 60 Q(ag)489.556 60 Q(ge)494.558 60 Q(e)499.56 60 Q
+-4.998(11)72 96 S -2.498(..)4.998 G -4.998(44)2.498 G 7.496 -2.498(.. N)4.998 H
+(Na)92.01 96 Q(am)99.232 96 Q(mi)104.234 96 Q(in)112.566 96 Q(ng)115.348 96 Q
+2.5(gC)120.91 96 S(Co)128.412 96 Q(on)135.634 96 Q -.4(nv)140.636 96 S -.1(ve)
+145.798 96 S(en)150.7 96 Q(nt)155.142 96 Q(ti)160.704 96 Q(io)164.036 96 Q(on)
+166.818 96 Q(ns)171.82 96 Q(s)177.382 96 Q/F1 10/Times-Roman@0 SF .133
+(As hinted abo)97 112.2 R -.15(ve)-.15 G 2.633(,t).15 G .133
+(he routines can use se)169.869 112.2 R -.15(ve)-.25 G .133(ral windo).15 F
+.133(ws, b)-.25 F .133(ut tw)-.2 F 2.633(oa)-.1 G .133(re al)358.003 112.2 R
+-.1(wa)-.1 G .133(ys a).1 F -.25(va)-.2 G(ilable:).25 E/F2 10/Times-Italic@0 SF
+(cur)2.633 E(scr)-.1 E F1 2.634(,w)C .134(hich is)477.476 112.2 R .07
+(the image of what the terminal looks lik)72 124.2 R 2.57(ea)-.1 G 2.57(tp)
+243.55 124.2 S .07(resent, and)253.9 124.2 R F2(stdscr)2.57 E F1 2.57(,w)C .07
+(hich is the image of what the programmer)336.04 124.2 R -.1(wa)72 136.2 S .496
+(nts the terminal to look lik).1 F 2.996(en)-.1 G -.15(ex)204.214 136.2 S 2.996
+(t. The).15 F .496(user should not access)2.996 F F2(cur)2.996 E(scr)-.1 E F1
+(directly)2.996 E 5.496(.C)-.65 G .496(hanges should be made)409.472 136.2 R
+(to the appropriate screen, and then the routine)72 148.2 Q/F3 10
+/Courier-Bold@0 SF(refresh)2.5 E F1(\(\) \(or)A F3(wrefresh)2.5 E F1
+(\(\)\) should be called.)A(Man)97 164.4 Q 2.903(yf)-.15 G .402
+(unctions are set up to deal with)126.413 164.4 R F2(stdscr)2.902 E F1 .402
+(as a def)2.902 F .402(ault screen.)-.1 F -.15(Fo)5.402 G 2.902(re).15 G .402
+(xample, to add a character to)386.47 164.4 R F2(stdscr)72 176.4 Q F1 2.76(,o)C
+.26(ne calls)106.15 176.4 R F3(addch)2.76 E F1 .26
+(\(\) with the desired character)B 5.26(.I)-.55 G 2.761(fad)293.2 176.4 S(if)
+311.492 176.4 Q .261(ferent windo)-.25 F 2.761(wi)-.25 G 2.761(st)380.944 176.4
+S 2.761(ob)390.375 176.4 S 2.761(eu)403.136 176.4 S .261(sed, the routine)
+415.337 176.4 R F3(wad-)2.761 E(dch)72 190.4 Q F1 .539(\(\) \(for)B F0 -7.218
+(ww)3.039 G F1(indo)7.218 E(w-specif)-.25 E(ic)-.2 E F3(addch)3.039 E F1 .539
+(\(\)\) is pro)B(vided)-.15 E/F4 7/Times-Roman@0 SF(1)275.106 186.4 Q F1 5.538
+(.T)278.606 190.4 S .538(his con)292.754 190.4 R -.15(ve)-.4 G .538
+(ntion of prepending function names with a).15 F<99>72 202.4 Q F0 -7.218(ww)C
+F1 2.887<9a77>7.218 G .387(hen the)98.209 202.4 R 2.887(ya)-.15 G .388
+(re to be applied to specif)139.933 202.4 R .388(ic windo)-.2 F .388
+(ws is consistent.)-.25 F .388(The only routines which do)5.388 F F2(not)2.888
+E F1 .388(do this)2.888 F(are those to which a windo)72 214.4 Q 2.5(wm)-.25 G
+(ust al)196.73 214.4 Q -.1(wa)-.1 G(ys be specif).1 E(ied.)-.2 E .815
+(In order to mo)97 230.6 R 1.115 -.15(ve t)-.15 H .815(he current \(y).15 F 2.5
+(,x)-.65 G 3.315(\)c)234.24 230.6 S .815(o-ordinates from one point to another)
+245.325 230.6 R 3.315(,t)-.4 G .815(he routines)407.295 230.6 R F3(move)3.315 E
+F1 .815(\(\) and)B F3(wmove)72 242.6 Q F1 .722(\(\) are pro)B 3.222(vided. Ho)
+-.15 F(we)-.25 E -.15(ve)-.25 G 1.522 -.4(r, i).15 H 3.222(ti).4 G 3.222(so)
+223.82 242.6 S .722(ften desirable to f)235.932 242.6 R .723(irst mo)-.2 F
+1.023 -.15(ve a)-.15 H .723(nd then perform some I/O operation.).15 F .695
+(In order to a)72 254.6 R -.2(vo)-.2 G .695
+(id clumsiness, most I/O routines can be preceded by the pref).2 F .695
+(ix \231)-.2 F F0 -8.328(mm)C -4.998(vv)8.328 G F1 3.194<9a61>4.998 G .694
+(nd the desired \(y)422.308 254.6 R 2.5(,x)-.65 G(\))500.67 254.6 Q
+(co-ordinates can then be added to the ar)72 266.6 Q(guments to the function.)
+-.18 E -.15(Fo)5 G 2.5(re).15 G(xample, the calls)353.69 266.6 Q(mo)112 282.8 Q
+-.15(ve)-.15 G(\(y).15 E 2.5(,x)-.65 G(\);)151.6 282.8 Q(addch\(ch\);)112 294.8
+Q(can be replaced by)72 311 Q(mv)112 327.2 Q(addch\(y)-.25 E 2.5(,x)-.65 G 2.5
+(,c)166.09 327.2 S(h\);)175.53 327.2 Q(and)72 343.4 Q(wmo)112 359.6 Q -.15(ve)
+-.15 G(\(win, y).15 E 2.5(,x)-.65 G(\);)178.82 359.6 Q -.1(wa)112 371.6 S
+(ddch\(win, ch\);).1 E(can be replaced by)72 387.8 Q(mvw)112 404 Q
+(addch\(win, y)-.1 E 2.5(,x)-.65 G 2.5(,c)193.46 404 S(h\);)202.9 404 Q 1.086
+(Note that the windo)72 420.2 R 3.586(wd)-.25 G 1.086(escription pointer \()
+169.974 420.2 R F2(win)A F1 3.586(\)c)C 1.086(omes before the added \(y)274.052
+420.2 R 2.5(,x)-.65 G 3.586(\)c)388.826 420.2 S 3.586(o-ordinates. If)400.182
+420.2 R 3.586(aw)3.586 G(indo)479.25 420.2 Q(w)-.25 E
+(pointer is needed, it is al)72 432.2 Q -.1(wa)-.1 G(ys the f).1 E
+(irst parameter passed.)-.2 E F0 -4.998(22)72 456.2 S 7.496 -2.498(.. V)4.998 H
+-.92(Va)84.506 456.2 S(ar)90.808 456.2 Q(ri)95.81 456.2 Q(ia)100.252 456.2 Q
+(ab)103.034 456.2 Q(bl)108.036 456.2 Q(le)113.598 456.2 Q(es)116.38 456.2 Q(s)
+120.822 456.2 Q F1(Man)97 472.4 Q 2.64(yv)-.15 G .139
+(ariables which are used to describe the terminal en)127.57 472.4 R .139
+(vironment are a)-.4 F -.25(va)-.2 G .139(ilable to the programmer).25 F(.)-.55
+E(The)72 484.4 Q 2.5(ya)-.15 G(re:)99.34 484.4 Q 61.28(type name)112 504.8 R
+(description)254 504.8 Q .4 LW 504 509.3 112 509.3 DL(WINDO)112 518.8 Q(W)-.35
+E/F5 10/Symbol SF(*)2.5 E F1(curscr)193 518.8 Q(current v)254 518.8 Q
+(ersion of the screen \(terminal screen\).)-.15 E(WINDO)112 530.8 Q(W)-.35 E F5
+(*)2.5 E F1(stdscr)193 530.8 Q(standard screen.)254 530.8 Q
+(Most updates are usually done here.)5 E(char)112 542.8 Q F5(*)2.5 E F1(Def)193
+542.8 Q F5(-)207.99 547.8 Q F1(term)213.48 542.8 Q(def)254 542.8 Q
+(ault terminal type if type cannot be determined)-.1 E 60.72(bool My)112 554.8
+R F5(-)206.89 559.8 Q F1(term)212.38 554.8 Q .698(use the terminal specif)254
+554.8 R .699(ication in)-.2 F F2(Def)3.199 E F5(-)401.993 559.8 Q F2(term)
+407.483 554.8 Q F1 .699(as terminal, irrele-)3.199 F -.25(va)254 566.8 S
+(nt of real terminal type).25 E(char)112 578.8 Q F5(*)2.5 E F1(ttytype)193
+578.8 Q(full name of the current terminal.)254 578.8 Q 67.94(int LINES)112
+590.8 R(number of lines on the terminal)254 590.8 Q 67.94(int COLS)112 602.8 R
+(number of columns on the terminal)254 602.8 Q 67.94(int ERR)112 614.8 R
+(error flag returned by routines on a f)254 614.8 Q(ail.)-.1 E 67.94(int OK)112
+626.8 R(flag returned by routines upon success.)254 626.8 Q F0 -4.998(33)72
+651.4 S 7.496 -2.498(.. U)4.998 H(Us)84.506 651.4 Q(sa)91.728 651.4 Q(ag)95.62
+651.4 Q(ge)100.622 651.4 Q(e)105.624 651.4 Q F1 .314
+(This is a description of ho)97 667.6 R 2.814(wt)-.25 G 2.814(oa)215.294 667.6
+S .314(ctually use the screen package.)227.548 667.6 R -.15(Fo)5.313 G 2.813
+(rs).15 G(implicity)378.128 667.6 Q 2.813(,w)-.65 G 2.813(ea)426.131 667.6 S
+.313(ssume all updat-)437.824 667.6 R(ing, reading, etc.)72 679.6 Q
+(is applied to)5 E F2(stdscr)2.5 E F1 2.5(,a)C(lthough a dif)228.65 679.6 Q
+(ferent windo)-.25 E 2.5(wc)-.25 G(an of course be specif)344.24 679.6 Q(ied.)
+-.2 E .32 LW 76 689.2 72 689.2 DL 80 689.2 76 689.2 DL 84 689.2 80 689.2 DL 88
+689.2 84 689.2 DL 92 689.2 88 689.2 DL 96 689.2 92 689.2 DL 100 689.2 96 689.2
+DL 104 689.2 100 689.2 DL 108 689.2 104 689.2 DL 112 689.2 108 689.2 DL 116
+689.2 112 689.2 DL 120 689.2 116 689.2 DL 124 689.2 120 689.2 DL 128 689.2 124
+689.2 DL 132 689.2 128 689.2 DL 136 689.2 132 689.2 DL 140 689.2 136 689.2 DL
+144 689.2 140 689.2 DL 148 689.2 144 689.2 DL 152 689.2 148 689.2 DL 156 689.2
+152 689.2 DL 160 689.2 156 689.2 DL 164 689.2 160 689.2 DL 168 689.2 164 689.2
+DL 172 689.2 168 689.2 DL 176 689.2 172 689.2 DL 180 689.2 176 689.2 DL 184
+689.2 180 689.2 DL 188 689.2 184 689.2 DL 192 689.2 188 689.2 DL 196 689.2 192
+689.2 DL 200 689.2 196 689.2 DL 204 689.2 200 689.2 DL 208 689.2 204 689.2 DL
+212 689.2 208 689.2 DL 216 689.2 212 689.2 DL/F6 5/Times-Roman@0 SF(1)93.6
+699.6 Q/F7 8/Times-Roman@0 SF(Actually)2 3.2 M(,)-.52 E/F8 8/Courier-Bold@0 SF
+(addch)2 E F7(\(\) is really a \231#def)A(ine\232 macro with ar)-.16 E
+(guments, as are most of the "functions" which act upon)-.144 E/F9 8
+/Times-Italic@0 SF(stdscr)2 E F7(.)A EP
+%%Page: 5 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 326.978(eP)
+134.236 60 S(PS)465.656 60 Q(S1)471.768 60 Q(1:)477.33 60 Q(:1)482.332 60 Q(19)
+485.664 60 Q(9-)490.666 60 Q(-5)495.668 60 Q(5)499 60 Q -4.998(33)72 96 S
+-2.498(..)4.998 G -4.998(11)2.498 G 7.496 -2.498(.. I)4.998 H(In)-1.39 E(ni)
+95.902 96 Q(it)101.464 96 Q(ti)104.246 96 Q(ia)107.578 96 Q(al)110.36 96 Q(li)
+115.362 96 Q(iz)118.144 96 Q(za)120.926 96 Q(at)125.368 96 Q(ti)130.37 96 Q(io)
+133.702 96 Q(on)136.484 96 Q(n)141.486 96 Q/F1 10/Times-Roman@0 SF 1.211
+(In order to use the screen package, the routines must kno)97 112.2 R 3.712(wa)
+-.25 G 1.212(bout terminal characteristics, and the)351.682 112.2 R 1.364
+(space for)72 124.2 R/F2 10/Times-Italic@0 SF(cur)3.864 E(scr)-.1 E F1(and)
+3.864 E F2(stdscr)3.864 E F1 1.364(must be allocated.)3.864 F 1.364
+(These functions are performed by)6.364 F/F3 10/Courier-Bold@0 SF(initscr)3.864
+E F1 3.864(\(\). Since)B(it)3.864 E 1.009(must allocate space for the windo)72
+136.2 R 1.009(ws, it can o)-.25 F -.15(ve)-.15 G(rflo).15 E 3.509(wc)-.25 G
+1.009(ore when attempting to do so.)298.009 136.2 R 1.009(On this rather rare)
+6.009 F(occasion,)72 148.2 Q F3(initscr)3.392 E F1 .892(\(\) returns ERR.)B F3
+(Initscr)5.892 E F1 .892(\(\) must)B/F4 10/Times-BoldItalic@0 SF(alw)3.392 E
+(ays)-.1 E F1 .891(be called before an)3.391 F 3.391(yo)-.15 G 3.391(ft)421.617
+148.2 S .891(he routines which)431.118 148.2 R(af)72 160.2 Q .34(fect windo)
+-.25 F .34(ws are used.)-.25 F .34
+(If it is not, the program will core dump as soon as either)5.34 F F2(cur)2.84
+E(scr)-.1 E F1(or)2.84 E F2(stdscr)2.84 E F1 .34(are ref-)2.84 F 3.65
+(erenced. Ho)72 172.2 R(we)-.25 E -.15(ve)-.25 G 1.95 -.4(r, i).15 H 3.65(ti).4
+G 3.65(su)165.48 172.2 S 1.15(sually best to w)178.02 172.2 R 1.15
+(ait to call it until after you are sure you will need it, lik)-.1 F 3.65(ea)
+-.1 G(fter)490.12 172.2 Q 1.102(checking for startup errors.)72 184.2 R -.7(Te)
+6.102 G 1.102(rminal status changing routines lik).7 F(e)-.1 E F3(nl)3.602 E F1
+1.102(\(\) and)B F3(cbreak)3.602 E F1 1.103(\(\) should be called)B(after)72
+196.2 Q F3(initscr)2.5 E F1(\(\).)A .68(After the initial windo)97 212.4 R
+3.179(wa)-.25 G .679(llocation done by)202.789 212.4 R F3(initscr)3.179 E F1
+.679(\(\), specif)B .679(ic windo)-.2 F 3.179(wc)-.25 G .679
+(haracteristics can be set.)404.773 212.4 R .834
+(Scrolling can be enabled by calling)72 224.4 R F3(scrollok)3.334 E F1 3.334
+(\(\). If)B .834(you w)3.334 F .835
+(ant the cursor to be left after the last change,)-.1 F(use)72 236.4 Q F3
+(leaveok)3.767 E F1 3.767(\(\). If)B 1.267(this isn')3.767 F 3.767(td)-.18 G
+(one,)201.535 236.4 Q F3(refresh)3.767 E F1 1.267(\(\) will mo)B 1.567 -.15
+(ve t)-.15 H 1.267(he cursor to the windo).15 F(w')-.25 E 3.767(sc)-.55 G 1.266
+(urrent \(y)438.808 236.4 R 2.5(,x)-.65 G 3.766(\)c)484.134 236.4 S(o-)495.67
+236.4 Q .061(ordinates after updating it.)72 248.4 R .061(Additional windo)
+5.061 F .061(ws can be created by using the functions)-.25 F F3(newwin)2.562 E
+F1 .062(\(\) and)B F3(sub-)2.562 E(win)72 260.4 Q F1(\(\).)A F3(Delwin)5.806 E
+F1 .806(\(\) allo)B .806(ws you to delete an e)-.25 F .806(xisiting windo)-.15
+F 4.606 -.65(w. T)-.25 H .806(he v).65 F(ariables)-.25 E F2(LINES)3.306 E F1
+(and)3.306 E F2(COLS)3.306 E F1 .806(control the)3.306 F 1.012
+(size of the terminal.)72 272.4 R(The)6.012 E 3.512(ya)-.15 G 1.012
+(re initially implicitly set by)188.83 272.4 R F3(initscr)3.512 E F1 1.012
+(\(\), b)B 1.013(ut can be altered e)-.2 F 1.013(xplicitly by the)-.15 F .723
+(user follo)72 284.4 R .723(wed by a call to)-.25 F F3(initscr)3.223 E F1 3.223
+(\(\). Note)B .723(that an)3.223 F 3.223(yc)-.15 G .723(all to)299.68 284.4 R
+F3(initscr)3.223 E F1 .723(\(\), will al)B -.1(wa)-.1 G .723(ys delete an).1 F
+3.222(ye)-.15 G(xisting)476.77 284.4 Q F2(stdscr)72 296.4 Q F1(and/or)5.142 E
+F2(cur)5.142 E(scr)-.1 E F1 2.642(before creating ne)5.142 F 5.142(wo)-.25 G
+2.643(nes so this change is best done before the initial call to)256.902 296.4
+R F3(initscr)72 308.4 Q F1(\(\).)A F0 -4.998(33)72 324.6 S -2.498(..)4.998 G
+-4.998(22)2.498 G 7.496 -2.498(.. O)4.998 H(Ou)92.01 324.6 Q(ut)99.792 324.6 Q
+(tp)105.354 324.6 Q(pu)108.686 324.6 Q(ut)114.248 324.6 Q(t)119.81 324.6 Q F1
+.763(The basic functions used to change what will go on a windo)97 340.8 R
+3.263(wa)-.25 G(re)359.758 340.8 Q F3(addch)3.263 E F1 .763(\(\) and)B F3(move)
+3.263 E F1(\(\).)A F3(Addch)5.763 E F1(\(\))A .585
+(adds a character at the current \(y)72 352.8 R 2.5(,x)-.65 G 3.085(\)c)215.36
+352.8 S .585(o-ordinates, returning ERR if it w)226.215 352.8 R .586
+(ould cause the windo)-.1 F 3.086(wt)-.25 G 3.086(oi)463.334 352.8 S(lle)474.2
+352.8 Q -.05(ga)-.15 G(lly).05 E(scroll,)72 364.8 Q F2(i.e)3.315 E(.)-.15 E F1
+3.315(,p)C .815(rinting a character in the lo)122.92 364.8 R .815
+(wer right-hand corner of a terminal which automatically scrolls if)-.25 F .575
+(scrolling is not allo)72 376.8 R(wed.)-.25 E F3(Move)5.575 E F1 .575
+(\(\) changes the current \(y)B 2.5(,x)-.65 G 3.075(\)c)308.55 376.8 S .575
+(o-ordinates to whate)319.395 376.8 R -.15(ve)-.25 G 3.075(ry).15 G .575(ou w)
+422.64 376.8 R .575(ant them to be.)-.1 F 1.258
+(It returns ERR if you try to mo)72 388.8 R 1.557 -.15(ve o)-.15 H 1.757 -.25
+(ff t).15 H 1.257(he windo).25 F 5.057 -.65(w. A)-.25 H 3.757(sm).65 G 1.257
+(entioned abo)311.181 388.8 R -.15(ve)-.15 G 3.757(,y).15 G 1.257
+(ou can combine the tw)384.215 388.8 R 3.757(oi)-.1 G(nto)491.22 388.8 Q F3
+(mvaddch)72 400.8 Q F1(\(\) to do both things in one call.)A .394
+(The other output functions \(such as)97 417 R F3(addstr)2.894 E F1 .394
+(\(\) and)B F3(printw)2.894 E F1 .394(\(\)\) all call)B F3(addch)2.894 E F1
+.394(\(\) to add characters to)B(the windo)72 429 Q -.65(w.)-.25 G .194
+(After a change has been made to the windo)97 445.2 R 1.494 -.65(w, y)-.25 H
+.193(ou must call).65 F F3(refresh)2.693 E F1 2.693(\(\). when)B .193(you w)
+2.693 F .193(ant the portion)-.1 F 2.381(of the terminal co)72 457.2 R -.15(ve)
+-.15 G 2.382(red by the windo).15 F 4.882(wt)-.25 G 4.882(or)248.372 457.2 S
+2.382(eflect the change.)261.584 457.2 R 2.382(In order to optimize f)7.382 F
+2.382(inding changes,)-.2 F F3(refresh)72 469.2 Q F1 .006(\(\) assumes that an)
+B 2.506(yp)-.15 G .006(art of the windo)198.304 469.2 R 2.506(wn)-.25 G .006
+(ot changed since the last)276.398 469.2 R F3(refresh)2.506 E F1 .006
+(\(\) of that windo)B 2.505(wh)-.25 G(as)495.67 469.2 Q .049
+(not been changed on the terminal,)72 481.2 R F2(i.e)2.549 E(.)-.15 E F1 2.549
+(,t)C .049(hat you ha)230.223 481.2 R .349 -.15(ve n)-.2 H .05
+(ot refreshed a portion of the terminal with an o).15 F -.15(ve)-.15 G(rlap-)
+.15 E .025(ping windo)72 493.2 R 3.825 -.65(w. I)-.25 H 2.525(ft).65 G .024
+(his is not the case, the routines)143.115 493.2 R F3(touchwin)2.524 E F1
+(\(\),)A F3(touchline)2.524 E F1 .024(\(\), and)B F3(touchoverlap)2.524 E F1
+.024(\(\) are)B(pro)72 505.2 Q .083(vided to mak)-.15 F 2.584(ei)-.1 G 2.584
+(tl)147.27 505.2 S .084(ook lik)155.414 505.2 R 2.584(ead)-.1 G .084
+(esired part of windo)202.506 505.2 R 2.584(wh)-.25 G .084
+(as been changed, thus forcing)297.572 505.2 R F3(refresh)2.584 E F1 .084
+(\(\) to check)B(that whole subsection of the terminal for changes.)72 517.2 Q
+.695(If you call)97 533.4 R F3(wrefresh)3.195 E F1 .695(\(\) with)B F2(cur)
+3.195 E(scr)-.1 E F1 3.195(,i)C 3.195(tw)255.44 533.4 S .695(ill mak)268.635
+533.4 R 3.194(et)-.1 G .694(he screen look lik)307.704 533.4 R 3.194(et)-.1 G
+.694(he image of)390.92 533.4 R F2(cur)3.194 E(scr)-.1 E F1 5.694(.T)C .694
+(his is)482.466 533.4 R(useful for implementing a command which w)72 545.4 Q
+(ould redra)-.1 E 2.5(wt)-.15 G(he screen in case it got messed up.)307.27
+545.4 Q F0 -4.998(33)72 569.4 S -2.498(..)4.998 G -4.998(33)2.498 G 7.496
+-2.498(.. I)4.998 H(In)-1.39 E(np)95.902 569.4 Q(pu)101.464 569.4 Q(ut)107.026
+569.4 Q(t)112.588 569.4 Q F1 .701
+(Input is essentially a mirror image of output.)97 585.6 R .702
+(The complementary function to)5.701 F F3(addch)3.202 E F1 .702(\(\) is)B F3
+(getch)3.202 E F1(\(\))A .051(which, if echo is set, will call)72 597.6 R F3
+(addch)2.551 E F1 .051(\(\) to echo the character)B 5.05(.S)-.55 G .05
+(ince the screen package needs to kno)327.01 597.6 R 2.55(ww)-.25 G(hat)491.78
+597.6 Q .255(is on the terminal at all times, if characters are to be echoed, \
+the tty must be in ra)72 609.6 R 2.755(wo)-.15 G 2.755(rc)414.135 609.6 S .255
+(break mode.)424.66 609.6 R .255(If it is)5.255 F(not,)72 621.6 Q F3(getch)2.5
+E F1(\(\) sets it to be cbreak, and then reads in the character)A(.)-.55 E F0
+-4.998(33)72 645.6 S -2.498(..)4.998 G -4.998(44)2.498 G 7.496 -2.498(.. T)
+4.998 H -.92(Te)92.01 645.6 S(er)97.762 645.6 Q(rm)102.204 645.6 Q(mi)106.646
+645.6 Q(in)114.978 645.6 Q(na)117.76 645.6 Q(at)123.322 645.6 Q(ti)128.324
+645.6 Q(io)131.656 645.6 Q(on)134.438 645.6 Q(n)139.44 645.6 Q F1 .044
+(In order to perform certain optimizations, and, on some terminals, to w)97
+661.8 R .044(ork at all, some things must be)-.1 F .058
+(done before the screen routines start up.)72 673.8 R .059
+(These functions are performed in)5.059 F F3(getttmode)2.559 E F1 .059
+(\(\) and)B F3(setterm)2.559 E F1(\(\),)A .233(which are called by)72 685.8 R
+F3(initscr)2.733 E F1 2.733(\(\). In)B .233
+(order to clean up after the routines, the routine)2.733 F F3(endwin)2.733 E F1
+.233(\(\) is pro)B(vided.)-.15 E .406(It restores tty modes to what the)72
+697.8 R 2.906(yw)-.15 G .406(ere when)217.732 697.8 R F3(initscr)2.906 E F1
+.407(\(\) w)B .407(as f)-.1 F .407(irst called.)-.2 F .407
+(The terminal state module uses)5.407 F .793(the v)72 709.8 R(ariable)-.25 E F2
+(cur)3.293 E(ses_termios)-.1 E F1 .793(to sa)3.293 F 1.093 -.15(ve t)-.2 H .793
+(he original terminal state which is then restored upon a call to).15 F F3
+(end-)3.292 E(win)72 721.8 Q F1 3.451(\(\). Thus,)B(an)3.451 E .951
+(ytime after the call to initscr)-.15 F(,)-.4 E F3(endwin)3.451 E F1 .952
+(\(\) should be called before e)B 3.452(xiting. Note)-.15 F(ho)3.452 E(we)-.25
+E -.15(ve)-.25 G -.4(r,).15 G EP
+%%Page: 6 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G 334.474
+-4.998(66 S)3.328 H(Sc)-.56 E(cr)442.888 60 Q -.18(re)447.33 60 S(ee)451.592 60
+Q(en)456.034 60 Q 2.5(nP)460.476 60 S -.1(Pa)468.538 60 S(ac)474.55 60 Q(ck)
+479.552 60 Q(ka)483.994 60 Q(ag)489.556 60 Q(ge)494.558 60 Q(e)499.56 60 Q/F1
+10/Times-Roman@0 SF(that)72 96 Q/F2 10/Courier-Bold@0 SF(endwin)3.338 E F1 .838
+(\(\) should al)B -.1(wa)-.1 G .838(ys be called).1 F F0 -5.558(bb)3.338 G
+-4.438(ee)5.558 G 3.906 -3.328(ff o)4.438 H(or)-1.67 E -.18(re)255.338 96 S(e)
+259.6 96 Q F1 .838(the f)3.338 F .838(inal calls to)-.2 F F2(delwin)3.337 E F1
+.837(\(\), which free the storage of the)B(windo)72 108 Q(ws.)-.25 E F0 -4.998
+(44)72 132 S 7.496 -2.498(.. C)4.998 H(Cu)84.506 132 Q(ur)91.728 132 Q(rs)97.29
+132 Q(so)101.732 132 Q(or)105.624 132 Q 2.5(rM)110.626 132 S(Mo)117.568 132 Q
+-.1(ov)127.01 132 S -.1(ve)131.912 132 S(em)136.814 132 Q(me)141.256 132 Q(en)
+149.588 132 Q(nt)154.03 132 Q 2.5(tO)159.592 132 S(Op)165.424 132 Q(pt)173.206
+132 Q(ti)178.768 132 Q(im)182.1 132 Q(mi)184.882 132 Q(iz)193.214 132 Q(za)
+195.996 132 Q(at)200.438 132 Q(ti)205.44 132 Q(io)208.772 132 Q(on)211.554 132
+Q(ns)216.556 132 Q(s)222.118 132 Q F1 .168(One of the most dif)97 148.2 R -.2
+(fi)-.25 G .168(cult things to do properly is motion optimization.).2 F .168
+(After using)5.168 F F2(gettmode)2.668 E F1 .168(\(\) and)B F2(setterm)72 160.2
+Q F1 .367(\(\) to get the terminal descriptions, the function)B F2(mvcur)2.866
+E F1 .366(\(\) deals with this task.)B .366(It usage is simple:)5.366 F
+(simply tell it where you are no)72 172.2 Q 2.5(wa)-.25 G(nd where you w)208.12
+172.2 Q(ant to go.)-.1 E -.15(Fo)5 G 2.5(re).15 G(xample)335.2 172.2 Q
+(mvcur\(0, 0, LINES/2, COLS/2\);)112 188.4 Q -.1(wo)72 208.8 S .04(uld mo).1 F
+.34 -.15(ve t)-.15 H .04(he cursor from the home position \(0,).15 F .04
+(0\) to the middle of the screen.)2.5 F .04(If you wish to force abso-)5.04 F
+.684(lute addressing, you can use the function)72 220.8 R F2(tgoto)3.184 E F1
+.684(\(\) from the)B F0 -3.328(tt)3.184 G -4.438(ee)3.328 G -4.438(rr)4.438 G
+-8.328(mm)4.438 G -2.778(ll)8.328 G -2.778(ii)2.778 G -5.558(bb)2.778 G F1 .684
+(\(7\) routines, or you can tell)5.558 F F2(mvcur)3.184 E F1(\(\))A 1.602
+(that you are impossibly f)72 232.8 R 1.602(ar a)-.1 F -.1(wa)-.15 G 2.902 -.65
+(y, F).1 H 1.602(or e).5 F 1.602(xample, to absolutely address the lo)-.15 F
+1.603(wer left hand corner of the)-.25 F(screen from an)72 244.8 Q
+(ywhere just claim that you are in the upper right hand corner:)-.15 E
+(mvcur\(0, COLS\2551, LINES\2551, 0\);)112 261 Q F0 -4.998(55)72 289.2 S 7.496
+-2.498(.. C)4.998 H(Ch)84.506 289.2 Q(ha)91.728 289.2 Q(ar)97.29 289.2 Q(ra)
+102.292 289.2 Q(ac)106.734 289.2 Q(ct)111.736 289.2 Q(te)116.178 289.2 Q(er)
+119.51 289.2 Q 2.5(rO)123.952 289.2 S(Ou)130.894 289.2 Q(ut)138.676 289.2 Q(tp)
+144.238 289.2 Q(pu)147.57 289.2 Q(ut)153.132 289.2 Q 2.5(ta)158.694 289.2 S(an)
+164.526 289.2 Q(nd)169.528 289.2 Q 2.5(dS)175.09 289.2 S(Sc)183.152 289.2 Q(cr)
+188.714 289.2 Q -.18(ro)193.156 289.2 S(ol)197.418 289.2 Q(ll)202.42 289.2 Q
+(li)205.202 289.2 Q(in)207.984 289.2 Q(ng)210.766 289.2 Q(g)216.328 289.2 Q F1
+.01(The character output polic)97 305.4 R 2.51(yd)-.15 G .01
+(eals with the follo)214.64 305.4 R .01(wing problems.)-.25 F .01
+(First, where is the location of the cur)5.01 F(-)-.2 E
+(sor after a character is printed, and secondly)72 317.4 Q 2.5(,w)-.65 G
+(hen does the screen scroll if scrolling is enabled.)260.18 317.4 Q .007
+(In the normal case the characters are output as e)97 333.6 R .007
+(xpected, with the cursor occup)-.15 F .007(ying the position of the)-.1 F(ne)
+72 345.6 Q 1.181(xt character to be output.)-.15 F(Ho)6.181 E(we)-.25 E -.15
+(ve)-.25 G 1.981 -.4(r, w).15 H 1.181
+(hen the cursor is on the last column of the line, the cursor will).4 F .129(r\
+emain on that position after the last character on the line is output and will\
+ only assume the position on the)72 357.6 R(ne)72 369.6 Q(xt line when the ne)
+-.15 E(xt character \(the f)-.15 E(irst on the ne)-.2 E(xt line\) is output.)
+-.15 E(Lik)97 385.8 Q -.25(ew)-.1 G .226
+(ise, if scrolling is enabled, a scroll will be in).25 F -.2(vo)-.4 G -.1(ke).2
+G 2.726(do).1 G .226(nly when the f)332.632 385.8 R .226
+(irst character on he f)-.2 F .226(irst line)-.2 F .697
+(past the bottom line of the windo)72 397.8 R 3.197(wi)-.25 G 3.197(so)221.349
+397.8 S 3.197(utput. If)233.436 397.8 R .697
+(scrolling is not enabled the chracters will to be output to)3.197 F
+(the bottom right corner of the windo)72 409.8 Q 2.5(ww)-.25 G
+(hich is the cursor location.)234.23 409.8 Q .368(This polic)97 426 R 2.868(ya)
+-.15 G(llo)149.806 426 Q .368(ws consistent beha)-.25 F .368
+(vior of the cursor at the boundary conditions.)-.2 F .367
+(Furthermore, it pre-)5.368 F -.15(ve)72 438 S .494(nts a scroll from happenin\
+g before it is actually needed \(the old package used to scroll when the botto\
+m).15 F(right position w)72 450 Q(as output a character\).)-.1 E
+(As a precendent, it models the)5 E/F3 10/Times-Italic@0 SF(xterm)2.5 E F1
+(character output con)2.5 E -.15(ve)-.4 G(ntions.).15 E F0 -4.998(66)72 474 S
+7.496 -2.498(.. T)4.998 H -.92(Te)84.506 474 S(er)90.258 474 Q(rm)94.7 474 Q
+(mi)99.142 474 Q(in)107.474 474 Q(na)110.256 474 Q(al)115.818 474 Q 2.5(lS)
+120.82 474 S(St)126.102 474 Q(ta)131.664 474 Q(at)134.996 474 Q(te)139.998 474
+Q 2.5(eH)143.33 474 S(Ha)150.272 474 Q(an)158.054 474 Q(nd)163.056 474 Q(dl)
+168.618 474 Q(li)174.18 474 Q(in)176.962 474 Q(ng)179.744 474 Q(g)185.306 474 Q
+F1 1.173(The v)97 490.2 R(ariable)-.25 E F3(cur)3.673 E(ses_termios)-.1 E F1
+1.173(contains the terminal state of the terminal.)3.673 F 1.172
+(Certain historical routines)6.172 F .301(return information:)72 502.2 R F2
+(baudrate)2.801 E F1(\(\),)A F2(erasechar)2.801 E F1(\(\),)A F2(killchar)2.801
+E F1 .301(\(\), and)B F2(ospeed)2.801 E F1 2.801(\(\). These)B .301
+(routines are obso-)2.801 F 1.059(lete and e)72 514.2 R 1.058
+(xist only for backw)-.15 F 1.058(ard compatibility)-.1 F 6.058(.I)-.65 G 3.558
+(fy)273.758 514.2 S 1.058(ou wish to use the information in the)285.646 514.2 R
+F3(cur)3.558 E(ses_termios)-.1 E F1(structure, you should use the)72 526.2 Q F3
+(tsetattr)2.5 E F1(\(3\) routines.)A F0 -4.998(77)72 550.2 S 7.496 -2.498(.. S)
+4.998 H(Su)84.506 550.2 Q(ub)90.068 550.2 Q(bw)95.63 550.2 Q(wi)101.192 550.2 Q
+(in)108.414 550.2 Q(nd)111.196 550.2 Q(do)116.758 550.2 Q -.1(ow)122.32 550.2 S
+(ws)127.222 550.2 Q(s)134.444 550.2 Q F1(Subwindo)97 566.4 Q 1.17(ws are windo)
+-.25 F 1.17(ws which do not ha)-.25 F 1.471 -.15(ve a)-.2 H 3.671(ni).15 G
+1.171(ndependent te)303.824 566.4 R 1.171(xt structure,)-.15 F F3(i.e)3.671 E
+(.)-.15 E F1 3.671(,t)C(he)434.298 566.4 Q 3.671(ya)-.15 G 1.171(re windo)
+456.699 566.4 R(ws)-.25 E .648(whose te)72 578.4 R .648
+(xt is a subset of the te)-.15 F .648(xt of a lar)-.15 F .647(ger windo)-.18 F
+.647(w: the)-.25 F F3(par)3.147 E(ent)-.37 E F1(windo)3.147 E 4.447 -.65(w. O)
+-.25 H .647(ne consequence of this is that).65 F .025
+(changes to either the parent or the child windo)72 590.4 R 2.525(wa)-.25 G
+.025(re destructi)271.655 590.4 R .325 -.15(ve t)-.25 H 2.525(ot).15 G .025
+(he other)341.04 590.4 R(,)-.4 E F3(i.e)2.525 E(.)-.15 E F1 2.526(,ac)C .026
+(hange to the subwindo)406.682 590.4 R(w)-.25 E .391
+(is also a change to the parent windo)72 602.4 R 2.891(wa)-.25 G .391
+(nd a change to the parent windo)232.068 602.4 R 2.891(wi)-.25 G 2.891(nt)
+374.805 602.4 S .391(he re)385.476 602.4 R .391(gion def)-.15 F .391
+(ined by the sub-)-.2 F(windo)72 614.4 Q 2.87(wi)-.25 G 2.87(si)109.62 614.4 S
+.37(mplicitly a change to the subwindo)119.16 614.4 R 2.871(wa)-.25 G 2.871(sw)
+275.562 614.4 S 2.871(ell. Apart)289.543 614.4 R .371
+(from this detail, subwindo)2.871 F .371(ws function lik)-.25 F(e)-.1 E(an)72
+626.4 Q 2.5(yo)-.15 G(ther windo)93.79 626.4 Q -.65(w.)-.25 G F0 -4.998(88)72
+650.4 S 7.496 -2.498(.. T)4.998 H(Th)84.506 650.4 Q(he)91.178 650.4 Q 2.5(eF)
+96.74 650.4 S(Fu)103.682 650.4 Q(un)109.794 650.4 Q(nc)115.356 650.4 Q(ct)
+120.918 650.4 Q(ti)125.36 650.4 Q(io)128.692 650.4 Q(on)131.474 650.4 Q(ns)
+136.476 650.4 Q(s)142.038 650.4 Q F1 1.409(In the follo)97 666.6 R 1.409
+(wing def)-.25 F 1.409(initions, \231)-.2 F/F4 8/Times-Bold@0 SF -3.998<8787>C
+F1 3.909<9a6d>3.998 G 1.408
+(eans that the \231function\232 is really a \231#def)241.477 666.6 R 1.408
+(ine\232 macro with ar)-.2 F(gu-)-.18 E(ments.)72 678.6 Q F2(addch)72 706.8 Q
+F1(\()A F3 -.15(ch)C(ar c).15 E(h)-.15 E F1<293b87>A EP
+%%Page: 7 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 326.978(eP)
+134.236 60 S(PS)465.656 60 Q(S1)471.768 60 Q(1:)477.33 60 Q(:1)482.332 60 Q(19)
+485.664 60 Q(9-)490.666 60 Q(-7)495.668 60 Q(7)499 60 Q/F1 10/Times-Roman@0 SF
+.805(Add the character)97 96 R/F2 10/Times-Italic@0 SF -.15(ch)3.306 G F1 .806
+(on the windo)3.456 F 3.306(wa)-.25 G 3.306(tt)254.14 96 S .806(he current \(y)
+263.006 96 R 2.5(,x)-.65 G 3.306(\)c)325.058 96 S 3.306(o-ordinates. If)336.134
+96 R .806(the character is a ne)3.306 F(wline)-.25 E 1.063
+(\(\264\\n\264\) the line will be cleared to the end, and the current \(y)97
+108 R 2.5(,x)-.65 G 3.563(\)c)351.546 108 S 1.062
+(o-ordinates will be changed to the)362.879 108 R(be)97 120 Q .221(ginning of)
+-.15 F 2.721(ft)-.25 G .222(he ne)156.482 120 R .222(xt line if ne)-.15 F .222
+(wline mapping is on, or to the ne)-.25 F .222
+(xt line at the same x co-ordinate if it)-.15 F 1.682(is of)97 132 R 4.182
+(f. A)-.25 F 1.682(return \(\264\\r\264\) will mo)4.182 F 1.982 -.15(ve t)-.15
+H 4.182(ot).15 G 1.682(he be)252.106 132 R 1.681
+(ginning of the line on the windo)-.15 F 5.481 -.65(w. T)-.25 H 1.681
+(abs \(\264\\t\264\) will be)-.15 F -.15(ex)97 144 S .093
+(panded into spaces in the normal tabstop positions of e).15 F -.15(ve)-.25 G
+.093(ry eight characters.).15 F .093(This returns ERR if it)5.093 F -.1(wo)97
+156 S(uld cause the screen to scroll ille).1 E -.05(ga)-.15 G(lly).05 E(.)-.65
+E/F3 10/Courier-Bold@0 SF(addstr)72 184.2 Q F1(\()A F2 -.15(ch)C(ar).15 E/F4 10
+/Symbol SF(*)2.5 E F2(str)A F1<293b87>A .164(Add the string pointed to by)97
+200.4 R F2(str)2.664 E F1 .163(on the windo)2.663 F 2.663(wa)-.25 G 2.663(tt)
+292.826 200.4 S .163(he current \(y)301.049 200.4 R 2.5(,x)-.65 G 2.663(\)c)
+361.815 200.4 S 2.663(o-ordinates. This)372.248 200.4 R .163(returns ERR if)
+2.663 F(it w)97 212.4 Q(ould cause the screen to scroll ille)-.1 E -.05(ga)-.15
+G(lly).05 E 5(.I)-.65 G 2.5(nt)277.69 212.4 S
+(his case, it will put on as much as it can.)287.97 212.4 Q F3(baudrate)72
+240.6 Q F1<28293b87>A 2.353(Returns the output baud rate of the terminal.)97
+256.8 R 2.354(This is a system dependent constant \(def)7.353 F 2.354(ined in)
+-.2 F F0 -5.698(<<)97 268.8 S -3.888(ss)5.698 G -4.998(yy)3.888 G -3.888(ss)
+4.998 G -2.778(//)3.888 G -3.328(tt)2.778 G -3.328(tt)3.328 G 6.796 -4.998
+(yy .)3.328 H(.h)2.5 E(h>)131.74 268.8 Q(>)137.302 268.8 Q F1
+(on BSD systems, which is included by)2.5 E F0 -5.698(<<)2.5 G -4.438(cc)5.698
+G -5.558(uu)4.438 G -4.438(rr)5.558 G -3.888(ss)4.438 G -4.438(ee)3.888 G
+-3.888(ss)4.438 G -2.498(..)3.888 G -5.558(hh)2.498 G -5.698(>>)5.558 G F1(\).)
+5.698 E F3(box)72 297 Q F1(\()A F2(WINDO)A 2.5(Ww)-.5 G(in)143.1 297 Q F1(,)A
+F2 -.15(ch)2.5 G(ar vert).15 E F1(,)A F2 -.15(ch)2.5 G(ar hor).15 E F1(\);)A
+(Dra)97 313.2 Q .079(ws a box around the windo)-.15 F 2.579(wu)-.25 G(sing)
+234.824 313.2 Q F2(vert)2.578 E F1 .078(as the character for dra)2.578 F .078
+(wing the v)-.15 F .078(ertical sides, and)-.15 F F2(hor)2.578 E F1(for)2.578 E
+(dra)97 325.2 Q 1.58(wing the horizontal lines.)-.15 F 1.58
+(If scrolling is not allo)6.58 F 1.58(wed, and the windo)-.25 F 4.08(we)-.25 G
+1.58(ncompasses the lo)413.33 325.2 R(wer)-.25 E
+(right-hand corner of the terminal, the corners are left blank to a)97 337.2 Q
+-.2(vo)-.2 G(id a scroll.).2 E F3(cbreak)72 365.4 Q F1<28293b87>A
+(Set or the terminal to cbreak mode.)97 381.6 Q F3(clear)72 409.8 Q F1
+<28293b87>A 1.131(Resets the entire windo)97 426 R 3.631(wt)-.25 G 3.631(ob)
+207.374 426 S 3.631(lanks. If)221.005 426 R F2(win)3.631 E F1 1.13
+(is a screen, this sets the clear flag, which will cause a)3.631 F(clear)97 438
+Q .469(-screen sequence to be sent on the ne)-.2 F(xt)-.15 E F3(refresh)2.969 E
+F1 .469(\(\) call.)B .47(This also mo)5.469 F -.15(ve)-.15 G 2.97(st).15 G .47
+(he current \(y)423.55 438 R 2.5(,x)-.65 G 2.97(\)c)484.93 438 S(o-)495.67 438
+Q(ordinates to \(0, 0\).)97 450 Q F3(clearok)72 478.2 Q F1(\()A F2(WINDO)A(W)
+-.5 E F4(*)2.5 E F2(scr)A F1(,)A F2(int boolf)2.5 E F1<293b87>A .444
+(Sets the clear flag for the screen)97 494.4 R F2(scr)2.943 E F1 5.443(.I)C(f)
+254.387 494.4 Q F2(boolf)2.943 E F1 .443(is non-zero, this will force a clear)
+2.943 F .443(-screen to be printed)-.2 F 1.33(on the ne)97 506.4 R(xt)-.15 E F3
+(refresh)3.83 E F1 1.33(\(\), or stop it from doing so if)B F2(boolf)3.83 E F1
+1.33(is 0.)3.83 F 1.33(This only w)6.33 F 1.33(orks on screens, and,)-.1 F
+(unlik)97 518.4 Q(e)-.1 E F3(clear)3.032 E F1 .531
+(\(\), does not alter the contents of the screen.)B(If)5.531 E F2(scr)3.031 E
+F1(is)3.031 E F2(cur)3.031 E(scr)-.1 E F1 3.031(,t)C .531(he ne)405.297 518.4 R
+(xt)-.15 E F3(refresh)3.031 E F1 .531(\(\) call)B(will cause a clear)97 530.4 Q
+(-screen, e)-.2 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)223.57 530.4 S(he windo)
+232.18 530.4 Q 2.5(wp)-.25 G(assed to)283.59 530.4 Q F3(refresh)2.5 E F1
+(\(\) is not a screen.)A F3(clrtobot)72 558.6 Q F1<28293b87>A -.4(Wi)97 574.8 S
+1.287(pes the windo).4 F 3.787(wc)-.25 G 1.287(lear from the current \(y)
+182.141 574.8 R 2.5(,x)-.65 G 3.787(\)c)289.939 574.8 S 1.288
+(o-ordinates to the bottom.)301.496 574.8 R 1.288(This does not force a)6.288 F
+(clear)97 586.8 Q 1.505(-screen sequence on the ne)-.2 F 1.505
+(xt refresh under an)-.15 F 4.005(yc)-.15 G 4.005(ircumstances. This)322.341
+586.8 R 1.505(has no associated \231)4.005 F F0 -8.328(mm)C -4.998(vv)8.328 G
+F1<9a>4.998 E(command.)97 598.8 Q F3(clrtoeol)72 627 Q F1<28293b87>A -.4(Wi)97
+643.2 S .342(pes the windo).4 F 2.842(wc)-.25 G .342(lear from the current \(y)
+179.306 643.2 R 2.5(,x)-.65 G 2.842(\)c)283.324 643.2 S .342
+(o-ordinates to the end of the line.)293.936 643.2 R .343(This has no asso-)
+5.343 F(ciated \231)97 655.2 Q F0 -8.328(mm)C -4.998(vv)8.328 G F1 2.5<9a63>
+4.998 G(ommand.)152.534 655.2 Q F3(crmode)72 683.4 Q F1<28293b87>A 1.701
+(Identical to)97 699.6 R F3(cbreak)4.201 E F1 4.201(\(\). The)B 1.701
+(misnamed macro)4.201 F F3(crmode)4.201 E F1 1.701(\(\) and)B F3(nocrmode)4.201
+E F1 1.701(\(\) is retained for back-)B -.1(wa)97 711.6 S
+(rds compatibility with ealier v).1 E(ersions of the library)-.15 E(.)-.65 E EP
+%%Page: 8 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G 334.474
+-4.998(88 S)3.328 H(Sc)-.56 E(cr)442.888 60 Q -.18(re)447.33 60 S(ee)451.592 60
+Q(en)456.034 60 Q 2.5(nP)460.476 60 S -.1(Pa)468.538 60 S(ac)474.55 60 Q(ck)
+479.552 60 Q(ka)483.994 60 Q(ag)489.556 60 Q(ge)494.558 60 Q(e)499.56 60 Q/F1
+10/Courier-Bold@0 SF(delch)72 96 Q/F2 10/Times-Roman@0 SF(\(\);)A .408
+(Delete the character at the current \(y)97 112.2 R 2.5(,x)-.65 G 2.908(\)c)
+254.848 112.2 S 2.908(o-ordinates. Each)265.526 112.2 R .408
+(character after it on the line shifts to the)2.908 F
+(left, and the last character becomes blank.)97 124.2 Q F1(deleteln)72 152.4 Q
+F2(\(\);)A 1.437(Delete the current line.)97 168.6 R(Ev)6.437 E 1.437
+(ery line belo)-.15 F 3.937(wt)-.25 G 1.436(he current one will mo)276.899
+168.6 R 1.736 -.15(ve u)-.15 H 1.436(p, and the bottom line will).15 F
+(become blank.)97 180.6 Q(The current \(y)5 E 2.5(,x)-.65 G 2.5(\)c)226.87
+180.6 S(o-ordinates will remain unchanged.)237.14 180.6 Q F1(delwin)72 208.8 Q
+F2(\()A/F3 10/Times-Italic@0 SF(WINDO)A(W)-.5 E/F4 10/Symbol SF(*)2.5 E F3(win)
+A F2(\);)A .311(Deletes the windo)97 225 R 2.811(wf)-.25 G .311(rom e)182.943
+225 R 2.811(xistence. All)-.15 F .311(resources are freed for future use by)
+2.811 F F0 -4.438(cc)2.811 G -4.998(aa)4.438 G -2.778(ll)4.998 G -2.778(ll)
+2.778 G -4.998(oo)2.778 G -4.438(cc)4.998 G F2 2.811(\(3\). If)4.438 F 2.812
+(aw)2.812 G(indo)479.25 225 Q(w)-.25 E 1.749(has a)97 237 R F1(subwin)4.249 E
+F2 1.749(\(\) allocated windo)B 4.249(wi)-.25 G 1.749
+(nside of it, deleting the outer windo)249.525 237 R 4.248(wt)-.25 G 1.748
+(he subwindo)416.506 237 R 4.248(wi)-.25 G 4.248(sn)483.082 237 S(ot)496.22 237
+Q(af)97 249 Q .856(fected, e)-.25 F -.15(ve)-.25 G 3.356(nt).15 G .856
+(hough this does in)159.422 249 R -.25(va)-.4 G .856(lidate it.).25 F .856
+(Therefore, subwindo)5.856 F .856(ws should be deleted before their)-.25 F
+(outer windo)97 261 Q(ws are.)-.25 E F1(echo)72 289.2 Q F2<28293b87>A
+(Sets the terminal to echo characters.)97 305.4 Q F1(endwin)72 333.6 Q F2
+(\(\);)A 3.04(Finish up windo)97 349.8 R 5.54(wr)-.25 G 3.04(outines before e)
+183.93 349.8 R 5.54(xit. This)-.15 F 3.04
+(restores the terminal to the state it w)5.54 F 3.04(as before)-.1 F F1
+(initscr)97 361.8 Q F2 .147(\(\) \(or)B F1(gettmode)2.647 E F2 .147(\(\) and)B
+F1(setterm)2.647 E F2 .148(\(\)\) w)B .148(as called.)-.1 F .148(It should al)
+5.148 F -.1(wa)-.1 G .148(ys be called before e).1 F(xiting)-.15 E 1.047
+(and before the f)97 373.8 R 1.047(inal calls to)-.2 F F1(delwin)3.547 E F2
+3.547(\(\). It)B 1.046(does not e)3.547 F 3.546(xit. This)-.15 F 1.046
+(is especially useful for resetting tty)3.546 F
+(stats when trapping rubouts via)97 385.8 Q F0 -3.888(ss)2.5 G -2.778(ii)3.888
+G -4.998(gg)2.778 G -5.558(nn)4.998 G -4.998(aa)5.558 G -2.778(ll)4.998 G F2
+(\(2\).)2.778 E F1(erase)72 414 Q F2<28293b87>A .066(Erases the windo)97 430.2
+R 2.566(wt)-.25 G 2.566(ob)177.768 430.2 S .066
+(lanks without setting the clear flag.)190.334 430.2 R .066
+(This is analagous to)5.066 F F1(clear)2.567 E F2 .067(\(\), e)B .067
+(xcept that)-.15 F 1.363(it ne)97 442.2 R -.15(ve)-.25 G 3.863(rc).15 G 1.363
+(auses a clear)136.536 442.2 R 1.363(-screen sequence to be generated on a)-.2
+F F1(refresh)3.862 E F2 3.862(\(\). This)B 1.362(has no associated)3.862 F<99>
+97 454.2 Q F0 -8.328(mm)C -4.998(vv)8.328 G F2 2.5<9a63>4.998 G(ommand.)126.154
+454.2 Q F1(erasechar)72 482.4 Q F2<28293b87>A .23
+(Returns the erase character for the terminal,)97 498.6 R F3(i.e)2.73 E(.)-.15
+E F2 2.73(,t)C .231(he character used by the user to erase a single char)296.41
+498.6 R(-)-.2 E(acter from the input.)97 510.6 Q F1(flushok)72 538.8 Q F2(\()A
+F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)A F3(int boolf)2.5 E F2(\);)A
+(Normally)97 555 Q(,)-.65 E F1(refresh)3.743 E F2(\(\))A F1(fflush)3.743 E F2
+(\()A F3 -.4('s)C F2(\);).4 E F3(stdout)3.743 E F2 1.243(when it is f)3.743 F
+(inished.)-.2 E F1(flushok)6.242 E F2 1.242(\(\) allo)B 1.242
+(ws you to control)-.25 F 2.5(this. if)97 567 R F3(boolf)2.5 E F2
+(is non-zero \()2.5 E F3(i.e)A(.)-.15 E F2 2.5(,n)C(on-zero\) it will do the)
+223.23 567 Q F1(fflush)2.5 E F2(\(\), otherwise it will not.)A F1(getch)72
+595.2 Q F2<28293b87>A .443
+(Gets a character from the terminal and \(if necessary\) echos it on the windo)
+97 611.4 R 4.244 -.65(w. T)-.25 H .444(his returns ERR if it).65 F -.1(wo)97
+623.4 S .436(uld cause the screen to scroll ille).1 F -.05(ga)-.15 G(lly).05 E
+5.435(.O)-.65 G .435(therwise, the character gotten is returned.)276.57 623.4 R
+(If)5.435 E F3(noec)2.935 E(ho)-.15 E F2(has)2.935 E .561
+(been set, then the windo)97 635.4 R 3.061(wi)-.25 G 3.061(sl)208.985 635.4 S
+.561(eft unaltered.)218.716 635.4 R .561
+(In order to retain control of the terminal, it is necessary)5.561 F .74(to ha)
+97 647.4 R 1.04 -.15(ve o)-.2 H .74(ne of).15 F F3(noec)3.24 E(ho)-.15 E F2(,)A
+F3(cbr)3.24 E(eak)-.37 E F2 3.24(,o)C(r)231.09 647.4 Q F3 -.15(ra)3.24 G(wmode)
+.15 E F2 3.24(set. If)3.24 F .739(you do not set one, whate)3.239 F -.15(ve)
+-.25 G 3.239(rr).15 G .739(outine you call to)432.063 647.4 R
+(read characters will set)97 659.4 Q F3(cbr)2.5 E(eak)-.37 E F2
+(for you, and then reset to the original mode when f)2.5 E(inished.)-.2 E F1
+(getstr)72 687.6 Q F2(\()A F3 -.15(ch)C(ar).15 E F4(*)2.5 E F3(str)A F2<293b87>
+A .571(Get a string through the windo)97 703.8 R 3.071(wa)-.25 G .571
+(nd put it in the location pointed to by)236.826 703.8 R F3(str)3.072 E F2
+3.072(,w)C .572(hich is assumed to be)416.162 703.8 R(lar)97 715.8 Q .798
+(ge enough to handle it.)-.18 F .798(It sets tty modes if necessary)5.798 F
+3.298(,a)-.65 G .797(nd then calls)336.578 715.8 R F1(getch)3.297 E F2 .797
+(\(\) \(or)B F1(wgetch)3.297 E F2 .797(\(\)\) to)B EP
+%%Page: 9 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 326.978(eP)
+134.236 60 S(PS)465.656 60 Q(S1)471.768 60 Q(1:)477.33 60 Q(:1)482.332 60 Q(19)
+485.664 60 Q(9-)490.666 60 Q(-9)495.668 60 Q(9)499 60 Q/F1 10/Times-Roman@0 SF
+1.192(get the characters needed to f)97 96 R 1.192
+(ill in the string until a ne)-.2 F 1.193(wline or EOF is encountered.)-.25 F
+1.193(The ne)6.193 F(wline)-.25 E(stripped of)97 108 Q 2.5(ft)-.25 G
+(he string.)148.41 108 Q(This returns ERR if it w)5 E
+(ould cause the screen to scroll ille)-.1 E -.05(ga)-.15 G(lly).05 E(.)-.65 E
+/F2 10/Courier-Bold@0 SF(gettmode)72 136.2 Q F1(\(\);)A(Get the tty stats.)97
+152.4 Q(This is normally called by)5 E F2(initscr)2.5 E F1(\(\).)A F2(getyx)72
+180.6 Q F1(\()A/F3 10/Times-Italic@0 SF(WINDO)A(W)-.5 E/F4 10/Symbol SF(*)2.5 E
+F3(win)A F1(,)A F3(int y)2.5 E F1(,)A F3(int x)2.5 E F1(\);)A .121
+(Puts the current \(y)97 196.8 R 2.5(,x)-.65 G 2.621(\)c)180.313 196.8 S .121
+(o-ordinates of)190.704 196.8 R F3(win)2.621 E F1 .121(in the v)2.621 F
+(ariables)-.25 E F3(y)2.621 E F1(and)2.62 E F3(x)2.62 E F1 5.12(.S)C .12
+(ince it is a macro, not a function,)371.79 196.8 R
+(you do not pass the address of)97 208.8 Q F3(y)2.5 E F1(and)2.5 E F3(x)2.5 E
+F1(.)A F2(idlok)72 237 Q F1(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F1(,)A
+F3(int boolf)2.5 E F1(\);)A(Reserv)97 253.2 Q .248(ed for future use.)-.15 F
+.248(This will e)5.248 F -.15(ve)-.25 G .248(ntually signal to).15 F F2
+(refresh)2.748 E F1 .249(\(\) that it is all right to use the insert)B
+(and delete line sequences when updating the windo)97 265.2 Q -.65(w.)-.25 G F2
+(inch)72 293.4 Q F1<28293b87>A .608
+(Returns the character at the current position on the gi)97 309.6 R -.15(ve)
+-.25 G 3.108(nw).15 G(indo)339.302 309.6 Q 4.408 -.65(w. T)-.25 H .608
+(his does not mak).65 F 3.108(ea)-.1 G .908 -.15(ny c)458.832 309.6 T(hanges)
+.15 E(to the windo)97 321.6 Q -.65(w.)-.25 G F2(initscr)72 349.8 Q F1(\(\);)A
+.573(Initialize the screen routines.)97 366 R .573
+(This must be called before an)5.573 F 3.073(yo)-.15 G 3.073(ft)353.639 366 S
+.573(he screen routines are used.)362.822 366 R .573(It ini-)5.573 F .564(tial\
+izes the terminal-type data and such, and without it none of the routines can \
+operate.)97 378 R .563(If standard)5.563 F .242(input is not a tty)97 390 R
+2.742(,i)-.65 G 2.742(ts)170.35 390 S .242(ets the specif)179.762 390 R .242
+(ications to the terminal whose name is pointed to by)-.2 F F3(Def)2.743 E F4
+(-)460.217 395 Q F3(term)465.707 390 Q F1(\(ini-)2.743 E .097(tially "dumb"\).)
+97 402 R .097(If the boolean)5.097 F F3(My)2.597 E F4(-)233.125 407 Q F3(term)
+238.615 402 Q F1 .097(is non-zero,)2.597 F F3(Def)2.597 E F4(-)323.886 407 Q F3
+(term)329.376 402 Q F1 .097(is al)2.597 F -.1(wa)-.1 G .096(ys used.).1 F .096
+(If the system supports)5.096 F(the)97 414 Q F0 -6.668(TT)3.124 G -3.888(II)
+6.668 G -7.778(OO)3.888 G -7.218(CC)7.778 G -7.778(GG)7.218 G -9.998(WW)7.778 G
+-3.888(II)9.998 G -7.218(NN)3.888 G -5.558(SS)7.218 G -6.668(ZZ)5.558 G F3
+(ioctl\(2\))9.792 E F1 .624
+(call, it is used to get the number of lines and columns for the terminal,)
+3.124 F(otherwise it is tak)97 426 Q(en from the)-.1 E F0 -3.328(tt)2.5 G
+-4.438(ee)3.328 G -4.438(rr)4.438 G -8.328(mm)4.438 G -4.438(cc)8.328 G -4.998
+(aa)4.438 G -5.558(pp)4.998 G F1(description.)8.058 E F2(insch)72 454.2 Q F1
+(\()A F3 -.15(ch)C(ar c).15 E F1(\);)A(Insert)97 470.4 Q F3(c)2.67 E F1 .17
+(at the current \(y)2.67 F 2.5(,x)-.65 G 2.67(\)c)203 470.4 S .169
+(o-ordinates Each character after it shifts to the right, and the last charac-)
+213.44 470.4 R(ter disappears.)97 482.4 Q(This returns ERR if it w)5 E
+(ould cause the screen to scroll ille)-.1 E -.05(ga)-.15 G(lly).05 E(.)-.65 E
+F2(insertln)72 510.6 Q F1(\(\);)A .801(Insert a line abo)97 526.8 R 1.101 -.15
+(ve t)-.15 H .801(he current one.).15 F(Ev)5.801 E .801(ery line belo)-.15 F
+3.301(wt)-.25 G .801(he current line will be shifted do)321.48 526.8 R .802
+(wn, and the)-.25 F 1.048(bottom line will disappear)97 538.8 R 6.047(.T)-.55 G
+1.047(he current line will become blank, and the current \(y)218.97 538.8 R 2.5
+(,x)-.65 G 3.547(\)c)447.693 538.8 S(o-ordinates)459.01 538.8 Q
+(will remain unchanged.)97 550.8 Q F2(killchar)72 579 Q F1<28293b87>A .711
+(Returns the line kill character for the terminal,)97 595.2 R F3(i.e)3.212 E(.)
+-.15 E F1 3.212(,t)C .712(he character used by the user to erase an entire)
+311.272 595.2 R(line from the input.)97 607.2 Q F2(leaveok)72 635.4 Q F1(\()A
+F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F1(,)A F3(int boolf)2.5 E F1<293b87>A
+.297(Sets the boolean flag for lea)97 651.6 R .297
+(ving the cursor after the last change.)-.2 F(If)5.297 E F3(boolf)2.796 E F1
+.296(is non-zero, the cursor will)2.796 F .013
+(be left after the last update on the terminal, and the current \(y)97 663.6 R
+2.5(,x)-.65 G 2.514(\)c)351.726 663.6 S .014(o-ordinates for)362.01 663.6 R F3
+(win)2.514 E F1 .014(will be changed)2.514 F(accordingly)97 675.6 Q 5(.I)-.65 G
+(f)154.39 675.6 Q F3(boolf)2.5 E F1 .073(is 0 the cursor will be mo)99.5 687.6
+R -.15(ve)-.15 G 2.573(dt).15 G 2.573(ot)221.091 687.6 S .073(he current \(y)
+231.444 687.6 R 2.5(,x)-.65 G 2.573(\)c)292.03 687.6 S 2.573(o-ordinates. This)
+302.373 687.6 R .072(flag \(initially 0\) retains its v)2.573 F(alue)-.25 E
+(until changed by the user)97 699.6 Q(.)-.55 E EP
+%%Page: 10 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G -4.998
+(11)3.328 G 329.472 -4.998(00 S)4.998 H(Sc)-.56 E(cr)442.888 60 Q -.18(re)
+447.33 60 S(ee)451.592 60 Q(en)456.034 60 Q 2.5(nP)460.476 60 S -.1(Pa)468.538
+60 S(ac)474.55 60 Q(ck)479.552 60 Q(ka)483.994 60 Q(ag)489.556 60 Q(ge)494.558
+60 Q(e)499.56 60 Q/F1 10/Courier-Bold@0 SF(move)72 96 Q/F2 10/Times-Roman@0 SF
+(\()A/F3 10/Times-Italic@0 SF(int y)A F2(,)A F3(int x)2.5 E F2(\);)A .098
+(Change the current \(y)97 112.2 R 2.5(,x)-.65 G 2.599(\)c)193.564 112.2 S .099
+(o-ordinates of the windo)203.933 112.2 R 2.599(wt)-.25 G 2.599(o\()314.619
+112.2 S F3 1.1 -.55(y, x)325.548 112.2 T F2 2.599(\). This).55 F .099
+(returns ERR if it w)2.599 F .099(ould cause the)-.1 F(screen to scroll ille)97
+124.2 Q -.05(ga)-.15 G(lly).05 E(.)-.65 E F1(mvcur)72 152.4 Q F2(\()A F3
+(int lasty)A F2(,)A F3(int lastx)2.5 E F2(,)A F3(int ne)2.5 E(wy)-.15 E F2(,)A
+F3(int ne)2.5 E(wx)-.15 E F2(\);)A(Mo)97 168.6 Q -.15(ve)-.15 G 3.117(st).15 G
+.617(he terminal')129.817 168.6 R 3.117(sc)-.55 G .617(ursor from \()189.931
+168.6 R F3(lasty)A 2.5(,l)-.55 G(astx)265.605 168.6 Q F2 3.117(\)t)C 3.117(o\()
+290.942 168.6 S F3(ne)302.389 168.6 Q(wy)-.15 E 2.5(,n)-.55 G -.15(ew)332.239
+168.6 S(x).15 E F2 3.117(\)i)C 3.117(na)356.866 168.6 S 3.117(na)369.423 168.6
+S .617(pproximation of optimal f)381.98 168.6 R(ash-)-.1 E 2.589(ion. This)97
+180.6 R .089(routine uses the functions borro)2.589 F .089(wed from)-.25 F F3
+-.2(ex)2.589 G F2 -.15(ve)2.789 G .089(rsion 2.6.).15 F .09
+(It is possible to use this optimiza-)5.09 F .352(tion without the benef)97
+192.6 R .352(it of the screen routines.)-.2 F -.4(Wi)5.352 G .352
+(th the screen routines, this should not be called by).4 F .968(the user)97
+204.6 R(.)-.55 E F1(move)5.968 E F2 .968(\(\) and)B F1(refresh)3.468 E F2 .969
+(\(\) should be used to mo)B 1.269 -.15(ve t)-.15 H .969
+(he cursor position, so that the routines).15 F(kno)97 216.6 Q 2.5(ww)-.25 G
+(hat')128.69 216.6 Q 2.5(sg)-.55 G(oing on.)155.08 216.6 Q F1(mvprintw)72 244.8
+Q F2(\()A F3(int y)A F2(,)A F3(int x)2.5 E F2(,)A F3(const c)2.5 E(har)-.15 E
+/F4 10/Symbol SF(*)2.5 E F3(fmt)A F2(,)A F3(...)2.5 E F2(\);)A(Equi)97 261 Q
+-.25(va)-.25 G(lent to:).25 E(mo)137 277.2 Q -.15(ve)-.15 G(\(y).15 E 2.5(,x)
+-.65 G(\);)176.6 277.2 Q(printw\(fmt, ...\);)137 289.2 Q F1(mvscanw)72 321.6 Q
+F2(\()A F3(int y)A F2(,)A F3(int x)2.5 E F2(,)A F3(const c)2.5 E(har)-.15 E F4
+(*)2.5 E F3(fmt)A F2(,)A F3(...)2.5 E F2(\);)A(Equi)97 337.8 Q -.25(va)-.25 G
+(lent to:).25 E(mo)137 354 Q -.15(ve)-.15 G(\(y).15 E 2.5(,x)-.65 G(\);)176.6
+354 Q(scanw\(fmt, ...\);)137 366 Q F1(mvwin)72 398.4 Q F2(\()A F3(WINDO)A(W)-.5
+E F4(*)2.5 E F3(win)A F2(,)A F3(int y)2.5 E F2(,)A F3(int x)2.5 E F2(\);)A(Mo)
+97 414.6 Q 1.712 -.15(ve t)-.15 H 1.412(he home position of the windo).15 F(w)
+-.25 E F3(win)3.912 E F2 1.412(from its current starting coordinates to \()
+3.912 F F3 1.1 -.55(y, x)D F2 3.911(\). If).55 F(that)3.911 E -.1(wo)97 426.6 S
+.842(uld put part or all of the windo).1 F 3.343(wo)-.25 G 1.343 -.25(ff t)
+252.82 426.6 T .843(he edge of the terminal screen,).25 F F1(mvwin)3.343 E F2
+.843(\(\) returns ERR and)B .248(does not change an)97 438.6 R 2.748(ything. F)
+-.15 F .248(or subwindo)-.15 F(ws,)-.25 E F1(mvwin)2.748 E F2 .247
+(\(\) also returns ERR if you attempt to mo)B .547 -.15(ve i)-.15 H 2.747(to)
+.15 G -.25(ff)497.59 438.6 S(its main windo)97 450.6 Q 3.8 -.65(w. I)-.25 H 2.5
+(fy).65 G(ou mo)184.43 450.6 Q .3 -.15(ve a m)-.15 H(ain windo).15 E 1.3 -.65
+(w, a)-.25 H(ll subwindo).65 E(ws are mo)-.25 E -.15(ve)-.15 G 2.5(da).15 G
+(long with it.)400.43 450.6 Q F1(mvwprintw)72 478.8 Q F2(\()A F3(WINDO)A(W)-.5
+E F4(*)2.5 E F3(win)A F2(,)A F3(int y)2.5 E F2(,)A F3(int x)2.5 E F2(,)A F3
+(const c)2.5 E(har)-.15 E F4(*)2.5 E F3(fmt)A F2(,)A F3(...)2.5 E F2(\);)A
+(Equi)97 495 Q -.25(va)-.25 G(lent to:).25 E(wmo)137 511.2 Q -.15(ve)-.15 G
+(\(win, y).15 E 2.5(,x)-.65 G(\);)203.82 511.2 Q(printw\(fmt, ...\);)137 523.2
+Q F1(mvwscanw)72 555.6 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)A
+F3(int y)2.5 E F2(,)A F3(int x)2.5 E F2(,)A F3(const c)2.5 E(har)-.15 E F4(*)
+2.5 E F3(fmt)A F2(,)A F3(...)2.5 E F2(\);)A(Equi)97 571.8 Q -.25(va)-.25 G
+(lent to:).25 E(wmo)137 588 Q -.15(ve)-.15 G(\(win, y).15 E 2.5(,x)-.65 G(\);)
+203.82 588 Q(scanw\(fmt, ...\);)137 600 Q F1(newwin)72 632.4 Q F2(\()A F3
+(int lines)A F2(,)A F3(int cols)2.5 E F2(,)A F3(int be)2.5 E(gin_y)-.4 E F2(,)A
+F3(int be)2.5 E(gin_x)-.4 E F2(\);)A 1.24(Create a ne)97 648.6 R 3.74(ww)-.25 G
+(indo)162.39 648.6 Q 3.74(ww)-.25 G(ith)198.1 648.6 Q F3(lines)3.74 E F2 1.24
+(lines and)3.74 F F3(cols)3.74 E F2 1.24(columns starting at position \()3.74 F
+F3(be)A(gin)-.4 E F4(-)439.14 653.6 Q F3 1.1 -.55(y, b)444.63 648.6 T -.4(eg)
+.55 G(in).4 E F4(-)475.34 653.6 Q F3(x)480.83 648.6 Q F2 3.74(\). If)B(either)
+97 660.6 Q F3(lines)2.765 E F2(or)2.765 E F3(cols)2.765 E F2 .265
+(is 0 \(zero\), that dimension will be set to \()2.765 F F3 .265(LINES \255 be)
+B(gin)-.4 E F4(-)401.744 665.6 Q F3(y)407.234 660.6 Q F2 2.764(\)o)C 2.764(r\()
+422.768 660.6 S F3 .264(COLS \255 be)432.192 660.6 R(gin)-.4 E F4(-)490.74
+665.6 Q F3(x)496.23 660.6 Q F2(\))A(respecti)97 672.6 Q -.15(ve)-.25 G(ly).15 E
+5(.T)-.65 G(hus, to get a ne)157.88 672.6 Q 2.5(ww)-.25 G(indo)234.84 672.6 Q
+2.5(wo)-.25 G 2.5(fd)267.09 672.6 S(imensions)277.92 672.6 Q F3(LINES)2.5 E F4
+<b4>2.5 E F3(COLS)2.5 E F2 2.5(,u)C(se)392.59 672.6 Q F1(newwin)2.5 E F2(\()A
+F3(0)A F2(,)A F3(0)2.5 E F2(,)A F3(0)2.5 E F2(,)A F3(0)2.5 E F2(\).)A F1(nl)72
+700.8 Q F2<28293b87>A EP
+%%Page: 11 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 321.976(eP)
+134.236 60 S(PS)460.654 60 Q(S1)466.766 60 Q(1:)472.328 60 Q(:1)477.33 60 Q(19)
+480.662 60 Q(9-)485.664 60 Q(-1)490.666 60 Q(11)493.998 60 Q(1)499 60 Q/F1 10
+/Times-Roman@0 SF 2.343(Set the terminal to nl mode,)97 96 R/F2 10
+/Times-Italic@0 SF(i.e)4.843 E(.)-.15 E F1 4.843(,s)C 2.343
+(tart/stop the system from mapping)247.971 96 R F0 -5.698(<<)4.843 G -7.218(RR)
+5.698 G -6.668(EE)7.218 G -6.668(TT)6.668 G -7.218(UU)6.668 G -7.218(RR)7.218 G
+-7.218(NN)7.218 G -5.698(>>)7.218 G F1(to)457.885 96 Q F0 -5.698(<<)4.843 G
+-6.668(LL)5.698 G -3.888(II)6.668 G -7.218(NN)3.888 G -6.668(EE)7.218 G -3.328
+(--)6.668 G -6.108(FF)97 108 S -6.668(EE)6.108 G -6.668(EE)6.668 G -7.218(DD)
+6.668 G -5.698(>>)7.218 G F1 5.696(.I)5.698 G 3.196(ft)140.906 108 S .696
+(he mapping is not done,)150.212 108 R/F3 10/Courier-Bold@0 SF(refresh)3.195 E
+F1 .695(\(\) can do more optimization, so it is recommended,)B -.2(bu)97 120 S
+2.5(tn).2 G(ot required, to turn it of)117.08 120 Q(f.)-.25 E F3(nocbreak)72
+148.2 Q F1<28293b87>A(Unset the terminal from cbreak mode.)97 164.4 Q F3
+(nocrmode)72 192.6 Q F1<28293b87>A .131(Identical to)97 208.8 R F3(nocbreak)
+2.631 E F1 2.632(\(\). The)B .132(misnamed macro)2.632 F F3(nocrmode)2.632 E F1
+.132(\(\) is retained for backw)B .132(ards compatibil-)-.1 F
+(ity with ealier v)97 220.8 Q(ersions of the library)-.15 E(.)-.65 E F3(noecho)
+72 249 Q F1<28293b87>A -.45(Tu)97 265.2 S(rn echoing of characters of).45 E(f.)
+-.25 E F3(nonl)72 293.4 Q F1<28293b87>A(Unset the terminal to from nl mode.)97
+309.6 Q(See)5 E F3(nl)2.5 E F1(\(\).)A F3(noraw)72 337.8 Q F1<28293b87>A
+(Unset the terminal from ra)97 354 Q 2.5(wm)-.15 G 2.5(ode. See)220.44 354 R F3
+(raw)2.5 E F1(\(\).)A F3(overlay)72 382.2 Q F1(\()A F2(WINDO)A(W)-.5 E/F4 10
+/Symbol SF(*)2.5 E F2(win1)A F1(,)A F2(WINDO)2.5 E(W)-.5 E F4(*)2.5 E F2(win2)A
+F1(\);)A(Ov)97 398.4 Q(erlay)-.15 E F2(win1)3.018 E F1(on)3.018 E F2(win2)3.018
+E F1 5.518(.T)C .517(he contents of)201.142 398.4 R F2(win1)3.017 E F1 3.017
+(,i)C(nsof)289.04 398.4 Q .517(ar as the)-.1 F 3.017(yf)-.15 G .517
+(it, are placed on)351.511 398.4 R F2(win2)3.017 E F1 .517(at their starting)
+3.017 F(\(y)97 410.4 Q 2.5(,x)-.65 G 4.221(\)c)114.68 410.4 S 4.221
+(o-ordinates. This)126.671 410.4 R 1.721(is done non-destructi)4.221 F -.15(ve)
+-.25 G(ly).15 E 4.221(,i)-.65 G 1.721(.e., blanks on)315.876 410.4 R F2(win1)
+4.222 E F1(lea)4.222 E 2.022 -.15(ve t)-.2 H 1.722(he contents of the).15 F
+1.646(space on)97 422.4 R F2(win2)4.146 E F1 4.146(untouched. Note)4.146 F
+1.645(that all non-blank characters are o)4.146 F -.15(ve)-.15 G 1.645
+(rwritten destructi).15 F -.15(ve)-.25 G 1.645(ly in the).15 F -.15(ove)97
+434.4 S(rlay).15 E(.)-.65 E F3(overwrite)72 462.6 Q F1(\()A F2(WINDO)A(W)-.5 E
+F4(*)2.5 E F2(win1)A F1(,)A F2(WINDO)2.5 E(W)-.5 E F4(*)2.5 E F2(win2)A F1(\);)
+A(Ov)97 478.8 Q(erwrite)-.15 E F2(win1)2.554 E F1(on)2.554 E F2(win2)2.554 E F1
+5.054(.T)C .054(he contents of)207.616 478.8 R F2(win1)2.554 E F1 2.554(,i)C
+(nsof)293.662 478.8 Q .054(ar as the)-.1 F 2.555(yf)-.15 G .055
+(it, are placed on)354.745 478.8 R F2(win2)2.555 E F1 .055(at their starting)
+2.555 F(\(y)97 490.8 Q 2.5(,x)-.65 G 2.5(\)c)114.68 490.8 S 2.5
+(o-ordinates. This)124.95 490.8 R(is done destructi)2.5 E -.15(ve)-.25 G(ly).15
+E(,)-.65 E F2(i.e)2.5 E(.)-.15 E F1 2.5(,b)C(lanks on)306.51 490.8 Q F2(win1)
+2.5 E F1(become blank on)2.5 E F2(win2)2.5 E F1(.)A F3(printw)72 519 Q F1(\()A
+F2 -.15(ch)C(ar).15 E F4(*)2.5 E F2(fmt)A F1(,)A F2(...)2.5 E F1(\);)A .306
+(Performs a)97 535.2 R F3(printf)2.806 E F1 .306(\(\) on the windo)B 2.805(ws)
+-.25 G .305(tarting at the current \(y)255.675 535.2 R 2.5(,x)-.65 G 2.805(\)c)
+358.445 535.2 S 2.805(o-ordinates. It)369.02 535.2 R(uses)2.805 E F3(addstr)
+2.805 E F1 .305(\(\) to)B 1.136(add the string on the windo)97 547.2 R 4.936
+-.65(w. I)-.25 H 3.637(ti).65 G 3.637(so)239.323 547.2 S 1.137
+(ften advisable to use the f)251.85 547.2 R 1.137(ield width options of)-.2 F
+F3(printf)3.637 E F1 1.137(\(\) to)B -.2(avo)97 559.2 S .292(id lea).2 F .292
+(ving things on the windo)-.2 F 2.791(wf)-.25 G .291(rom earlier calls.)246.779
+559.2 R .291(This returns ERR if it w)5.291 F .291(ould cause the screen)-.1 F
+(to scroll ille)97 571.2 Q -.05(ga)-.15 G(lly).05 E(.)-.65 E F3(raw)72 599.4 Q
+F1<28293b87>A(Set the terminal to ra)97 617.2 Q 2.5(wm)-.15 G 2.5(ode. On)
+198.23 617.2 R -.15(ve)2.5 G(rsion 7).15 E/F5 8/Times-Bold@0 SF -5.774(UU)2.5 G
+-5.774(NN)5.774 G -3.11(II)5.774 G -5.774(XX)3.11 G/F6 5/Times-Bold@0 SF -2.498
+(22)5.774 -3.2 O F1(this also turns of)4.998 3.2 M 2.5(fn)-.25 G -.25(ew)376.6
+617.2 S(line mapping \(see).25 E F3(nl)2.5 E F1(\(\)\).)A F3(refresh)72 645.4 Q
+F1<28293b87>A .32 LW 76 678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80
+678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100
+678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108
+678.8 DL 116 678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 678.8 120 678.8 DL
+128 678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 678.8 132 678.8 DL 140 678.8
+136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144 678.8 DL 152 678.8 148 678.8
+DL 156 678.8 152 678.8 DL 160 678.8 156 678.8 DL 164 678.8 160 678.8 DL 168
+678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 678.8 172 678.8 DL 180 678.8 176
+678.8 DL 184 678.8 180 678.8 DL 188 678.8 184 678.8 DL 192 678.8 188 678.8 DL
+196 678.8 192 678.8 DL 200 678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8
+204 678.8 DL 212 678.8 208 678.8 DL 216 678.8 212 678.8 DL/F7 5/Times-Roman@0
+SF(2)93.6 689.2 Q/F8 6/Times-Bold@0 SF -4.33(UU)2 3.2 O -4.33(NN)4.33 G -2.332
+(II)4.33 G -4.33(XX)2.332 G/F9 8/Times-Roman@0 SF
+(is a trademark of Unix System Laboratories.)6.33 E EP
+%%Page: 12 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G -4.998
+(11)3.328 G 329.472 -4.998(22 S)4.998 H(Sc)-.56 E(cr)442.888 60 Q -.18(re)
+447.33 60 S(ee)451.592 60 Q(en)456.034 60 Q 2.5(nP)460.476 60 S -.1(Pa)468.538
+60 S(ac)474.55 60 Q(ck)479.552 60 Q(ka)483.994 60 Q(ag)489.556 60 Q(ge)494.558
+60 Q(e)499.56 60 Q/F1 10/Times-Roman@0 SF .947
+(Synchronize the terminal screen with the desired windo)97 96 R 4.747 -.65
+(w. I)-.25 H 3.448(ft).65 G .948(he windo)353.744 96 R 3.448(wi)-.25 G 3.448
+(sn)404.83 96 S .948(ot a screen, only that)417.168 96 R .13(part co)97 108 R
+-.15(ve)-.15 G .13(red by it is updated.).15 F .13(This returns ERR if it w)
+5.13 F .129(ould cause the screen to scroll ille)-.1 F -.05(ga)-.15 G(lly).05 E
+5.129(.I)-.65 G 2.629(nt)481.921 108 S(his)492.33 108 Q
+(case, it will update whate)97 120 Q -.15(ve)-.25 G 2.5(ri).15 G 2.5(tc)216.02
+120 S(an without causing the scroll.)225.74 120 Q 2.343(As a special case, if)
+97 144 R/F2 10/Courier-Bold@0 SF(wrefresh)4.843 E F1 2.343
+(\(\) is called with the windo)B(w)-.25 E/F3 10/Times-Italic@0 SF(cur)4.843 E
+(scr)-.1 E F1 2.343(the screen is cleared and)4.843 F .09
+(repainted as it is currently)97 156 R 5.09(.T)-.65 G .09(his is v)214.28 156 R
+.09(ery useful for allo)-.15 F .09(wing the redra)-.25 F .09
+(wing of the screen when the user)-.15 F(has g)97 168 Q
+(arbage dumped on his terminal.)-.05 E F2(resetty)72 196.2 Q F1<28293b87>A F2
+(resetty)97 212.4 Q F1 .456(\(\) restores them to what)B F2(savetty)2.956 E F1
+.456(\(\) stored.)B .457(These functions are performed automatically)5.456 F
+(by)97 224.4 Q F2(initscr)2.5 E F1(\(\) and)A F2(endwin)2.5 E F1 2.5
+(\(\). This)B(function should not be used by the user)2.5 E(.)-.55 E F2
+(savetty)72 252.6 Q F1<28293b87>A F2(savetty)97 268.8 Q F1 .776(\(\) sa)B -.15
+(ve)-.2 G 3.276(st).15 G .776(he current tty characteristic flags. See)176.302
+268.8 R F2(resetty)3.275 E F1 3.275(\(\). This)B .775(function should not be)
+3.275 F(used by the user)97 280.8 Q(.)-.55 E F2(scanw)72 309 Q F1(\()A F3 -.15
+(ch)C(ar).15 E/F4 10/Symbol SF(*)2.5 E F3(fmt)A F1(,)A F3(...)2.5 E F1(\);)A
+.716(Perform a)97 325.2 R F2(scanf)3.216 E F1 .716(\(\) through the windo)B
+3.216(wu)-.25 G(sing)270.466 325.2 Q F3(fmt)3.216 E F1 5.716(.I)C 3.216(td)
+314.678 325.2 S .716(oes this using consecuti)325.674 325.2 R 1.016 -.15(ve c)
+-.25 H .716(alls to).15 F F2(getch)3.216 E F1(\(\))A(\(or)97 337.2 Q F2(wgetch)
+2.5 E F1 2.5(\(\)\). This)B(returns ERR if it w)2.5 E
+(ould cause the screen to scroll ille)-.1 E -.05(ga)-.15 G(lly).05 E(.)-.65 E
+F2(scroll)72 365.4 Q F1(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F1(\);)A
+(Scroll the windo)97 381.6 Q 2.5(wu)-.25 G(pw)177.58 381.6 Q(ard one line.)-.1
+E(This is normally not used by the user)5 E(.)-.55 E F2(scrollok)72 409.8 Q F1
+(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F1(,)A F3(int boolf)2.5 E F1
+<293b87>A .198(Set the scroll flag for the gi)97 426 R -.15(ve)-.25 G 2.698(nw)
+.15 G(indo)231.576 426 Q 3.998 -.65(w. I)-.25 H(f).65 E F3(boolf)2.698 E F1
+.197(is 0, scrolling is not allo)2.698 F 2.697(wed. This)-.25 F .197
+(is its def)2.697 F .197(ault set-)-.1 F(ting.)97 438 Q F2(standend)72 466.2 Q
+F1<28293b87>A(End standout mode initiated by)97 482.4 Q F2(standout)2.5 E F1
+(\(\).)A F2(standout)72 510.6 Q F1<28293b87>A .406(Causes an)97 526.8 R 2.906
+(yc)-.15 G .407(haracters added to the windo)149.872 526.8 R 2.907(wt)-.25 G
+2.907(ob)279.126 526.8 S 2.907(ep)292.033 526.8 S .407
+(ut in standout mode on the terminal \(if it has that)304.38 526.8 R
+(capability\).)97 538.8 Q F2(subwin)72 567 Q F1(\()A F3(WINDO)A(W)-.5 E F4(*)
+2.5 E F3(win)A F1(,)A F3(int lines)2.5 E F1(,)A F3(int cols)2.5 E F1(,)A F3
+(int be)2.5 E(gin_y)-.4 E F1(,)A F3(int be)2.5 E(gin_x)-.4 E F1(\);)A .367
+(Create a ne)97 583.2 R 2.867(ww)-.25 G(indo)159.771 583.2 Q 2.867(ww)-.25 G
+(ith)194.608 583.2 Q F3(lines)2.867 E F1 .366(lines and)2.867 F F3(cols)2.866 E
+F1 .366(columns starting at position \()2.866 F F3(be)A(gin)-.4 E F4(-)427.784
+588.2 Q F3 1.1 -.55(y, b)433.274 583.2 T -.4(eg).55 G(in).4 E F4(-)463.984
+588.2 Q F3(x)469.474 583.2 Q F1 2.866(\)i)C(nside)482.89 583.2 Q .322
+(the windo)97 595.2 R(w)-.25 E F3(win)2.822 E F1 5.322(.T)C .322
+(his means that an)175.216 595.2 R 2.822(yc)-.15 G .322
+(hange made to either windo)257.454 595.2 R 2.822(wi)-.25 G 2.822(nt)382.404
+595.2 S .322(he area co)393.006 595.2 R -.15(ve)-.15 G .323(red by the sub-).15
+F(windo)97 607.2 Q 2.755(ww)-.25 G .255(ill be made on both windo)138.945 607.2
+R(ws.)-.25 E F3(be)5.255 E(gin)-.4 E F4(-)285.375 612.2 Q F3 1.1 -.55(y, b)
+290.865 607.2 T -.4(eg).55 G(in).4 E F4(-)321.575 612.2 Q F3(x)327.065 607.2 Q
+F1 .255(are specif)2.755 F .255(ied relati)-.2 F .555 -.15(ve t)-.25 H 2.755
+(ot).15 G .255(he o)433.54 607.2 R -.15(ve)-.15 G .255(rall screen,).15 F .112
+(not the relati)97 619.2 R .412 -.15(ve \()-.25 H(0, 0\)).15 E(of)2.612 E F3
+(win)2.612 E F1 5.112(.I)C 2.612(fe)220.032 619.2 S(ither)230.414 619.2 Q F3
+(lines)2.612 E F1(or)2.612 E F3(cols)2.612 E F1 .113
+(is 0 \(zero\), that dimension will be set to \()2.612 F F3 .113(LINES \255)B
+(be)97 631.2 Q(gin)-.4 E F4(-)118.82 636.2 Q F3(y)124.31 631.2 Q F1 2.5(\)o)C
+2.5(r\()139.58 631.2 S F3(COLS \255 be)148.74 631.2 Q(gin)-.4 E F4(-)206.76
+636.2 Q F3(x)212.25 631.2 Q F1 2.5(\)r)C(especti)225.85 631.2 Q -.15(ve)-.25 G
+(ly).15 E(.)-.65 E F2(touchline)72 659.4 Q F1(\()A F3(WINDO)A(W)-.5 E F4(*)2.5
+E F3(win)A F1(,)A F3(int y)2.5 E F1(,)A F3(int startx)2.5 E F1(,)A F3(int endx)
+2.5 E F1(\);)A .405(This function performs a function similar to)97 675.6 R F2
+(touchwin)2.904 E F1 .404(\(\) on a single line.)B .404(It marks the f)5.404 F
+.404(irst change)-.2 F .167(for the gi)97 687.6 R -.15(ve)-.25 G 2.667(nl).15 G
+.167(ine to be)153.481 687.6 R F3(startx)2.667 E F1 2.667(,i)C 2.667(fi)221.649
+687.6 S 2.667(ti)230.426 687.6 S 2.667(sb)238.653 687.6 S .167
+(efore the current f)250.21 687.6 R .167
+(irst change mark, and the last change mark is)-.2 F(set to be)97 699.6 Q F3
+(endx)2.5 E F1(if it is currently less than)2.5 E F3(endx)2.5 E F1(.)A EP
+%%Page: 13 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 321.976(eP)
+134.236 60 S(PS)460.654 60 Q(S1)466.766 60 Q(1:)472.328 60 Q(:1)477.33 60 Q(19)
+480.662 60 Q(9-)485.664 60 Q(-1)490.666 60 Q(13)493.998 60 Q(3)499 60 Q/F1 10
+/Courier-Bold@0 SF(touchoverlap)72 96 Q/F2 10/Times-Roman@0 SF(\()A/F3 10
+/Times-Italic@0 SF(WINDO)A(W)-.5 E/F4 10/Symbol SF(*)2.5 E F3(win1)A F2(,)A F3
+(WINDO)2.5 E(W)-.5 E F4(*)2.5 E F3(win2)A F2(\);)A -.8(To)97 112.2 S .2
+(uch the windo).8 F(w)-.25 E F3(win2)2.7 E F2 .2(in the area which o)2.7 F -.15
+(ve)-.15 G .199(rlaps with).15 F F3(win1)2.699 E F2 5.199(.I)C 2.699(ft)355.317
+112.2 S(he)364.126 112.2 Q 2.699(yd)-.15 G 2.699(on)386.115 112.2 S .199(ot o)
+398.814 112.2 R -.15(ve)-.15 G .199(rlap, no changes are).15 F(made.)97 124.2 Q
+F1(touchwin)72 152.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A
+(Mak)97 168.6 Q 2.747(ei)-.1 G 2.747(ta)125.197 168.6 S .247(ppear that the e)
+135.164 168.6 R -.15(ve)-.25 G .248(ry location on the windo).15 F 2.748(wh)
+-.25 G .248(as been changed.)319.794 168.6 R .248(This is usually only needed)
+5.248 F(for refreshes with o)97 180.6 Q -.15(ve)-.15 G(rlapping windo).15 E
+(ws.)-.25 E F1(tstp)72 208.8 Q F2(\(\))A .35(This function will sa)97 225 R .65
+-.15(ve t)-.2 H .35(he current tty state and then put the process to sleep.).15
+F .35(When the process gets)5.35 F 1.882(restarted, it restores the sa)97 237 R
+-.15(ve)-.2 G 4.382(dt).15 G 1.882(ty state and then calls)229.92 237 R F1
+(wrefresh)4.382 E F2(\()A F3(cur)A(scr)-.1 E F2 1.882(\); to redra)B 4.383(wt)
+-.15 G 1.883(he screen.)462.137 237 R F1(Initscr)97 249 Q F2
+(\(\) sets the signal SIGTSTP to trap to this routine.)A F1(unctrl)72 277.2 Q
+F2(\()A F3 -.15(ch)C(ar).15 E F4(*)2.5 E F3 -.15(ch)C F2<293b87>.15 E
+(Returns a string which is an ASCII representation of)97 293.4 Q F3 -.15(ch)2.5
+G F2 5(.C).15 G(haracters are 8 bits long.)332.93 293.4 Q F1(unctrllen)72 321.6
+Q F2(\()A F3 -.15(ch)C(ar).15 E F4(*)2.5 E F3 -.15(ch)C F2<293b87>.15 E
+(Returns the length of the ASCII representation of)97 337.8 Q F3 -.15(ch)2.5 G
+F2(.).15 E F1(vwprintw)72 366 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A
+F2(,)A F3(const c)2.5 E(har)-.15 E F4(*)2.5 E F3(fmt)A F2(,)A F3(va_list ap)2.5
+E F2(\);)A 1.134(Identical to)97 382.2 R F1(printw)3.634 E F2 1.133(\(\) e)B
+1.133(xcept that it tak)-.15 F 1.133(es both a windo)-.1 F 3.633(ws)-.25 G
+(pecif)343.802 382.2 Q 1.133(ication and a pointer to a v)-.2 F(ariable)-.25 E
+(length ar)97 394.2 Q(gument list.)-.18 E F1(vwscanw)72 422.4 Q F2(\()A F3
+(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)A F3(const c)2.5 E(har)-.15 E F4(*)
+2.5 E F3(fmt)A F2(,)A F3(va_list ap)2.5 E F2(\);)A 1.508(Identical to)97 438.6
+R F1(scanw)4.008 E F2 1.508(\(\) e)B 1.508(xcept that it tak)-.15 F 1.508
+(es both a windo)-.1 F 4.008(ws)-.25 G(pecif)341.55 438.6 Q 1.508
+(ication and a pointer to a v)-.2 F(ariable)-.25 E(length ar)97 450.6 Q
+(gument list.)-.18 E F1(waddbytes)72 478.8 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)
+2.5 E F3(win)A F2(,)A F3 -.15(ch)2.5 G(ar).15 E F4(*)2.5 E F3(str)A F2(,)A F3
+(int len)2.5 E F2(\);)A .307(This function is the lo)97 495 R 2.807(wl)-.25 G
+-2.15 -.25(ev e)198.565 495 T 2.807(lc).25 G .307(haracter output function.)
+222.072 495 R F3(Len)5.306 E F2 .306(characters of the string)2.806 F F3(str)
+2.806 E F2 .306(are output to)2.806 F(the current \(y)97 507 Q 2.5(,x)-.65 G
+2.5(\)c)160.22 507 S(o-ordinates position of the windo)170.49 507 Q 2.5(ws)-.25
+G(pecif)316.62 507 Q(ied by)-.2 E F3(win.)2.5 E 1.29
+(The following functions dif)97 547.2 R 1.29(fer fr)-.18 F 1.291
+(om the standar)-.45 F 3.791(df)-.37 G 1.291(unctions only in their specif)
+303.113 547.2 R 1.291(ication of a window)-.2 F(,)-.74 E -.15(ra)72 559.2 S
+(ther than the use of the default stdscr).15 E(.)-1.11 E F1(waddch)72 587.4 Q
+F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)A F3 -.15(ch)2.5 G(ar c).15
+E(h)-.15 E F2(\);)A F1(waddstr)72 599.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E
+F3(win)A F2(,)A F3 -.15(ch)2.5 G(ar).15 E F4(*)2.5 E F3(str)A F2(\);)A F1
+(wclear)72 611.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A F1
+(wclrtobot)72 623.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A
+F1(wclrtoeol)72 635.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A
+F1(wdelch)72 647.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A F1
+(wdeleteln)72 659.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A
+F1(werase)72 671.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A F1
+(wgetch)72 683.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A F1
+(wgetstr)72 695.4 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)A F3
+-.15(ch)2.5 G(ar).15 E F4(*)2.5 E F3(str)A F2(\);)A F1(winch)72 707.4 Q F2(\()A
+F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2<293b87>A F1(winsch)72 719.4 Q F2(\()A
+F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)A F3 -.15(ch)2.5 G(ar c).15 E F2
+(\);)A EP
+%%Page: 14 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G -4.998
+(11)3.328 G 329.472 -4.998(44 S)4.998 H(Sc)-.56 E(cr)442.888 60 Q -.18(re)
+447.33 60 S(ee)451.592 60 Q(en)456.034 60 Q 2.5(nP)460.476 60 S -.1(Pa)468.538
+60 S(ac)474.55 60 Q(ck)479.552 60 Q(ka)483.994 60 Q(ag)489.556 60 Q(ge)494.558
+60 Q(e)499.56 60 Q/F1 10/Courier-Bold@0 SF(winsertln)72 96 Q/F2 10
+/Times-Roman@0 SF(\()A/F3 10/Times-Italic@0 SF(WINDO)A(W)-.5 E/F4 10/Symbol SF
+(*)2.5 E F3(win)A F2(\);)A F1(wmove)72 108 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)
+2.5 E F3(win)A F2(,)A F3(int y)2.5 E F2(,)A F3(int)2.5 E F2(,)A F3(x")2.5 E F2
+(\);)A F1(wprintw)72 120 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)
+A F3 -.15(ch)2.5 G(ar).15 E F4(*)2.5 E F3(fmt)A F2(,)A F3(...)2.5 E F2(\);)A F1
+(wrefresh)72 132 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A F1
+(wscanw)72 144 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(,)A F3 -.15
+(ch)2.5 G(ar).15 E F4(*)2.5 E F3(fmt)A F2(,)A F3(...)2.5 E F2(\);)A F1
+(wstandend)72 156 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A F1
+(wstandout)72 168 Q F2(\()A F3(WINDO)A(W)-.5 E F4(*)2.5 E F3(win)A F2(\);)A EP
+%%Page: 15 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 321.976(eP)
+134.236 60 S(PS)460.654 60 Q(S1)466.766 60 Q(1:)472.328 60 Q(:1)477.33 60 Q(19)
+480.662 60 Q(9-)485.664 60 Q(-1)490.666 60 Q(15)493.998 60 Q(5)499 60 Q -4.998
+(11)72 96 S 7.496 -2.498(.. E)4.998 H(Ex)84.506 96 Q(xa)91.178 96 Q(am)96.18 96
+Q(mp)101.182 96 Q(pl)109.514 96 Q(le)115.076 96 Q(es)117.858 96 Q(s)122.3 96 Q
+/F1 10/Times-Roman@0 SF 1.752(Here we present a fe)97 112.2 R 4.252(we)-.25 G
+1.752(xamples of ho)201.7 112.2 R 4.252(wt)-.25 G 4.252(ou)275.866 112.2 S
+1.752(se the package.)290.118 112.2 R(The)6.752 E 4.252(ya)-.15 G 1.751
+(ttempt to be representati)390.276 112.2 R -.15(ve)-.25 G(,).15 E .729
+(though not comprehensi)72 124.2 R -.15(ve)-.25 G 5.729(.F).15 G .729(urther e)
+192.947 124.2 R .729(xamples can be found in the g)-.15 F .73
+(ames section of the source tree and in)-.05 F -.25(va)72 136.2 S
+(rious utilities that use the screen such as).25 E/F2 10/Times-Italic@0 SF
+(systat\(1\))2.5 E F1(.)A .258(The follo)97 152.4 R .258(wing e)-.25 F .258(xa\
+mples are intended to demonstrate the basic structure of a program using the p\
+ack-)-.15 F 2.98(age. An)72 164.4 R .48(additional, more comprehensi)2.98 F
+-.15(ve)-.25 G 2.98(,p).15 G .481
+(rogram can be found in the source code in the)248.69 164.4 R F2 -.2(ex)2.981 G
+(amples).2 E F1(subdi-)2.981 E(rectory)72 176.4 Q(.)-.65 E F0 -4.998(11)72
+200.4 S -2.498(..)4.998 G -4.998(11)2.498 G 7.496 -2.498(.. S)4.998 H(Si)92.01
+200.4 Q(im)97.572 200.4 Q(mp)100.354 200.4 Q(pl)108.686 200.4 Q(le)114.248
+200.4 Q 2.5(eC)117.03 200.4 S(Ch)123.972 200.4 Q(ha)131.194 200.4 Q(ar)136.756
+200.4 Q(ra)141.758 200.4 Q(ac)146.2 200.4 Q(ct)151.202 200.4 Q(te)155.644 200.4
+Q(er)158.976 200.4 Q 2.5(rO)163.418 200.4 S(Ou)170.36 200.4 Q(ut)178.142 200.4
+Q(tp)183.704 200.4 Q(pu)187.036 200.4 Q(ut)192.598 200.4 Q(t)198.16 200.4 Q F1
+.107(This program demonstrates ho)97 216.6 R 2.607(wt)-.25 G 2.607(os)231.608
+216.6 S .107(et up a windo)243.105 216.6 R 2.607(wa)-.25 G .107
+(nd output characters to it.)311.603 216.6 R .106(Also, it demonstrates)5.107 F
+(ho)72 228.6 Q 2.959(wo)-.25 G .459(ne might control the output to the windo)
+96.929 228.6 R 4.259 -.65(w. I)-.25 H 2.959(fy).65 G .46
+(ou run this program, you will get a demonstration of)290.43 228.6 R
+(the character output chracteristics discussed in the abo)72 240.6 Q .3 -.15
+(ve C)-.15 H(haracter Output section.).15 E F0 -4.998(##)112 256.8 S -2.778(ii)
+4.998 G -5.558(nn)2.778 G -4.438(cc)5.558 G -2.778(ll)4.438 G -5.558(uu)2.778 G
+-5.558(dd)5.558 G -4.438(ee)5.558 G F1(<sys)6.938 E F2(/)-.28 E F1(types.h>)A
+F0 -4.998(##)112 268.8 S -2.778(ii)4.998 G -5.558(nn)2.778 G -4.438(cc)5.558 G
+-2.778(ll)4.438 G -5.558(uu)2.778 G -5.558(dd)5.558 G -4.438(ee)5.558 G F1
+(<curses.h>)6.938 E F0 -4.998(##)112 280.8 S -2.778(ii)4.998 G -5.558(nn)2.778
+G -4.438(cc)5.558 G -2.778(ll)4.438 G -5.558(uu)2.778 G -5.558(dd)5.558 G
+-4.438(ee)5.558 G F1(<stdio.h>)6.938 E F0 -4.998(##)112 292.8 S -2.778(ii)4.998
+G -5.558(nn)2.778 G -4.438(cc)5.558 G -2.778(ll)4.438 G -5.558(uu)2.778 G
+-5.558(dd)5.558 G -4.438(ee)5.558 G F1(<signal.h>)6.938 E F0 -4.998(##)112
+328.8 S -5.558(dd)4.998 G -4.438(ee)5.558 G 3.906 -3.328(ff i)4.438 H(in).55 E
+(ne)132.872 328.8 Q(e)138.434 328.8 Q F1(YSIZE 10)2.5 E F0 -4.998(##)112 340.8
+S -5.558(dd)4.998 G -4.438(ee)5.558 G 3.906 -3.328(ff i)4.438 H(in).55 E(ne)
+132.872 340.8 Q(e)138.434 340.8 Q F1(XSIZE 20)2.5 E F0 -2.778(ii)112 364.8 S
+-5.558(nn)2.778 G -3.328(tt)5.558 G F1(quit\(\);)5.828 E(main\(\))112 388.8 Q
+F0 -3.938({{)112 400.8 S -2.778(ii)167 412.8 S -5.558(nn)2.778 G -3.328(tt)
+5.558 G F1(i, j, c;)5.828 E(size)167 424.8 Q/F3 10/Symbol SF(-)182.55 429.8 Q
+F1 2.5(tl)188.04 424.8 S(en;)196.1 424.8 Q F0 -4.438(cc)167 436.8 S -5.558(hh)
+4.438 G -4.998(aa)5.558 G -4.438(rr)4.998 G F1(id[100];)6.938 E(FILE)167 448.8
+Q F3(*)2.5 E F1(fp;)A F0 -4.438(cc)167 460.8 S -5.558(hh)4.438 G -4.998(aa)
+5.558 G -4.438(rr)4.998 G F3(*)6.938 E F1(s;)A(initscr\(\);)167 484.8 Q F2(/)
+366.72 484.8 Q F3(*)A F2(Always call initscr\(\) f)2.5 E(ir)-.2 E(st)-.1 E F3
+(*)2.5 E F2(/)-.28 E F1(signal\(SIGINT)167 496.8 Q 2.5(,q)-.74 G(uit\);)236.25
+496.8 Q F2(/)366.72 496.8 Q F3(*)A F2(Mak)2.5 E 2.5(es)-.1 G(ur)405.5 496.8 Q
+2.5(ew)-.37 G(ou have a \264cleanup\264 fn)427.63 496.8 Q F3(*)2.5 E F2(/)-.28
+E F1(crmode\(\);)167 508.8 Q F2(/)366.72 508.8 Q F3(*)A F2 1.84 -.92(We w)2.5 H
+(ant cbr).92 E(eak mode)-.37 E F3(*)2.5 E F2(/)-.28 E F1(noecho\(\);)167 520.8
+Q F2(/)366.72 520.8 Q F3(*)A F2 1.84 -.92(We w)2.5 H(ant to have contr).92 E
+(ol of c)-.45 E(har)-.15 E(s)-.1 E F3(*)2.5 E F2(/)-.28 E F1(del)167 532.8 Q
+(win\(stdscr\);)-.1 E F2(/)366.72 532.8 Q F3(*)A F2(Cr)2.5 E
+(eate our own stdscr)-.37 E F3(*)2.5 E F2(/)-.28 E F1(stdscr = ne)167 544.8 Q
+(wwin\(YSIZE, XSIZE, 10, 35\);)-.25 E(flushok\(stdscr)167 556.8 Q 2.5(,T)-.4 G
+-.4(RU)234.37 556.8 S(E\);).4 E F2(/)366.72 556.8 Q F3(*)A F2
+(Enable flushing of stdout)2.5 E F3(*)2.5 E F2(/)-.28 E F1(scrollok\(stdscr)167
+568.8 Q 2.5(,T)-.4 G -.4(RU)236.59 568.8 S(E\);).4 E F2(/)366.72 568.8 Q F3(*)A
+F2(Enable scr)2.5 E(olling)-.45 E F3(*)2.5 E F2(/)-.28 E F1(erase\(\);)167
+580.8 Q F2(/)366.72 580.8 Q F3(*)A F2(Initially)2.5 E 2.5(,c)-.55 G
+(lear the scr)417.56 580.8 Q(een)-.37 E F3(*)2.5 E F2(/)-.28 E F1
+(standout\(\);)167 604.8 Q(mo)167 616.8 Q -.15(ve)-.15 G(\(0,0\);).15 E F0
+-7.218(ww)167 628.8 S -5.558(hh)7.218 G -2.778(ii)5.558 G -2.778(ll)2.778 G
+-4.438(ee)2.778 G F1(\(1\))6.938 E F0 -3.938({{)2.5 G F1 2.5(c=g)217 640.8 S
+(etchar\(\);)237.08 640.8 Q F0 -3.888(ss)217 652.8 S -7.218(ww)3.888 G -2.778
+(ii)7.218 G -3.328(tt)2.778 G -4.438(cc)3.328 G -5.558(hh)4.438 G F1(\(c\))
+5.558 E F0 -3.938({{)2.5 G -4.438(cc)217 664.8 S -4.998(aa)4.438 G -3.888(ss)
+4.998 G -4.438(ee)3.888 G F1<b471b43a>6.938 E F2(/)366.72 664.8 Q F3(*)A F2
+(Quit on \264q\264)2.5 E F3(*)2.5 E F2(/)-.28 E F1(quit\(\);)267 676.8 Q F0
+-5.558(bb)267 688.8 S 6.196 -4.438(rr ee)5.558 H -4.998(aa)4.438 G -5.558(kk)
+4.998 G F1(;)5.558 E EP
+%%Page: 16 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G -4.998
+(11)3.328 G 275.804 -4.998(66 S)4.998 H(Sc)-.56 E(cr)389.22 60 Q -.18(re)
+393.662 60 S(ee)397.924 60 Q(en)402.366 60 Q 2.5(nP)406.808 60 S -.1(Pa)414.87
+60 S(ac)420.882 60 Q(ck)425.884 60 Q(ka)430.326 60 Q(ag)435.888 60 Q(ge)440.89
+60 Q 2.5(eA)445.892 60 S -.25(Ap)452.834 60 S(pp)459.806 60 Q(pe)465.368 60 Q
+(en)470.93 60 Q(nd)475.372 60 Q(di)480.934 60 Q(ix)486.496 60 Q 2.5(xA)489.278
+60 S(A)496.78 60 Q -4.438(cc)217 96 S -4.998(aa)4.438 G -3.888(ss)4.998 G
+-4.438(ee)3.888 G/F1 10/Times-Roman@0 SF<b473b43a>6.938 E/F2 10/Times-Italic@0
+SF(/)366.72 96 Q/F3 10/Symbol SF(*)A F2(Go into standout mode on \264s\264)2.5
+E F3(*)2.5 E F2(/)-.28 E F1(standout\(\);)267 108 Q F0 -5.558(bb)267 120 S
+6.196 -4.438(rr ee)5.558 H -4.998(aa)4.438 G -5.558(kk)4.998 G F1(;)5.558 E F0
+-4.438(cc)217 132 S -4.998(aa)4.438 G -3.888(ss)4.998 G -4.438(ee)3.888 G F1
+<b465b43a>6.938 E F2(/)366.72 132 Q F3(*)A F2(Exit standout mode on \264e\264)
+2.5 E F3(*)2.5 E F2(/)-.28 E F1(standend\(\);)267 144 Q F0 -5.558(bb)267 156 S
+6.196 -4.438(rr ee)5.558 H -4.998(aa)4.438 G -5.558(kk)4.998 G F1(;)5.558 E F0
+-4.438(cc)217 168 S -4.998(aa)4.438 G -3.888(ss)4.998 G -4.438(ee)3.888 G F1
+<b472b43a>6.938 E F2(/)366.72 168 Q F3(*)A F2 -1.05(Fo)2.5 G -.37(rc)1.05 G 2.5
+(ear).37 G(efr)412.98 168 Q(esh on \264r\264)-.37 E F3(*)2.5 E F2(/)-.28 E F1
+(wrefresh\(curscr\);)267 180 Q F0 -5.558(bb)267 192 S 6.196 -4.438(rr ee)5.558
+H -4.998(aa)4.438 G -5.558(kk)4.998 G F1(;)5.558 E F0 -5.558(dd)217 204 S
+-4.438(ee)5.558 G -3.328(ff)4.438 G -4.998(aa)3.328 G -5.558(uu)4.998 G -2.778
+(ll)5.558 G -3.328(tt)2.778 G F1(:)3.328 E F2(/)366.72 204 Q F3(*)A F2
+(By default output the c)2.5 E(har)-.15 E(acter)-.15 E F3(*)2.5 E F2(/)-.28 E
+F1(addch\(c\);)267 216 Q(refresh\(\);)267 228 Q F0 -3.938(}})217 240 S -3.938
+(}})167 252 S -3.938(}})112 264 S -2.778(ii)112 300 S -5.558(nn)2.778 G -3.328
+(tt)5.558 G F1(quit\(\))112 312 Q F0 -3.938({{)112 324 S F1(erase\(\);)167 336
+Q F2(/)316.72 336 Q F3(*)A F2 -.92(Te)2.5 G(rminate by er).92 E(asing the scr)
+-.15 E(een)-.37 E F3(*)2.5 E F2(/)-.28 E F1(refresh\(\);)167 348 Q(endwin\(\);)
+167 360 Q F2(/)316.72 360 Q F3(*)A F2(Always end with endwin\(\))2.5 E F3(*)2.5
+E F2(/)-.28 E F1(del)167 372 Q(win\(curscr\);)-.1 E F2(/)316.72 372 Q F3(*)A F2
+(Return stor)2.5 E -.1(age)-.15 G F3(*)2.6 E F2(/)-.28 E F1(del)167 384 Q
+(win\(stdscr\);)-.1 E(putchar\(\264\\n\264\);)167 396 Q -.15(ex)167 408 S
+(it\(0\);).15 E F0 -3.938(}})112 420 S -4.998(11)72 496.2 S -2.498(..)4.998 G
+-4.998(22)2.498 G 7.496 -2.498(.. T)4.998 H -.74(Tw)92.01 496.2 S(wi)97.942
+496.2 Q(in)105.164 496.2 Q(nk)107.946 496.2 Q(kl)113.508 496.2 Q(le)119.07
+496.2 Q(e)121.852 496.2 Q F1 .934
+(This is a moderately simple program which prints patterns on the screen.)97
+512.4 R .934(It switches between pat-)5.934 F .501
+(terns of asterisks, putting them on one by one in random order)72 524.4 R
+3.002(,a)-.4 G .502(nd then taking them of)335.914 524.4 R 3.002(fi)-.25 G
+3.002(nt)437.334 524.4 S .502(he same f)448.116 524.4 R(ash-)-.1 E 2.5(ion. It)
+72 536.4 R(is more ef)2.5 E -.2(fi)-.25 G(cient to write this using only the m\
+otion optimization, as is demonstrated belo).2 E -.65(w.)-.25 G F0 9.996 -4.998
+(## i)112 552.6 T(in)2.22 E(nc)122.286 552.6 Q(cl)127.848 552.6 Q(lu)132.29
+552.6 Q(ud)135.072 552.6 Q(de)140.634 552.6 Q(e)146.196 552.6 Q F1(<curses.h>)
+217 552.6 Q F0 9.996 -4.998(## i)112 564.6 T(in)2.22 E(nc)122.286 564.6 Q(cl)
+127.848 564.6 Q(lu)132.29 564.6 Q(ud)135.072 564.6 Q(de)140.634 564.6 Q(e)
+146.196 564.6 Q F1(<signal.h>)217 564.6 Q F2(/)111.72 588.6 Q F3(*)A(*)114.5
+600.6 Q F2(the idea for this pr)2.5 E -.1(og)-.45 G -.15(ra).1 G 2.5(mw).15 G
+(as a pr)231.03 600.6 Q(oduct of the ima)-.45 E(gination of)-.1 E F3(*)114.5
+612.6 Q F2 -.4(Ku)2.5 G(rt Sc).4 E 2.5(hoens. Not)-.15 F -.37(re)2.5 G
+(sponsible for minds lost or stolen.).37 E F3(*)114.5 624.6 Q F2(/)-.28 E F0
+9.996 -4.998(## d)112 648.6 T(de)-.56 E(ef)125.066 648.6 Q -.25(fi)129.508
+648.6 S(in)132.59 648.6 Q(ne)135.372 648.6 Q(e)140.934 648.6 Q F1 14.72
+(NCOLS 80)217 648.6 R F0 9.996 -4.998(## d)112 660.6 T(de)-.56 E(ef)125.066
+660.6 Q -.25(fi)129.508 660.6 S(in)132.59 660.6 Q(ne)135.372 660.6 Q(e)140.934
+660.6 Q F1 11.95(NLINES 24)217 660.6 R F0 9.996 -4.998(## d)112 672.6 T(de)-.56
+E(ef)125.066 672.6 Q -.25(fi)129.508 672.6 S(in)132.59 672.6 Q(ne)135.372 672.6
+Q(e)140.934 672.6 Q F1(MAXP)217 672.6 Q -1.11(AT)-.92 G 25.64(TERNS 4)1.11 F F0
+-3.328(tt)112 696.6 S -4.998(yy)3.328 G -5.558(pp)4.998 G -4.438(ee)5.558 G
+-5.558(dd)4.438 G -4.438(ee)5.558 G 6.656 -3.328(ff s)4.438 H(st)-.56 E(tr)
+150.068 696.6 Q(ru)153.4 696.6 Q(uc)157.842 696.6 Q(ct)163.404 696.6 Q 2.5(t{)
+167.846 696.6 S({)173.678 696.6 Q -2.778(ii)167 708.6 S -5.558(nn)2.778 G
+-3.328(tt)5.558 G F1 1.3 -.65(y, x)217 708.6 T(;).65 E F0 -3.938(}})112 720.6 S
+F1(LOCS;)6.438 E EP
+%%Page: 17 16
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 2.5(eA)
+134.236 60 S -.25(Ap)141.178 60 S(pp)148.15 60 Q(pe)153.712 60 Q(en)159.274 60
+Q(nd)163.716 60 Q(di)169.278 60 Q(ix)174.84 60 Q 2.5(xA)177.622 60 S 268.308
+(AP)185.124 60 S(PS)460.654 60 Q(S1)466.766 60 Q(1:)472.328 60 Q(:1)477.33 60 Q
+(19)480.662 60 Q(9-)485.664 60 Q(-1)490.666 60 Q(17)493.998 60 Q(7)499 60 Q/F1
+10/Times-Roman@0 SF 26.94(LOCS Layout[NCOLS)112 96 R/F2 10/Symbol SF(*)2.5 E F1
+(NLINES];)2.5 E/F3 10/Times-Italic@0 SF(/)316.72 96 Q F2(*)A F3(curr)2.5 E
+(ent boar)-.37 E 2.5(dl)-.37 G(ayout)387.37 96 Q F2(*)2.5 E F3(/)-.28 E F0
+-2.778(ii)112 120 S -5.558(nn)2.778 G -3.328(tt)5.558 G F1 -.15(Pa)167 120 S
+(ttern,).15 E F3(/)316.72 120 Q F2(*)A F3(curr)2.5 E(ent pattern number)-.37 E
+F2(*)2.5 E F3(/)-.28 E F1(Numstars;)167 132 Q F3(/)316.72 132 Q F2(*)A F3
+(number of star)2.5 E 2.5(si)-.1 G 2.5(np)394.96 132 S(attern)407.46 132 Q F2
+(*)2.5 E F3(/)-.28 E F0 -4.438(cc)112 156 S -5.558(hh)4.438 G -4.998(aa)5.558 G
+-4.438(rr)4.998 G F2(*)167 156 Q F1(geten)A(v\(\);)-.4 E F0 -2.778(ii)112 180 S
+-5.558(nn)2.778 G -3.328(tt)5.558 G F1(die\(\);)167 180 Q(main\(\))112 204 Q F0
+-3.938({{)112 216 S F1(srand\(getpid\(\)\);)167 228 Q F3(/)366.72 228 Q F2(*)A
+F3(initialize r)2.5 E(andom sequence)-.15 E F2(*)2.5 E F3(/)-.28 E F1
+(initscr\(\);)167 252 Q(signal\(SIGINT)167 264 Q 2.5(,d)-.74 G(ie\);)236.25 264
+Q(noecho\(\);)167 276 Q(nonl\(\);)167 288 Q(lea)167 300 Q -.15(ve)-.2 G
+(ok\(stdscr).15 E 2.5(,T)-.4 G -.4(RU)235.12 300 S(E\);).4 E(scrollok\(stdscr)
+167 312 Q 2.5(,F)-.4 G(ALSE\);)235.3 312 Q F0 3.906 -3.328(ff o)167 336 T(or)
+-1.67 E(r)175.086 336 Q F1(\(;;\))2.5 E F0 -3.938({{)2.5 G F1(mak)217 348 Q
+(eboard\(\);)-.1 E F3(/)366.72 348 Q F2(*)A F3(mak)2.5 E 2.5(et)-.1 G(he boar)
+403.28 348 Q 2.5(ds)-.37 G(etup)445.13 348 Q F2(*)2.5 E F3(/)-.28 E F1
+(puton\(\264)217 360 Q F2(*)A F1<b4293b>A F3(/)366.72 360 Q F2(*)A F3
+(put on \264)2.5 E F2(*)A F3<b473>A F2(*)2.5 E F3(/)-.28 E F1
+(puton\(\264 \264\);)217 372 Q F3(/)366.72 372 Q F2(*)A F3(co)2.5 E
+(ver up with \264 \264s)-.1 E F2(*)2.5 E F3(/)-.28 E F0 -3.938(}})167 384 S
+-3.938(}})112 396 S F3(/)111.72 420 Q F2(*)A(*)114.5 432 Q F3(On pr)2.5 E -.1
+(og)-.45 G -.15(ra).1 G 2.5(me).15 G(xit, mo)177.76 432 Q(ve the cur)-.1 E
+(sor to the lower left corner by)-.1 E F2(*)114.5 444 Q F3(dir)2.5 E(ect addr)
+-.37 E(essing)-.37 E 2.5(,s)-.1 G(ince curr)199.77 444 Q
+(ent location is not guar)-.37 E(anteed.)-.15 E F2(*)114.5 456 Q F3 1.84 -.92
+(We l)2.5 H(ie and say we used to be at the upper right corner to guar).92 E
+(antee)-.15 E F2(*)114.5 468 Q F3(absolute addr)2.5 E(essing.)-.37 E F2(*)114.5
+480 Q F3(/)-.28 E F1(die\(\))112 492 Q F0 -3.938({{)112 504 S F1
+(signal\(SIGINT)167 516 Q 2.5(,S)-.74 G(IG)236.81 516 Q F2(-)247.36 521 Q F1
+(IGN\);)252.85 516 Q(mvcur\(0, COLS)167 528 Q F2(-)2.5 E F1(1, LINES)2.5 E F2
+(-)2.5 E F1(1, 0\);)2.5 E(endwin\(\);)167 540 Q -.15(ex)167 552 S(it\(0\);).15
+E F0 -3.938(}})112 564 S F3(/)111.72 600 Q F2(*)A(*)114.5 612 Q F3(Mak)2.5 E
+2.5(et)-.1 G(he curr)149.39 612 Q(ent boar)-.37 E 2.5(ds)-.37 G 2.5(etup. It)
+222.81 612 R(pic)2.5 E(ks a r)-.2 E(andom pattern and)-.15 E F2(*)114.5 624 Q
+F3(calls ison\(\) to determine if the c)2.5 E(har)-.15 E
+(acter is on that pattern)-.15 E F2(*)114.5 636 Q F3(or not.)2.5 E F2(*)114.5
+648 Q F3(/)-.28 E F1(mak)112 660 Q(eboard\(\))-.1 E F0 -3.938({{)112 672 S F1
+(re)167 684 Q(g)-.15 E F0 -2.778(ii)2.5 G -5.558(nn)2.778 G -3.328(tt)5.558 G
+F1 1.3 -.65(y, x)267 684 T(;).65 E(re)167 696 Q 2.5(gL)-.15 G(OCS)188.23 696 Q
+F2(*)267 696 Q F1(lp;)A -.15(Pa)167 720 S(ttern = rand\(\) % MAXP).15 E -1.11
+(AT)-.92 G(TERNS;)1.11 E EP
+%%Page: 18 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G -4.998
+(11)3.328 G 275.804 -4.998(88 S)4.998 H(Sc)-.56 E(cr)389.22 60 Q -.18(re)
+393.662 60 S(ee)397.924 60 Q(en)402.366 60 Q 2.5(nP)406.808 60 S -.1(Pa)414.87
+60 S(ac)420.882 60 Q(ck)425.884 60 Q(ka)430.326 60 Q(ag)435.888 60 Q(ge)440.89
+60 Q 2.5(eA)445.892 60 S -.25(Ap)452.834 60 S(pp)459.806 60 Q(pe)465.368 60 Q
+(en)470.93 60 Q(nd)475.372 60 Q(di)480.934 60 Q(ix)486.496 60 Q 2.5(xA)489.278
+60 S(A)496.78 60 Q/F1 10/Times-Roman@0 SF(lp = Layout;)167 96 Q F0 3.906 -3.328
+(ff o)167 108 T(or)-1.67 E(r)175.086 108 Q F1(\(y = 0; y < NLINES; y++\))2.5 E
+F0 3.906 -3.328(ff o)217 120 T(or)-1.67 E(r)225.086 120 Q F1
+(\(x = 0; x < NCOLS; x++\))2.5 E F0 -2.778(ii)267 132 S -3.328(ff)2.778 G F1
+(\(ison\(y)5.828 E 2.5(,x)-.65 G(\)\))313.294 132 Q F0 -3.938({{)2.5 G F1(lp)
+317 144 Q/F2 10/Symbol SF(-)A F1(>y = y;)A(lp)317 156 Q F2(-)A F1(>x = x;)A
+(lp++;)317 168 Q F0 -3.938(}})267 180 S F1(Numstars = lp)167 192 Q F2(-)2.5 E
+F1(Layout;)2.5 E F0 -3.938(}})112 204 S/F3 10/Times-Italic@0 SF(/)111.72 228 Q
+F2(*)A(*)114.5 240 Q F3(Return TR)2.5 E(UE if \(y)-.4 E 2.5(,x)-.55 G 2.5(\)i)
+203.54 240 S 2.5(so)212.15 240 S 2.5(nt)223.54 240 S(he curr)233.82 240 Q
+(ent pattern.)-.37 E F2(*)114.5 252 Q F3(/)-.28 E F1(ison\(y)112 264 Q 2.5(,x)
+-.65 G(\))146.35 264 Q(re)112 276 Q(g)-.15 E F0 -2.778(ii)2.5 G -5.558(nn)2.778
+G -3.328(tt)5.558 G F1 1.3 -.65(y, x)167 276 T(;).65 E F0 -3.938({{)2.5 G
+-3.888(ss)167 300 S -7.218(ww)3.888 G -2.778(ii)7.218 G -3.328(tt)2.778 G
+-4.438(cc)3.328 G -5.558(hh)4.438 G F1(\(P)8.058 E(attern\))-.15 E F0 -3.938
+({{)2.5 G -4.438(cc)172 312 S -4.998(aa)4.438 G -3.888(ss)4.998 G -4.438(ee)
+3.888 G F1(0:)6.938 E F3(/)266.72 312 Q F2(*)A F3(alternating lines)2.5 E F2(*)
+2.5 E F3(/)-.28 E F0 6.196 -4.438(rr ee)217 324 T -3.328(tt)4.438 G -5.558(uu)
+3.328 G 6.226 -4.438(rr n)5.558 H(n)-1.12 E F1(!\(y & 01\);)2.5 E F0 -4.438(cc)
+172 336 S -4.998(aa)4.438 G -3.888(ss)4.998 G -4.438(ee)3.888 G F1(1:)6.938 E
+F3(/)266.72 336 Q F2(*)A F3(box)2.5 E F2(*)2.5 E F3(/)-.28 E F0 -2.778(ii)217
+348 S -3.328(ff)2.778 G F1(\(x >= LINES && y >= NCOLS\))5.828 E F0 6.196 -4.438
+(rr ee)267 360 T -3.328(tt)4.438 G -5.558(uu)3.328 G 6.226 -4.438(rr n)5.558 H
+(n)-1.12 E F1 -.74(FA)2.5 G(LSE;).74 E F0 -2.778(ii)217 372 S -3.328(ff)2.778 G
+F1(\(y < 3 || y >= NLINES)5.828 E F2(-)2.5 E F1(3\))2.5 E F0 6.196 -4.438
+(rr ee)267 384 T -3.328(tt)4.438 G -5.558(uu)3.328 G 6.226 -4.438(rr n)5.558 H
+(n)-1.12 E F1(TR)2.5 E(UE;)-.4 E F0 6.196 -4.438(rr ee)217 396 T -3.328(tt)
+4.438 G -5.558(uu)3.328 G 6.226 -4.438(rr n)5.558 H(n)-1.12 E F1
+(\(x < 3 || x >= NCOLS)2.5 E F2(-)2.5 E F1(3\);)2.5 E F0 -4.438(cc)172 408 S
+-4.998(aa)4.438 G -3.888(ss)4.998 G -4.438(ee)3.888 G F1(2:)6.938 E F3(/)266.72
+408 Q F2(*)A F3(holy pattern!)2.5 E F2(*)2.5 E F3(/)-.28 E F0 6.196 -4.438
+(rr ee)217 420 T -3.328(tt)4.438 G -5.558(uu)3.328 G 6.226 -4.438(rr n)5.558 H
+(n)-1.12 E F1(\(\(x + y\) & 01\);)2.5 E F0 -4.438(cc)172 432 S -4.998(aa)4.438
+G -3.888(ss)4.998 G -4.438(ee)3.888 G F1(3:)6.938 E F3(/)266.72 432 Q F2(*)A F3
+(bar acr)2.5 E(oss center)-.45 E F2(*)2.5 E F3(/)-.28 E F0 6.196 -4.438(rr ee)
+217 444 T -3.328(tt)4.438 G -5.558(uu)3.328 G 6.226 -4.438(rr n)5.558 H(n)-1.12
+E F1(\(y >= 9 && y <= 15\);)2.5 E F0 -3.938(}})167 456 S F3(/)166.72 468 Q F2
+(*)A F3(NO)2.5 E(TREA)-.4 E(CHED)-.3 E F2(*)2.5 E F3(/)-.28 E F0 -3.938(}})112
+480 S F1(puton\(ch\))112 504 Q(re)112 516 Q(g)-.15 E F0 -4.438(cc)2.5 G -5.558
+(hh)4.438 G -4.998(aa)5.558 G -4.438(rr)4.998 G F1(ch;)217 516 Q F0 -3.938({{)
+112 528 S F1(re)167 540 Q 2.5(gL)-.15 G(OCS)188.23 540 Q F2(*)267 540 Q F1(lp;)
+A(re)167 552 Q(g)-.15 E F0 -2.778(ii)2.5 G -5.558(nn)2.778 G -3.328(tt)5.558 G
+F1(r;)267 552 Q(re)167 564 Q 2.5(gL)-.15 G(OCS)188.23 564 Q F2(*)267 564 Q F1
+(end;)A 71.94(LOCS temp;)167 576 R(end = &Layout[Numstars];)167 600 Q F0 3.906
+-3.328(ff o)167 612 T(or)-1.67 E(r)175.086 612 Q F1
+(\(lp = Layout; lp < end; lp++\))2.5 E F0 -3.938({{)2.5 G F1 2.5(r=r)217 624 S
+(and\(\) % Numstars;)234.3 624 Q(temp =)217 636 Q F2(*)2.5 E F1(lp;)A F2(*)217
+648 Q F1(lp = Layout[r];)A(Layout[r] = temp;)217 660 Q F0 -3.938(}})167 672 S
+3.906 -3.328(ff o)167 696 T(or)-1.67 E(r)175.086 696 Q F1
+(\(lp = Layout; lp < end; lp++\))2.5 E F0 -3.938({{)2.5 G F1(mv)217 708 Q
+(addch\(lp)-.25 E F2(-)A F1(>y)A 2.5(,l)-.65 G(p)287.78 708 Q F2(-)A F1
+(>x, ch\);)A(refresh\(\);)217 720 Q EP
+%%Page: 19 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -5.558(SS)72 60 S -4.438(cc)5.558 G 6.196 -4.438(rr ee)
+4.438 H -4.438(ee)4.438 G 11.116 -5.558(nn P)4.438 H -.1(Pa)-.55 G(ac)109.226
+60 Q(ck)114.228 60 Q(ka)118.67 60 Q(ag)124.232 60 Q(ge)129.234 60 Q 2.5(eA)
+134.236 60 S -.25(Ap)141.178 60 S(pp)148.15 60 Q(pe)153.712 60 Q(en)159.274 60
+Q(nd)163.716 60 Q(di)169.278 60 Q(ix)174.84 60 Q 2.5(xA)177.622 60 S 268.308
+(AP)185.124 60 S(PS)460.654 60 Q(S1)466.766 60 Q(1:)472.328 60 Q(:1)477.33 60 Q
+(19)480.662 60 Q(9-)485.664 60 Q(-1)490.666 60 Q(19)493.998 60 Q(9)499 60 Q
+-3.938(}})167 96 S -3.938(}})112 108 S EP
+%%Page: 2 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF -6.108(PP)72 60 S -5.558(SS)6.108 G -4.998(11)5.558 G
+-3.328(::)4.998 G -4.998(11)3.328 G -4.998(99)4.998 G -3.328(--)4.998 G 334.474
+-4.998(22 S)3.328 H(Sc)-.56 E(cr)442.888 60 Q -.18(re)447.33 60 S(ee)451.592 60
+Q(en)456.034 60 Q 2.5(nP)460.476 60 S -.1(Pa)468.538 60 S(ac)474.55 60 Q(ck)
+479.552 60 Q(ka)483.994 60 Q(ag)489.556 60 Q(ge)494.558 60 Q(e)499.56 60 Q/F1
+10/Times-BoldItalic@0 SF(Contents)72 96 Q/F2 10/Times-Roman@0 SF 2.5(1O)72
+122.4 S -.15(ve)86.72 122.4 S(rvie).15 E 4.47(w.)-.25 G 28.5(.................\
+..............................................................................\
+.......................................... 3)125.5 122.4 R(1.1 T)102 136.8 Q
+1.98(erminology ..............................................................\
+........................................................)-.7 F(3)499 136.8 Q
+(1.2 Compiling Applications)102 151.2 Q 28.5(.................................\
+................................................................... 3)4.6 F
+(1.3 Screen Updating)102 165.6 Q 28.5(........................................\
+........................................................................ 3)4.07
+F(1.4 Naming Con)102 180 Q -.15(ve)-.4 G 1.27(ntions .........................\
+..............................................................................\
+..).15 F(4)499 180 Q 2.5(2V)72 194.4 S 1.29(ariables .........................\
+..............................................................................\
+....................................)85.61 194.4 R(4)499 194.4 Q 2.5(3U)72
+208.8 S 1.01(sage ............................................................\
+..............................................................................\
+......)86.72 208.8 R(4)499 208.8 Q(3.1 Initialization)102 223.2 Q 28.5(.......\
+..............................................................................\
+................................. 5)4.89 F(3.2 Output)102 237.6 Q 28.5(.......\
+..............................................................................\
+........................................... 5)3.22 F(3.3 Input)102 252 Q 28.5(\
+..............................................................................\
+.................................................... 5)4.89 F(3.4 T)102 266.4 Q
+2.26(ermination ..............................................................\
+.........................................................)-.7 F(5)499 266.4 Q
+2.5(4C)72 280.8 S(ursor Mo)86.17 280.8 Q -.15(ve)-.15 G(ment Optimizations).15
+E 28.5(.......................................................................\
+.............................. 6)4.08 F 2.5(5C)72 295.2 S
+(haracter Output and Scrolling)86.17 295.2 Q 28.5(............................\
+............................................................................ 6)
+3.24 F 2.5(6T)72 309.6 S(erminal State Handling)84.91 309.6 Q 28.5(...........\
+..............................................................................\
+.......................... 6)2.82 F 2.5(7S)72 324 S(ubwindo)85.06 324 Q 2.08(w\
+s ............................................................................\
+.........................................................)-.25 F(6)499 324 Q
+2.5(8T)72 338.4 S(he Functions)85.61 338.4 Q 28.5(............................\
+..............................................................................\
+......................... 6)3.5 F F0 11.686 -7.218(AA p)72 352.8 T(pp)1.66 E
+(pe)84.536 352.8 Q(en)90.098 352.8 Q(nd)94.54 352.8 Q(di)100.102 352.8 Q(ix)
+105.664 352.8 Q 2.5(xA)108.446 352.8 S(A)115.948 352.8 Q F2 23.5(.............\
+..............................................................................\
+............................................. 15)4.832 F 2.5(1E)72 367.2 S 1.56
+(xamples .....................................................................\
+.....................................................................)85.61
+367.2 R(15)494 367.2 Q(1.1 Simple Character Output)102 381.6 Q 23.5(..........\
+..............................................................................\
+........... 15)3.51 F(1.2 T)102 396 Q .97(winkle .............................\
+..............................................................................\
+...................)-.8 F(16)494 396 Q EP
+%%Trailer
+end
+%%EOF
diff --git a/lib/libcurses/PSD.doc/twinkle1.c b/lib/libcurses/PSD.doc/twinkle1.c
new file mode 100644
index 00000000000..7d3d00db203
--- /dev/null
+++ b/lib/libcurses/PSD.doc/twinkle1.c
@@ -0,0 +1,157 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)twinkle1.c 8.1 (Berkeley) 6/8/93
+.\"
+# include <curses.h>
+# include <signal.h>
+
+/*
+ * the idea for this program was a product of the imagination of
+ * Kurt Schoens. Not responsible for minds lost or stolen.
+ */
+
+# define NCOLS 80
+# define NLINES 24
+# define MAXPATTERNS 4
+
+typedef struct {
+ int y, x;
+} LOCS;
+
+LOCS Layout[NCOLS * NLINES]; /* current board layout */
+
+int Pattern, /* current pattern number */
+ Numstars; /* number of stars in pattern */
+
+char *getenv();
+
+int die();
+
+main()
+{
+ srand(getpid()); /* initialize random sequence */
+
+ initscr();
+ signal(SIGINT, die);
+ noecho();
+ nonl();
+ leaveok(stdscr, TRUE);
+ scrollok(stdscr, FALSE);
+
+ for (;;) {
+ makeboard(); /* make the board setup */
+ puton('*'); /* put on '*'s */
+ puton(' '); /* cover up with ' 's */
+ }
+}
+
+/*
+ * On program exit, move the cursor to the lower left corner by
+ * direct addressing, since current location is not guaranteed.
+ * We lie and say we used to be at the upper right corner to guarantee
+ * absolute addressing.
+ */
+die()
+{
+ signal(SIGINT, SIG_IGN);
+ mvcur(0, COLS - 1, LINES - 1, 0);
+ endwin();
+ exit(0);
+}
+
+
+/*
+ * Make the current board setup. It picks a random pattern and
+ * calls ison() to determine if the character is on that pattern
+ * or not.
+ */
+makeboard()
+{
+ reg int y, x;
+ reg LOCS *lp;
+
+ Pattern = rand() % MAXPATTERNS;
+ lp = Layout;
+ for (y = 0; y < NLINES; y++)
+ for (x = 0; x < NCOLS; x++)
+ if (ison(y, x)) {
+ lp->y = y;
+ lp->x = x;
+ lp++;
+ }
+ Numstars = lp - Layout;
+}
+
+/*
+ * Return TRUE if (y, x) is on the current pattern.
+ */
+ison(y, x)
+reg int y, x; {
+
+ switch (Pattern) {
+ case 0: /* alternating lines */
+ return !(y & 01);
+ case 1: /* box */
+ if (x >= LINES && y >= NCOLS)
+ return FALSE;
+ if (y < 3 || y >= NLINES - 3)
+ return TRUE;
+ return (x < 3 || x >= NCOLS - 3);
+ case 2: /* holy pattern! */
+ return ((x + y) & 01);
+ case 3: /* bar across center */
+ return (y >= 9 && y <= 15);
+ }
+ /* NOTREACHED */
+}
+
+puton(ch)
+reg char ch;
+{
+ reg LOCS *lp;
+ reg int r;
+ reg LOCS *end;
+ LOCS temp;
+
+ end = &Layout[Numstars];
+ for (lp = Layout; lp < end; lp++) {
+ r = rand() % Numstars;
+ temp = *lp;
+ *lp = Layout[r];
+ Layout[r] = temp;
+ }
+
+ for (lp = Layout; lp < end; lp++) {
+ mvaddch(lp->y, lp->x, ch);
+ refresh();
+ }
+}
diff --git a/lib/libcurses/PSD.doc/twinkle2.c b/lib/libcurses/PSD.doc/twinkle2.c
new file mode 100644
index 00000000000..0a25590fcde
--- /dev/null
+++ b/lib/libcurses/PSD.doc/twinkle2.c
@@ -0,0 +1,96 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)twinkle2.c 8.1 (Berkeley) 6/8/93
+.\"
+extern int _putchar();
+
+main()
+{
+ reg char *sp;
+
+ srand(getpid()); /* initialize random sequence */
+
+ if (isatty(0)) {
+ gettmode();
+ if ((sp = getenv("TERM")) != NULL)
+ setterm(sp);
+ signal(SIGINT, die);
+ }
+ else {
+ printf("Need a terminal on %d\n", _tty_ch);
+ exit(1);
+ }
+ _puts(TI);
+ _puts(VS);
+
+ noecho();
+ nonl();
+ tputs(CL, NLINES, _putchar);
+ for (;;) {
+ makeboard(); /* make the board setup */
+ puton('*'); /* put on '*'s */
+ puton(' '); /* cover up with ' 's */
+ }
+}
+
+puton(ch)
+char ch;
+{
+ reg LOCS *lp;
+ reg int r;
+ reg LOCS *end;
+ LOCS temp;
+ static int lasty, lastx;
+
+ end = &Layout[Numstars];
+ for (lp = Layout; lp < end; lp++) {
+ r = rand() % Numstars;
+ temp = *lp;
+ *lp = Layout[r];
+ Layout[r] = temp;
+ }
+
+ for (lp = Layout; lp < end; lp++)
+ /* prevent scrolling */
+ if (!AM || (lp->y < NLINES - 1 || lp->x < NCOLS - 1)) {
+ mvcur(lasty, lastx, lp->y, lp->x);
+ putchar(ch);
+ lasty = lp->y;
+ if ((lastx = lp->x + 1) >= NCOLS)
+ if (AM) {
+ lastx = 0;
+ lasty++;
+ }
+ else
+ lastx = NCOLS - 1;
+ }
+}
diff --git a/lib/libcurses/PSD.doc/win_st.c b/lib/libcurses/PSD.doc/win_st.c
new file mode 100644
index 00000000000..7790f6ca632
--- /dev/null
+++ b/lib/libcurses/PSD.doc/win_st.c
@@ -0,0 +1,58 @@
+.\" Copyright (c) 1980, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)win_st.c 8.1 (Berkeley) 6/8/93
+.\"
+# define WINDOW struct _win_st
+
+struct _win_st {
+ short _cury, _curx;
+ short _maxy, _maxx;
+ short _begy, _begx;
+ short _flags;
+ short _ch_off;
+ bool _clear;
+ bool _leave;
+ bool _scroll;
+ char **_y;
+ short *_firstch;
+ short *_lastch;
+ struct _win_st *_nextp, *_orig;
+};
+
+# define _ENDLINE 001
+# define _FULLWIN 002
+# define _SCROLLWIN 004
+# define _FLUSH 010
+# define _FULLLINE 020
+# define _IDLINE 040
+# define _STANDOUT 0200
+# define _NOCHANGE -1