. abandons mixer, gomoku, talk, talkd, top from base system . compile top with clang so no ack-compiled program needs -lcurses any more
		
			
				
	
	
		
			200 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Brainfuck
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Brainfuck
		
	
	
	
	
	
.\"	$NetBSD: appen.B,v 1.5 2003/08/07 16:44:26 agc Exp $
 | 
						|
.\"
 | 
						|
.\" 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. 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 .
 |