diff --git a/web/root/telnet/BUGS b/web/root/telnet/BUGS
new file mode 100644
index 0000000000000000000000000000000000000000..e627e4b6131cd7a048f91bc851d60b015761d10a
--- /dev/null
+++ b/web/root/telnet/BUGS
@@ -0,0 +1,19 @@
+The Java(tm) Telnet Applet
+
+There are still some bugs we know of and we will draw attention to during
+development. Take a look at http://www.first.gmd.de/persons/leo/java/Telnet
+from time to time to get new versions or mail to leo@first.gmd.de to get
+notified of new versions.
+
+Report bugs to leo@first.gmd.de stating the Operating System you use plus
+the Web browser or Applet Viewer version. Attach the java console log if
+possible.
+
+Known BUGS:
+
+  * There is still a bug when you try to resize the window too much.
+      SYMPTOMS: The font/screen rssize gets switched off and the font
+                is set to default
+      WORKAROUND: None yet.
+
+  * Redraw problems on Win* platforms.
diff --git a/web/root/telnet/CHANGES b/web/root/telnet/CHANGES
new file mode 100644
index 0000000000000000000000000000000000000000..9b0e4fa5bdfc5b05c86a7c4d050b8145ed142c6f
--- /dev/null
+++ b/web/root/telnet/CHANGES
@@ -0,0 +1,563 @@
+1999-04-09  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/MudConnector.java: Patched to make it compilable with jdk 1.2
+
+	* modules/ButtonBar.java:
+	There was a bug, when adding an input field the button event handler was not
+	initialized. :-(
+
+1999-03-20  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	When linefeeding, we may cross from top into the scrolling region.
+	bug found & fixed by Greg Doughty <gmdoughty@lucent.com>
+
+	* display/CharDisplay.java:
+	small fixes by Greg Doughty <gmdoughty@lucent.com>
+	(drawline & brightness for bold attribute)
+
+1999-03-04  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* telnet.java: Default connection goes to the web server
+
+1999-03-03  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	why did we ignore control-Fx ? seems to have been introduced by 1.22 (Rays patches)
+
+1999-03-01  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	backspace did not backspace in some editors (ESC[P should delete at least 1 char)
+	originmode renamed to moveoutsidemargins, some places in code fixed.
+	(vi O command).
+
+1998-12-01  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: \xxxx escapes
+
+	* telnet.java: localecho = no/yes/auto (auto is default)
+
+1998-08-07  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: *** empty log message ***
+
+1998-03-18  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: patched a scrollbar bug
+
+1998-03-07  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: *** empty log message ***
+
+	* display/vt320.java: added documentation. a bit ;)
+
+	* display/vt320.java:
+	some changes and additions to function key handling (contributed by Mike Scott <MIMS@chevron.com>, cleaned up by me :)
+
+1998-02-24  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java: text is cleared after send
+
+1998-02-23  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	bugfix for unEscape, while even number of chars, it had to end with a
+	backslash :(
+
+1998-02-17  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: argl, ESC  wasn't replaced
+
+	* display/vt320.java: ARGH. unEscape did not work
+
+1998-02-09  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* socket/TelnetIO.java, telnet.java, display/CharDisplay.java:
+	*** empty log message ***
+
+	* telnet.java: download for executables
+
+1997-12-16  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* socket/TelnetIO.java, telnet.java: *** empty log message ***
+
+	* socket/TelnetIO.java, modules/BSXModule.java:
+	a new module, back from the very first version of the telnet ;-)
+
+	* display/CharDisplay.java: *** empty log message ***
+
+	* telnet.java: BSX has been added to the modules list for compiling
+
+	* modules/ButtonBar.java: *** empty log message ***
+
+1997-11-07  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: ESC [ G  added
+
+	* display/vt320.java: ESC [ d implemented
+
+1997-11-04  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java:
+	ButtonBar text input field accept the return key now!
+
+1997-11-03  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: some more originmode fixes
+
+	* display/SoftFont.java: added 0x2666 , BLACK DIAMOND?
+
+	* display/vt320.java: ESC M fixed
+	scrollregions/cursorpositioning fixed
+	didn't scroll when in last line... fixed
+
+1997-11-03  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/Script.java: Script now includes dialog popup support
+
+	* display/vt320.java: documentation for F-keys
+
+1997-10-31  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/SoftFont.java, display/vt320.java:
+	ESC [ P fixed (vanishing text in vi I think),
+	ESC [ @ added (cmdline editing bash),
+	statusline handling removed again (too broken for good),
+	misc characterset fixes
+
+1997-10-30  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/Script.java:
+	Included support for Dialog prompting, after an idea from
+	-> albert s boyers <boyers@minniemouse.cemax.com>
+
+	* display/CharDisplay.java: *** empty log message ***
+
+	* telnet.java: My version of index.html got corrupted.
+	I have removed the output of module names from telnet.java.
+
+1997-10-15  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: hmm, don't need CSI Pn $ - ?
+
+1997-10-15  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java, display/vt320.java:
+	First try on a status line.
+
+1997-10-14  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: *** empty log message ***
+
+1997-10-13  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: prelim statusline support
+
+	* display/CharDisplay.java:
+	windowBase doesn't belong into calc. of the X cursorposition, Leo!!!
+
+1997-10-10  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: scrollback buffer bug fixed
+
+1997-10-08  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java: Switched back to FlowLayout.
+
+1997-10-07  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: selectionend underflows fixed too
+
+1997-09-30  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: 8 bit CSI was wrong
+	RI added
+
+	* display/CharDisplay.java:
+	fix selection overflows when resizing on Win*
+
+1997-09-05  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: a bit more debugoutput
+
+1997-09-05  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* socket/TelnetWrapper.java: *** empty log message ***
+
+1997-09-05  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* socket/TimedOutException.java: new file by George Ruban
+
+	* socket/TelnetIO.java: George Ruban added available
+
+1997-08-30  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/SoftFont.java:
+	square root, black square added. one char fixed
+
+	* display/CharDisplay.java:
+	colors by default darker so brightness works better ;)
+
+	* display/vt320.java:
+	fixed focus problem in NS4 by using display.requestFocus instead of just requestFocus
+
+1997-08-29  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: debuyg off
+
+	* display/vt320.java:
+	report chars >0x100, where no softfont is present.
+	fixed 1 character, added DARK SHADE, BLACK SQUARE, SQUARE ROOT
+
+1997-08-18  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java: *** empty log message ***
+
+	* modules/ButtonBar.java: GridLayout error
+
+	* modules/ButtonBar.java: changing the configuration...
+
+	* display/CharDisplay.java:
+	small bugfix, setting the font only once in paint()
+
+	* telnet.java:
+	First attempts to ease module configuration (configuration file)
+
+1997-08-17  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: @ can now be generated on german keyboards
+
+1997-08-07  Marcus Meissner  <marcus@tanis.first.gmd.de>
+
+	* display/vt320.java: added origin mode (vor ESC [ .. H).
+	fixed tabsetting.
+	(two vttest problems)
+
+	* display/CharDisplay.java:
+	deleteLine fixed... was copying one line too many
+
+1997-08-02  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: gr mapping broken
+
+1997-07-25  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	basic charset handling fixed, charset G2/G3 switchers added. (still lacking)
+
+1997-07-24  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java: gridLayout for ButtonBar
+
+	* modules/ButtonBar.java: *** empty log message ***
+
+	* display/CharDisplay.java:
+	I have fixed the scrollBar bug. Expect a strange looking scrollbar under
+	Windows 95!, but it works as expected!
+
+	* telnet.java, appWrapper.java:
+	There is a bug I cannot explain, when using the "startButton" with
+	appWrapper. The telnet window will black out when iconizing the
+	browser window. However, resizing the telnet window redisplays its
+	contents.
+
+1997-07-21  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: changed bare ESC to \u001b
+
+1997-07-10  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: --debugoutput
+
+	* display/CharDisplay.java:
+	deleteLine: in case of a specified scroll area, deleteLine's bottom was 1 too less (second part of emacs ^K bug)
+
+1997-07-09  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: debug off
+
+1997-07-09  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/TextLabel.java: a simple applet to display text labels
+
+1997-07-09  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	CSI Pn M was deleting one less line than desired.... one part of emacs ^K problem fixed
+
+1997-07-08  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java, appWrapper.java:
+	reattaching applet when clicking on the space on the web browser
+
+	* modules/ButtonBar.java, appWrapper.java, frame.java, telnet.java:
+	Closing the frame of a detached window destroys it!
+
+1997-07-04  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/SoftFont.java: decreased memory usage...
+
+	* display/vt320.java:
+	use 8bit control chars only when not using ibmcharset...
+
+	* display/SoftFont.java: *** empty log message ***
+
+	* display/SoftFont.java:
+	speed up for softfonts by directly specifying fillrects (not complete)
+
+1997-07-01  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* telnet.java, appWrapper.java: *** empty log message ***
+
+	* modules/ButtonBar.java:
+	When no parent window was created, destroy applet window.
+
+	* appWrapper.java: *** empty log message ***
+
+1997-07-01  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	oops, some TSTATE_xxx weren't switching back to TSTATE_DATA
+
+1997-06-30  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* appWrapper.java: added more documentation, more changes to come
+
+1997-06-29  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* appWrapper.java:
+	The appWrapper can now only display a button to launch the applet
+
+1997-06-29  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: use 8bit control chars even when using ibmcharset
+
+	* display/SoftFont.java: *** empty log message ***
+
+	* display/vt320.java:
+	use cp431 (doslatin1us) instead of cp850 (doslatin1) ... most bbs systems
+	seem to use this.
+
+	* display/CharDisplay.java: - added softfont capability.
+	  CharDisplay is now able to display softfonts (rendered by SoftFont) and
+	  standard fonts so the loss of speed should be marginal.
+	- some cleanups in paint()
+
+	* display/SoftFont.java:
+	a softfont emulator capable to display usually missing UNICODE characters
+	(currently used for line and boxdrawings in the IBM PC charset)
+
+1997-06-09  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	don't handle chars as bit-8-set VT sequences when using the IBM charset
+
+1997-06-08  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	hmm, telnet linefeed string changed from \r\0 to \r\n (CR LF?) (RFC 1123)
+
+1997-05-27  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: there was a nullpointer bug
+
+	* tools/proxy.java: added date and time logging
+
+1997-05-27  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	a lot of additions and fixes done by "Ray Whitmer <raywhitmer@itsnet.com>"
+	- key handling (esp. function key, return etc.)
+	- Emulation fixes (a lot of them)
+	- VMS additions
+
+1997-05-27  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* socket/TelnetIO.java, display/vt320.java, appWrapper.java, telnet.java:
+	included version information for online retrieval
+
+1997-05-27  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: *** empty log message ***
+
+1997-05-27  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: documentation for setScrollbar()
+
+1997-05-26  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java, display/vt320.java:
+	moved the scrollbar to the character display
+
+1997-05-20  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: changed VTibmcharset to VTcharset
+
+	* display/vt320.java: added docu
+
+	* display/vt320.java: - scratch any \r input from terminal
+	- ibm charset mapping added
+
+1997-05-08  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	added restore default color (fore and background) in ESC [ Pn* m
+
+1997-05-06  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: fixed insertmode ESC [ 4 l/h
+
+1997-05-05  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: some more documentation
+
+	* display/CharDisplay.java:
+	implemented colors: bright + black reveals as dark gray (foreground only)
+
+	* display/CharDisplay.java, display/vt320.java:
+	added a border to the character display
+	cursorposition is now set and retrieved by setCursorPos() and getCursorPos()
+	necessary for future adaption to JDK 1.1
+
+1997-04-29  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* telnet.java:
+	return now sends \r\n to the terminal and \r\0 to the server.
+
+1997-04-18  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: ESC [ L fixed ... messed up 'vi' o command
+
+1997-04-15  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* tools/proxy.java:
+	the connecting client gets a message when the remote host is
+	not available.
+
+1997-04-14  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* telnet.java: telnet will not connect if no host is given as parameter
+
+	* tools/proxy.java: the proxy does not exit when a host is unavailable
+
+	* socket/TelnetIO.java:
+	bugfix: lost connection is now detected immediately
+
+	* modules/MudConnector.java: 3D-status bar and info Button
+
+	* display/CharDisplay.java: rudimentary support for copy&paste
+
+	* telnet.java: added compilation of MudConnector to Makefile
+
+1997-04-10  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/CharDisplay.java:
+	deleteLine ... nicht size.height, sondern bottom.
+	fixt ein 'vim' Problem
+
+1997-04-04  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* telnet.java: telnet.java does not exit when no destination is given.
+
+	* modules/ButtonBar.java, modules/MudConnector.java:
+	MudConnector is a new module designed for Andrew Cowans www.mudconnect.com
+	It loads a file of muds plus addresses to connect to. WOrks only in
+	connection with a proxy server!
+
+1997-04-04  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* socket/TelnetIO.java: SGI problem fixed.
+
+	* socket/TelnetIO.java: *** empty log message ***
+
+1997-03-24  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/Script.java, modules/ButtonBar.java, modules/Module.java:
+	module interface changed: receive() now returns a String or null
+
+	* telnet.java:
+	removed the script module from testpage and changed the module interface
+	slightly
+
+1997-03-19  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/Module.java, modules/Script.java, modules/ButtonBar.java:
+	Modules are now notified of connect() and disconnect()
+
+	* telnet.java:
+	added notification of modules upon connect and disconnect
+
+1997-03-19  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java:
+	delete left frtom cursor was leaving out 1 element
+
+	* display/vt320.java: use enough tabs....
+
+1997-03-18  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: total reformatiert auf zweier spaces
+
+1997-03-18  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: fixed a bug when resizing the screen
+
+1997-03-18  msmeissn  <msmeissn@tanis.first.gmd.de>
+
+	* display/vt320.java: layout(0 statt display.resize9)
+
+	* display/vt320.java: und nochnmal
+
+	* display/vt320.java: ESC [ nr P added
+	first try at 132/80 resize
+
+1997-03-18  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/CharDisplay.java: *** empty log message ***
+
+	* modules/ButtonBar.java:
+	It seems that \27 != ^[ (escape). Now the \e escape should work.
+
+	* display/vt320.java:
+	Don't initialize, when a character display exists.
+	This should fix the detaching problem, where the screen was blank after
+	it was added to the external frame.
+
+1997-03-17  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java: added documentation for the \e character
+
+1997-03-13  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* display/vt320.java: fixed bug in documentation VTrows default is 24
+
+1997-03-12  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/ButtonBar.java: fixed bug in send text from input field
+
+	* telnet.java: minor changes
+
+1997-03-05  Matthias L. Jugel  <leo@tanis.first.gmd.de>
+
+	* modules/Script.java, modules/ButtonBar.java, display/vt320.java:
+	added documentation
+
+	* modules/ButtonBar.java:
+	moved the documentation from index.html to this source file
+
+	* telnet.java: fixed bug in connect
+
+	* modules/ButtonBar.java: port number bug
+
+	* display/vt320.java: documentation changes
+
+	* CharDisplayTest.java, IOtest.java, appWrapper.java, display/CharDisplay.java, display/Terminal.java, display/TerminalHost.java, display/vt320.java, modules/ButtonBar.java, modules/Module.java, modules/Script.java, socket/StatusPeer.java, socket/TelnetIO.java, telnet.java, tools/proxy.java:
+	Initial CVS Registering
+
+	This is the java(tm) Telnet Applet
+
+
+	* CharDisplayTest.java, IOtest.java, appWrapper.java, display/CharDisplay.java, display/Terminal.java, display/TerminalHost.java, display/vt320.java, modules/ButtonBar.java, modules/Module.java, modules/Script.java, socket/StatusPeer.java, socket/TelnetIO.java, telnet.java, tools/proxy.java:
+	New file.
+
diff --git a/web/root/telnet/COPYING b/web/root/telnet/COPYING
new file mode 100644
index 0000000000000000000000000000000000000000..32e6f4083fa4bb257dbedf93a9c392e054639282
--- /dev/null
+++ b/web/root/telnet/COPYING
@@ -0,0 +1,333 @@
+GNU GENERAL PUBLIC LICENSE
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.  675
+Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to
+share and change it. By contrast, the GNU General Public License is intended
+to guarantee your freedom to share and change free software--to make sure
+the software is free for all its users. This General Public License applies
+to most of the Free Software Foundation's software and to any other program
+whose authors commit to using it. (Some other Free Software Foundation
+software is covered by the GNU Library General Public License instead.) You
+can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you
+wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs; and that
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These
+restrictions translate to certain responsibilities for you if you distribute
+copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or
+for a fee, you must give the recipients all the rights that you have. You
+must make sure that they, too, receive or can get the source code. And you
+must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If
+the software is modified by someone else and passed on, we want its
+recipients to know that what they have is not the original, so that any
+problems introduced by others will not reflect on the original authors'
+reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program
+proprietary. To prevent this, we have made it clear that any patent must be
+licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms
+of this General Public License. The "Program", below, refers to any such
+program or work, and a "work based on the Program" means either the Program
+or any derivative work under copyright law: that is to say, a work
+containing the Program or a portion of it, either verbatim or with
+modifications and/or translated into another language. (Hereinafter,
+translation is included without limitation in the term "modification".) Each
+licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running the Program
+is not restricted, and the output from the Program is covered only if its
+contents constitute a work based on the Program (independent of having been
+made by running the Program). Whether that is true depends on what the
+Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code
+as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+License and to the absence of any warranty; and give any other recipients of
+the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it,
+thus forming a work based on the Program, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that you
+also meet all of these conditions:
+
+   * a) You must cause the modified files to carry prominent notices stating
+     that you changed the files and the date of any change.
+
+   * b) You must cause any work that you distribute or publish, that in
+     whole or in part contains or is derived from the Program or any part
+     thereof, to be licensed as a whole at no charge to all third parties
+     under the terms of this License.
+
+   * c) If the modified program normally reads commands interactively when
+     run, you must cause it, when started running for such interactive use
+     in the most ordinary way, to print or display an announcement including
+     an appropriate copyright notice and a notice that there is no warranty
+     (or else, saying that you provide a warranty) and that users may
+     redistribute the program under these conditions, and telling the user
+     how to view a copy of this License. (Exception: if the Program itself
+     is interactive but does not normally print such an announcement, your
+     work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be
+reasonably considered independent and separate works in themselves, then
+this License, and its terms, do not apply to those sections when you
+distribute them as separate works. But when you distribute the same sections
+as part of a whole which is a work based on the Program, the distribution of
+the whole must be on the terms of this License, whose permissions for other
+licensees extend to the entire whole, and thus to each and every part
+regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works
+based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with
+the Program (or with a work based on the Program) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1
+and 2 above provided that you also do one of the following:
+
+   * a) Accompany it with the complete corresponding machine-readable source
+     code, which must be distributed under the terms of Sections 1 and 2
+     above on a medium customarily used for software interchange; or,
+
+   * b) Accompany it with a written offer, valid for at least three years,
+     to give any third party, for a charge no more than your cost of
+     physically performing source distribution, a complete machine-readable
+     copy of the corresponding source code, to be distributed under the
+     terms of Sections 1 and 2 above on a medium customarily used for
+     software interchange; or,
+
+   * c) Accompany it with the information you received as to the offer to
+     distribute corresponding source code. (This alternative is allowed only
+     for noncommercial distribution and only if you received the program in
+     object code or executable form with such an offer, in accord with
+     Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and
+installation of the executable. However, as a special exception, the source
+code distributed need not include anything that is normally distributed (in
+either source or binary form) with the major components (compiler, kernel,
+and so on) of the operating system on which the executable runs, unless that
+component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to
+copy from a designated place, then offering equivalent access to copy the
+source code from the same place counts as distribution of the source code,
+even though third parties are not compelled to copy the source along with
+the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy,
+modify, sublicense or distribute the Program is void, and will automatically
+terminate your rights under this License. However, parties who have received
+copies, or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Program or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the
+Program (or any work based on the Program), you indicate your acceptance of
+this License to do so, and all its terms and conditions for copying,
+distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these terms
+and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein. You are not responsible
+for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot distribute so
+as to satisfy simultaneously your obligations under this License and any
+other pertinent obligations, then as a consequence you may not distribute
+the Program at all. For example, if a patent license would not permit
+royalty-free redistribution of the Program by all those who receive copies
+directly or indirectly through you, then the only way you could satisfy both
+it and this License would be to refrain entirely from distribution of the
+Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system, which is implemented by public license
+practices. Many people have made generous contributions to the wide range of
+software distributed through that system in reliance on consistent
+application of that system; it is up to the author/donor to decide if he or
+she is willing to distribute software through any other system and a
+licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an
+explicit geographical distribution limitation excluding those countries, so
+that distribution is permitted only in or among countries not thus excluded.
+In such case, this License incorporates the limitation as if written in the
+body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of
+the General Public License from time to time. Such new versions will be
+similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make
+exceptions for this. Our decision will be guided by the two goals of
+preserving the free status of all derivatives of our free software and of
+promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
+THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
+PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
+LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
+THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively convey the
+exclusion of warranty; and each file should have at least the "copyright"
+line and a pointer to where the full notice is found.
+
+one line to give the program's name and an idea of what it does.
+Copyright (C) 19yy  name of author
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when
+it starts in an interactive mode:
+
+Gnomovision version 69, Copyright (C) 19yy name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+type `show w'.  This is free software, and you are welcome
+to redistribute it under certain conditions; type `show c'
+for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may be
+called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright
+interest in the program `Gnomovision'
+(which makes passes at compilers) written
+by James Hacker.
+
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General Public
+License instead of this License.
diff --git a/web/root/telnet/COPYING.LIB b/web/root/telnet/COPYING.LIB
new file mode 100644
index 0000000000000000000000000000000000000000..ed7233fe00e4e5588fa9adcdbe5a0199c8fc0221
--- /dev/null
+++ b/web/root/telnet/COPYING.LIB
@@ -0,0 +1,462 @@
+GNU LIBRARY GENERAL PUBLIC LICENSE
+
+Version 2, June 1991
+
+Copyright (C) 1991 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to
+share and change it. By contrast, the GNU General Public Licenses are
+intended to guarantee your freedom to share and change free software--to
+make sure the software is free for all its users.
+
+This license, the Library General Public License, applies to some specially
+designated Free Software Foundation software, and to any other libraries
+whose authors decide to use it. You can use it for your libraries, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you
+wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs; and that
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These
+restrictions translate to certain responsibilities for you if you distribute
+copies of the library, or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for
+a fee, you must give the recipients all the rights that we gave you. You
+must make sure that they, too, receive or can get the source code. If you
+link a program with the library, you must provide complete object files to
+the recipients so that they can relink them with the library, after making
+changes to the library and recompiling it. And you must show them these
+terms so they know their rights.
+
+Our method of protecting your rights has two steps: (1) copyright the
+library, and (2) offer you this license which gives you legal permission to
+copy, distribute and/or modify the library.
+
+Also, for each distributor's protection, we want to make certain that
+everyone understands that there is no warranty for this free library. If the
+library is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original version, so that any problems
+introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that companies distributing free software will
+individually obtain patent licenses, thus in effect transforming the program
+into proprietary software. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary one;
+be sure to read it in full, and don't assume that anything in it is the same
+as in the ordinary license.
+
+The reason we have a separate public license for some libraries is that they
+blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in a
+textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+Because of this blurred distinction, using the ordinary General Public
+License for libraries did not effectively promote software sharing, because
+most developers did not use the libraries. We concluded that weaker
+conditions might promote sharing better.
+
+However, unrestricted linking of non-free programs would deprive the users
+of those programs of all benefit from the free status of the libraries
+themselves. This Library General Public License is intended to permit
+developers of non-free programs to use free libraries, while preserving your
+freedom as a user of such programs to change the free libraries that are
+incorporated in them. (We have not seen how to achieve this as regards
+changes in header files, but we have achieved it as regards changes in the
+actual functions of the Library.) The hope is that this will lead to faster
+development of free libraries.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code
+derived from the library, while the latter only works together with the
+library.
+
+Note that it is possible for a library to be covered by the ordinary General
+Public License rather than by this special one.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library which contains a
+notice placed by the copyright holder or other authorized party saying it
+may be distributed under the terms of this Library General Public License
+(also called "this License"). Each licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data prepared so
+as to be conveniently linked with application programs (which use some of
+those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has
+been distributed under these terms. A "work based on the Library" means
+either the Library or any derivative work under copyright law: that is to
+say, a work containing the Library or a portion of it, either verbatim or
+with modifications and/or translated straightforwardly into another
+language. (Hereinafter, translation is included without limitation in the
+term "modification".)
+
+"Source code" for a work means the preferred form of the work for making
+modifications to it. For a library, complete source code means all the
+source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and
+installation of the library.
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running a program
+using the Library is not restricted, and output from such a program is
+covered only if its contents constitute a work based on the Library
+(independent of the use of the Library in a tool for writing it). Whether
+that is true depends on what the Library does and what the program that uses
+the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the notices
+that refer to this License and to the absence of any warranty; and
+distribute a copy of this License along with the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that you
+also meet all of these conditions:
+
+   * a) The modified work must itself be a software library.
+
+   * b) You must cause the files modified to carry prominent notices stating
+     that you changed the files and the date of any change.
+
+   * c) You must cause the whole of the work to be licensed at no charge to
+     all third parties under the terms of this License.
+
+   * d) If a facility in the modified Library refers to a function or a
+     table of data to be supplied by an application program that uses the
+     facility, other than as an argument passed when the facility is
+     invoked, then you must make a good faith effort to ensure that, in the
+     event an application does not supply such function or table, the
+     facility still operates, and performs whatever part of its purpose
+     remains meaningful. (For example, a function in a library to compute
+     square roots has a purpose that is entirely well-defined independent of
+     the application. Therefore, Subsection 2d requires that any
+     application-supplied function or table used by this function must be
+     optional: if the application does not supply it, the square root
+     function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, and can be
+reasonably considered independent and separate works in themselves, then
+this License, and its terms, do not apply to those sections when you
+distribute them as separate works. But when you distribute the same sections
+as part of a whole which is a work based on the Library, the distribution of
+the whole must be on the terms of this License, whose permissions for other
+licensees extend to the entire whole, and thus to each and every part
+regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works
+based on the Library.
+
+In addition, mere aggregation of another work not based on the Library with
+the Library (or with a work based on the Library) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License.
+(If a newer version than version 2 of the ordinary GNU General Public
+License has appeared, then you can specify that version instead if you
+wish.) Do not make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy,
+so the ordinary GNU General Public License applies to all subsequent copies
+and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library
+into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of
+it, under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you accompany it with the complete
+corresponding machine-readable source code, which must be distributed under
+the terms of Sections 1 and 2 above on a medium customarily used for
+software interchange.
+
+If distribution of object code is made by offering access to copy from a
+designated place, then offering equivalent access to copy the source code
+from the same place satisfies the requirement to distribute the source code,
+even though third parties are not compelled to copy the source along with
+the object code.
+
+5. A program that contains no derivative of any portion of the Library, but
+is designed to work with the Library by being compiled or linked with it, is
+called a "work that uses the Library". Such a work, in isolation, is not a
+derivative work of the Library, and therefore falls outside the scope of
+this License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions
+of the Library), rather than a "work that uses the library". The executable
+is therefore covered by this License. Section 6 states terms for
+distribution of such executables.
+
+When a "work that uses the Library" uses material from a header file that is
+part of the Library, the object code for the work may be a derivative work
+of the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true is not
+precisely defined by law.
+
+If such an object file uses only numerical parameters, data structure
+layouts and accessors, and small macros and small inline functions (ten
+lines or less in length), then the use of the object file is unrestricted,
+regardless of whether it is legally a derivative work. (Executables
+containing this object code plus portions of the Library will still fall
+under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute
+the object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are
+linked directly with the Library itself.
+
+6. As an exception to the Sections above, you may also compile or link a
+"work that uses the Library" with the Library to produce a work containing
+portions of the Library, and distribute that work under terms of your
+choice, provided that the terms permit modification of the work for the
+customer's own use and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library
+is used in it and that the Library and its use are covered by this License.
+You must supply a copy of this License. If the work during execution
+displays copyright notices, you must include the copyright notice for the
+Library among them, as well as a reference directing the user to the copy of
+this License. Also, you must do one of these things:
+
+   * a) Accompany the work with the complete corresponding machine-readable
+     source code for the Library including whatever changes were used in the
+     work (which must be distributed under Sections 1 and 2 above); and, if
+     the work is an executable linked with the Library, with the complete
+     machine-readable "work that uses the Library", as object code and/or
+     source code, so that the user can modify the Library and then relink to
+     produce a modified executable containing the modified Library. (It is
+     understood that the user who changes the contents of definitions files
+     in the Library will not necessarily be able to recompile the
+     application to use the modified definitions.)
+
+   * b) Accompany the work with a written offer, valid for at least three
+     years, to give the same user the materials specified in Subsection 6a,
+     above, for a charge no more than the cost of performing this
+     distribution.
+
+   * c) If distribution of the work is made by offering access to copy from
+     a designated place, offer equivalent access to copy the above specified
+     materials from the same place.
+
+   * d) Verify that the user has already received a copy of these materials
+     or that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library"
+must include any data and utility programs needed for reproducing the
+executable from it. However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in
+either source or binary form) with the major components (compiler, kernel,
+and so on) of the operating system on which the executable runs, unless that
+component itself accompanies the executable.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating
+system. Such a contradiction means you cannot use both them and the Library
+together in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library
+side-by-side in a single library together with other library facilities not
+covered by this License, and distribute such a combined library, provided
+that the separate distribution of the work based on the Library and of the
+other library facilities is otherwise permitted, and provided that you do
+these two things:
+
+   * a) Accompany the combined library with a copy of the same work based on
+     the Library, uncombined with any other library facilities. This must be
+     distributed under the terms of the Sections above.
+
+   * b) Give prominent notice with the combined library of the fact that
+     part of it is a work based on the Library, and explaining where to find
+     the accompanying uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the
+Library except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, link with, or distribute the Library
+is void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Library or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the
+Library (or any work based on the Library), you indicate your acceptance of
+this License to do so, and all its terms and conditions for copying,
+distributing or modifying the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the original
+licensor to copy, distribute, link with or modify the Library subject to
+these terms and conditions. You may not impose any further restrictions on
+the recipients' exercise of the rights granted herein. You are not
+responsible for enforcing compliance by third parties to this License.
+
+11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot distribute so
+as to satisfy simultaneously your obligations under this License and any
+other pertinent obligations, then as a consequence you may not distribute
+the Library at all. For example, if a patent license would not permit
+royalty-free redistribution of the Library by all those who receive copies
+directly or indirectly through you, then the only way you could satisfy both
+it and this License would be to refrain entirely from distribution of the
+Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system which is implemented by public license
+practices. Many people have made generous contributions to the wide range of
+software distributed through that system in reliance on consistent
+application of that system; it is up to the author/donor to decide if he or
+she is willing to distribute software through any other system and a
+licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Library under this License may add an
+explicit geographical distribution limitation excluding those countries, so
+that distribution is permitted only in or among countries not thus excluded.
+In such case, this License incorporates the limitation as if written in the
+body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of
+the Library General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Library does not specify a license version
+number, you may choose any version ever published by the Free Software
+Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the
+author to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals of
+preserving the free status of all derivatives of our free software and of
+promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
+THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY
+PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO
+LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
+THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER
+SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Libraries
+
+If you develop a new library, and you want it to be of the greatest possible
+use to the public, we recommend making it free software that everyone can
+redistribute and change. You can do so by permitting redistribution under
+these terms (or, alternatively, under the terms of the ordinary General
+Public License).
+
+To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+one line to give the library's name and an idea of what it does.
+Copyright (C) year  name of author
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with this library; if not, write to the
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+the library `Frob' (a library for tweaking knobs) written
+by James Random Hacker.
+
+signature of Ty Coon, 1 April 1990
+Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/web/root/telnet/CharDisplay.html b/web/root/telnet/CharDisplay.html
new file mode 100644
index 0000000000000000000000000000000000000000..4bb7245cc337eb6cd35b624dcca71046b2538e47
--- /dev/null
+++ b/web/root/telnet/CharDisplay.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<TITLE>The JAVA Telnet Applet: Test drive</TITLE>
+</HEAD>
+
+<H1>The JAVA Telnet Applet: Test drive</H1>
+
+<P>&copy; 1996, 97 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>,
+<A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus 
+Mei&szlig;ner</A> 
+<P>
+<CENTER>
+<TABLE BORDER>
+<APPLET CODE="CharDisplayTest.class" WIDTH=600 HEIGHT=480> </APPLET>
+</TABLE>
+</HTML>
diff --git a/web/root/telnet/CharDisplayTest.class b/web/root/telnet/CharDisplayTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..fd452d3061032f8b309f22e70227c6c688dfc676
Binary files /dev/null and b/web/root/telnet/CharDisplayTest.class differ
diff --git a/web/root/telnet/CharDisplayTest.java b/web/root/telnet/CharDisplayTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4351d6463812e7d0c2acdcf03da95591b3e9d04
--- /dev/null
+++ b/web/root/telnet/CharDisplayTest.java
@@ -0,0 +1,163 @@
+/**
+ * CharDisplayTest
+ * --
+ * $Id$
+ * $timestamp: Mon Feb 17 20:11:20 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+import java.applet.Applet;
+import java.awt.Button;
+import java.awt.Panel;
+import java.awt.Event;
+import java.awt.FlowLayout;
+import java.awt.BorderLayout;
+import java.awt.Choice;
+import java.awt.TextField;
+import java.awt.Font;
+
+import display.CharDisplay;
+
+/**
+ * CharDisplayTest -- a test applet to show the display/CharDisplay features
+ * --
+ * @version	$Id$
+ * @author	Matthias L. Jugel, Marcus Meißner
+ */
+public class CharDisplayTest extends Applet
+{
+  CharDisplay display = new CharDisplay(80, 24, "Courier", 14);
+
+  Panel buttons = new Panel();
+  Button info = new Button("Information");
+  Button chars = new Button("Character Table");
+  Button attr = new Button("Attributes");
+  Choice fonts = new Choice();
+  TextField from = new TextField("0", 4);
+
+  public void init()
+  {
+    setLayout(new BorderLayout());
+    fonts.addItem("Helvetica");
+    fonts.addItem("TimesRoman");
+    fonts.addItem("Courier");
+    fonts.addItem("Dialog");
+    fonts.addItem("DialogInput");
+    fonts.addItem("ZapfDingBats");
+    fonts.addItem("default");
+    buttons.add(info);
+    buttons.add(chars);
+    buttons.add(attr);
+    buttons.add(fonts);
+    buttons.add(from);
+    add("North", buttons);
+    display.setResizeStrategy(CharDisplay.RESIZE_FONT);
+    add("Center", display);
+    Info();
+  }
+  
+  public boolean handleEvent(Event evt)
+  {
+    if(evt.target == info) { Info(); return true; }
+    if(evt.target == chars) { CharacterTable(); return true; }
+    if(evt.target == attr) { Attributes(); return true; }
+    if(evt.id == Event.ACTION_EVENT && 
+       (evt.target == fonts || evt.target == from))
+    {
+      remove(display);
+      display = new CharDisplay(80, 24, fonts.getSelectedItem(), 12);
+      add("Center", display);
+      CharacterTable();
+      layout();
+      return true;
+    }
+    return false;
+  }
+
+  private void Clear()
+  {
+    display.deleteArea(0, 0, 80, 24);
+  }
+    
+  private void Info()
+  {
+    Clear();
+    display.putString(4, 1, "CharDisplay.class Information", CharDisplay.INVERT);
+    display.putString(4, 3, "Version: "+display.version, CharDisplay.BOLD);
+    display.putString(4, 5, "This class implements several hardware features needed to implement");
+    display.putString(4, 6, "a video terminal.");
+    display.putString(4, 7, "This includes simple operations, such as putting and inserting single");
+    display.putString(4, 8, "characters or strings on the screen, character attributes and colors.");
+    display.putString(4, 9, "Special features like inserting lines, scrolling text up or down and");
+    display.putString(4,10, "defining scrollareas help implementing terminal emulations.");
+    display.redraw();
+  }
+    
+  private void CharacterTable()
+  {
+    int ch = (new Integer(from.getText())).intValue();
+    
+    Clear();
+    display.putString( 4, 1, "Character Table", CharDisplay.INVERT);
+    for(int c = 1; c < 80; c += 6)
+      for(int l = 3; l < 23; l++)
+      {
+	display.putString(c, l, ""+ch, CharDisplay.INVERT);
+	display.putChar(c+4, l, (char)ch++);
+      }
+    display.markLine(3, 20);
+    display.redraw();
+  }
+
+  private void Attributes()
+  {
+    int c = 4, l = 8;
+    
+    Clear();
+    display.putString( 4, 1, "Character attributes", CharDisplay.INVERT);
+    display.putString( 4, 3, "Normal", CharDisplay.NORMAL);
+    display.putString(22, 3, "Bold", CharDisplay.BOLD);
+    display.putString(40, 3, "Underline", CharDisplay.UNDERLINE);
+    display.putString(58, 3, "Invert", CharDisplay.INVERT);
+
+    display.putString( 4, 5, "Black", 1 << 3 | 8 << 7);
+    display.putString(13, 5, "Red", 2 << 3);
+    display.putString(22, 5, "Green", 3 << 3);
+    display.putString(31, 5, "Yellow", 4 << 3);
+    display.putString(40, 5, "Blue", 5 << 3);
+    display.putString(49, 5, "Magenta", 6 << 3);
+    display.putString(58, 5, "Cyan", 7 << 3);
+    display.putString(67, 5, "LightGray", 8 << 3);
+    
+    for(int bg = 1; bg <= 8; bg++)
+    {
+      for(int fg = 1; fg <= 8; fg++)
+      {
+	for(int a = 0; a <= 7; a++)
+	{
+	  display.putChar(c++, l, '@', (fg << 3) | (bg << 7) | a);
+	  display.redraw();
+	}
+	c++;
+      }
+      l += 2; c = 4;
+    }
+    
+  }
+}
diff --git a/web/root/telnet/Documentation/Source/CharDisplayTest.html b/web/root/telnet/Documentation/Source/CharDisplayTest.html
new file mode 100644
index 0000000000000000000000000000000000000000..45f6247aec145283b07310d5ff1bda4e0a76f505
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/CharDisplayTest.html
@@ -0,0 +1,495 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:33 CEST 1999 -->
+<TITLE>
+: Class  CharDisplayTest
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="appWrapper.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="proxy.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CharDisplayTest.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+Class  CharDisplayTest</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--java.applet.Applet
+                          |
+                          +--<B>CharDisplayTest</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CharDisplayTest</B><DT>extends java.applet.Applet</DL>
+
+<P>
+CharDisplayTest -- a test applet to show the display/CharDisplay features
+ --
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="serialized-form.html#CharDisplayTest">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="CharDisplayTest.html#CharDisplayTest()">CharDisplayTest</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="CharDisplayTest.html#handleEvent(java.awt.Event)">handleEvent</A></B>(java.awt.Event&nbsp;evt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="CharDisplayTest.html#init()">init</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.applet.Applet"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.applet.Applet</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>destroy, 
+getAppletContext, 
+getAppletInfo, 
+getAudioClip, 
+getAudioClip, 
+getCodeBase, 
+getDocumentBase, 
+getImage, 
+getImage, 
+getLocale, 
+getParameter, 
+getParameterInfo, 
+isActive, 
+newAudioClip, 
+play, 
+play, 
+resize, 
+resize, 
+setStub, 
+showStatus, 
+start, 
+stop</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Panel"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Panel</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>addNotify</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CharDisplayTest()"><!-- --></A><H3>
+CharDisplayTest</H3>
+<PRE>
+public <B>CharDisplayTest</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="init()"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD>init in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleEvent(java.awt.Event)"><!-- --></A><H3>
+handleEvent</H3>
+<PRE>
+public boolean <B>handleEvent</B>(java.awt.Event&nbsp;evt)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD>handleEvent in class java.awt.Component</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="appWrapper.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="proxy.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CharDisplayTest.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/allclasses-frame.html b/web/root/telnet/Documentation/Source/allclasses-frame.html
new file mode 100644
index 0000000000000000000000000000000000000000..cc7104a4bb829a73122f75d198baa9cce8fc20e4
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/allclasses-frame.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:31 CEST 1999 -->
+<TITLE>
+All Classes
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+<FONT size="+1" ID="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT ID="FrameItemFont"><A HREF="appWrapper.html" TARGET="classFrame">appWrapper</A>
+<BR>
+<A HREF="modules/BSXModule.html" TARGET="classFrame">BSXModule</A>
+<BR>
+<A HREF="modules/ButtonBar.html" TARGET="classFrame">ButtonBar</A>
+<BR>
+<A HREF="display/CharDisplay.html" TARGET="classFrame">CharDisplay</A>
+<BR>
+<A HREF="CharDisplayTest.html" TARGET="classFrame">CharDisplayTest</A>
+<BR>
+<A HREF="modules/Module.html" TARGET="classFrame"><I>Module</I></A>
+<BR>
+<A HREF="modules/MudConnector.html" TARGET="classFrame">MudConnector</A>
+<BR>
+<A HREF="proxy.html" TARGET="classFrame">proxy</A>
+<BR>
+<A HREF="modules/Script.html" TARGET="classFrame">Script</A>
+<BR>
+<A HREF="display/SoftFont.html" TARGET="classFrame">SoftFont</A>
+<BR>
+<A HREF="socket/StatusPeer.html" TARGET="classFrame"><I>StatusPeer</I></A>
+<BR>
+<A HREF="telnet.html" TARGET="classFrame">telnet</A>
+<BR>
+<A HREF="socket/TelnetIO.html" TARGET="classFrame">TelnetIO</A>
+<BR>
+<A HREF="socket/TelnetWrapper.html" TARGET="classFrame">TelnetWrapper</A>
+<BR>
+<A HREF="display/Terminal.html" TARGET="classFrame">Terminal</A>
+<BR>
+<A HREF="display/TerminalHost.html" TARGET="classFrame"><I>TerminalHost</I></A>
+<BR>
+<A HREF="modules/TextLabel.html" TARGET="classFrame">TextLabel</A>
+<BR>
+<A HREF="socket/TimedOutException.html" TARGET="classFrame">TimedOutException</A>
+<BR>
+<A HREF="display/vt320.html" TARGET="classFrame">vt320</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/appWrapper.html b/web/root/telnet/Documentation/Source/appWrapper.html
new file mode 100644
index 0000000000000000000000000000000000000000..c36ac96adcf547f714ace625a1eb25c1c88604ce
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/appWrapper.html
@@ -0,0 +1,637 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Class  appWrapper
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="CharDisplayTest.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="appWrapper.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+Class  appWrapper</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--java.applet.Applet
+                          |
+                          +--<B>appWrapper</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>appWrapper</B><DT>extends java.applet.Applet<DT>implements java.applet.AppletStub, java.lang.Runnable</DL>
+
+<P>
+The appWrapper is thought to make the applet itself independent from
+ the original context. This is necessary to be able to detach the applet
+ from the web browsers window without disconnecting it from events.
+ Note: This applet should work with any applet without changes.
+
+ <DL>
+ <DT><B><PRE>&lt;PARAM NAME=&quot;applet&quot; VALUE=&quot;<I>applet</I>&quot;&gt;</PRE></B>
+ <DD>Defines the applet to be loaded by the appWrapper. State the applet 
+     class name without &quot;.class&quot;!<P>
+ <DT><B><PRE>&lt;PARAM NAME=&quot;startButton&quot; VALUE=&quot;<I>text</I>&quot;&gt;</PRE></B>
+ <DD>If this parameter is set the applet is not loaded until the user presses
+     the button. This decreases first time download delay. The <I>text</I>
+     given as value to the parameter is shown on the button. While loading
+     the applet the message "Loading ..." is shown on the button.<P>
+ <DT><B><PRE>&lt;PARAM NAME=&quot;stopButton&quot; VALUE=&quot;<I>text</I>&quot;&gt;</PRE></B>
+ <DD>This parameter defines the button text when the applet is loaded. When 
+     pressing the button while the applet is running this causes the applet
+     window to be destroyed and the applet is stopped.<P>
+ <DT><B><PRE>&lt;PARAM NAME=&quot;frameTitle&quot; VALUE=&quot;<I>text</I>&quot;&gt;</PRE></B>
+ <DD>The <I>frameTitle</I> is the text that is shown in the title bar of the
+     applet window.<P>
+ </DL>
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel</DD>
+<DT><B>See Also: </B><DD><A HREF="serialized-form.html#appWrapper">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="appWrapper.html#appWrapper()">appWrapper</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#appletResize(int, int)">appletResize</A></B>(int&nbsp;width,
+             int&nbsp;height)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called when the applet want's to be resized.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#getAppletInfo()">getAppletInfo</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Give information about the applet.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String[][]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#getParameterInfo()">getParameterInfo</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Give information about the appWrapper and the applet loaded.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#handleEvent(java.awt.Event)">handleEvent</A></B>(java.awt.Event&nbsp;evt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Handle button events.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#init()">init</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Applet initialization.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#paint(java.awt.Graphics)">paint</A></B>(java.awt.Graphics&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write a message to the applet area.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#reshape(int, int, int, int)">reshape</A></B>(int&nbsp;x,
+        int&nbsp;y,
+        int&nbsp;w,
+        int&nbsp;h)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reshape the applet and ourself</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="appWrapper.html#run()">run</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load the applet finally.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.applet.Applet"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.applet.Applet</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>destroy, 
+getAppletContext, 
+getAudioClip, 
+getAudioClip, 
+getCodeBase, 
+getDocumentBase, 
+getImage, 
+getImage, 
+getLocale, 
+getParameter, 
+isActive, 
+newAudioClip, 
+play, 
+play, 
+resize, 
+resize, 
+setStub, 
+showStatus, 
+start, 
+stop</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Panel"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Panel</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>addNotify</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="appWrapper()"><!-- --></A><H3>
+appWrapper</H3>
+<PRE>
+public <B>appWrapper</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="init()"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>()</PRE>
+<DL>
+<DD>Applet initialization. We load the class giving in parameter "applet"
+ and set the stub corresponding to ours. Thus we are able to give
+ it access to the parameters and any applet specific context.<DD><DL>
+<DT><B>Overrides:</B><DD>init in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="run()"><!-- --></A><H3>
+run</H3>
+<PRE>
+public void <B>run</B>()</PRE>
+<DL>
+<DD>Load the applet finally. When using a button this creates a new frame
+ to put the applet in.<DD><DL>
+<DT><B>Specified by: </B><DD>run in interface java.lang.Runnable</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="appletResize(int, int)"><!-- --></A><H3>
+appletResize</H3>
+<PRE>
+public void <B>appletResize</B>(int&nbsp;width,
+                         int&nbsp;height)</PRE>
+<DL>
+<DD>This method is called when the applet want's to be resized.<DD><DL>
+<DT><B>Specified by: </B><DD>appletResize in interface java.applet.AppletStub<DT><B>Parameters:</B><DD><CODE>width</CODE> - the width of the applet<DD><CODE>height</CODE> - the height of the applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getAppletInfo()"><!-- --></A><H3>
+getAppletInfo</H3>
+<PRE>
+public java.lang.String <B>getAppletInfo</B>()</PRE>
+<DL>
+<DD>Give information about the applet.<DD><DL>
+<DT><B>Overrides:</B><DD>getAppletInfo in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getParameterInfo()"><!-- --></A><H3>
+getParameterInfo</H3>
+<PRE>
+public java.lang.String[][] <B>getParameterInfo</B>()</PRE>
+<DL>
+<DD>Give information about the appWrapper and the applet loaded.<DD><DL>
+<DT><B>Overrides:</B><DD>getParameterInfo in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="paint(java.awt.Graphics)"><!-- --></A><H3>
+paint</H3>
+<PRE>
+public void <B>paint</B>(java.awt.Graphics&nbsp;g)</PRE>
+<DL>
+<DD>Write a message to the applet area.<DD><DL>
+<DT><B>Overrides:</B><DD>paint in class java.awt.Container</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reshape(int, int, int, int)"><!-- --></A><H3>
+reshape</H3>
+<PRE>
+public void <B>reshape</B>(int&nbsp;x,
+                    int&nbsp;y,
+                    int&nbsp;w,
+                    int&nbsp;h)</PRE>
+<DL>
+<DD>reshape the applet and ourself<DD><DL>
+<DT><B>Overrides:</B><DD>reshape in class java.awt.Component</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleEvent(java.awt.Event)"><!-- --></A><H3>
+handleEvent</H3>
+<PRE>
+public boolean <B>handleEvent</B>(java.awt.Event&nbsp;evt)</PRE>
+<DL>
+<DD>Handle button events. When pressed it either creates the new applet
+ window or destoys it.<DD><DL>
+<DT><B>Overrides:</B><DD>handleEvent in class java.awt.Component</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="CharDisplayTest.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="appWrapper.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/deprecated-list.html b/web/root/telnet/Documentation/Source/deprecated-list.html
new file mode 100644
index 0000000000000000000000000000000000000000..3406b6aaf3cffbc7306df0054eb8da0370f394a6
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/deprecated-list.html
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:31 CEST 1999 -->
+<TITLE>
+: Deprecated List
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Deprecated API</B></H2>
+</CENTER>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="deprecated-list.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/CharDisplay.html b/web/root/telnet/Documentation/Source/display/CharDisplay.html
new file mode 100644
index 0000000000000000000000000000000000000000..8257ff2d2134f2410511a8c9ad6dea4903a9b302
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/CharDisplay.html
@@ -0,0 +1,1563 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:34 CEST 1999 -->
+<TITLE>
+: Class  CharDisplay
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../display/SoftFont.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CharDisplay.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+display</FONT>
+<BR>
+Class  CharDisplay</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--<B>display.CharDisplay</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>CharDisplay</B><DT>extends java.awt.Panel</DL>
+
+<P>
+A simple character display.
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="../serialized-form.html#display.CharDisplay">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#BOLD">BOLD</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make character bold.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#debug">debug</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable debug messages.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#INVERT">INVERT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invert character.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#NORMAL">NORMAL</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make character normal.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#RESIZE_FONT">RESIZE_FONT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resize the font to the new screensize.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#RESIZE_NONE">RESIZE_NONE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do nothing when the container is resized.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#RESIZE_SCREEN">RESIZE_SCREEN</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resize the width and height of the characterscreen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#SCROLL_DOWN">SCROLL_DOWN</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scroll down when inserting a line.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#SCROLL_UP">SCROLL_UP</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scroll up when inserting a line.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#UNDERLINE">UNDERLINE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Underline character.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#version">version</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If you need the runtime version, just ask this variable.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../display/CharDisplay.html#CharDisplay()">CharDisplay</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a character display with size 80x24 and Font "Courier", size 12.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../display/CharDisplay.html#CharDisplay(int, int)">CharDisplay</A></B>(int&nbsp;width,
+            int&nbsp;height)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a character display with specific size, Font is "Courier", size 12.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../display/CharDisplay.html#CharDisplay(int, int, java.lang.String, int)">CharDisplay</A></B>(int&nbsp;width,
+            int&nbsp;height,
+            java.lang.String&nbsp;fname,
+            int&nbsp;fsize)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a character display with specific size, font and font size.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../display/CharDisplay.html#CharDisplay(java.lang.String, int)">CharDisplay</A></B>(java.lang.String&nbsp;fname,
+            int&nbsp;fsize)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a character display with 80x24 and specific font and font size.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#deleteArea(int, int, int, int)">deleteArea</A></B>(int&nbsp;c,
+           int&nbsp;l,
+           int&nbsp;w,
+           int&nbsp;h)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete a rectangular portion of the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#deleteChar(int, int)">deleteChar</A></B>(int&nbsp;c,
+           int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete a character at a given position on the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#deleteLine(int)">deleteLine</A></B>(int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete a line at a specific position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getAttributes(int, int)">getAttributes</A></B>(int&nbsp;c,
+              int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the attributes for the specified position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getBottomMargin()">getBottomMargin</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the bottom scroll margin.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getBufferSize()">getBufferSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve current scrollback buffer size.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;char</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getChar(int, int)">getChar</A></B>(int&nbsp;c,
+        int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the character at the specified position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getColumns()">getColumns</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get amount of columns on the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.awt.Dimension</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getCursorPos()">getCursorPos</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the current cursor position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getMaxBufferSize()">getMaxBufferSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve maximum buffer Size.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getRows()">getRows</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get amount of rows on the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getTopMargin()">getTopMargin</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the top scroll margin.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#getWindowBase()">getWindowBase</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the current window base.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#handleEvent(java.awt.Event)">handleEvent</A></B>(java.awt.Event&nbsp;evt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Handle mouse events for copy & paste</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#insertChar(int, int, char, int)">insertChar</A></B>(int&nbsp;c,
+           int&nbsp;l,
+           char&nbsp;ch,
+           int&nbsp;attributes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert a character at a specific position on the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#insertLine(int)">insertLine</A></B>(int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert a blank line at a specific position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#insertLine(int, boolean)">insertLine</A></B>(int&nbsp;l,
+           boolean&nbsp;scrollDown)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert a blank line at a specific position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#insertLine(int, int)">insertLine</A></B>(int&nbsp;l,
+           int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert blank lines at a specific position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#insertLine(int, int, boolean)">insertLine</A></B>(int&nbsp;l,
+           int&nbsp;n,
+           boolean&nbsp;scrollDown)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert blank lines at a specific position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.awt.Insets</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#insets()">insets</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The insets of the character display define the border.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#markLine(int, int)">markLine</A></B>(int&nbsp;l,
+         int&nbsp;n)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark lines to be updated with redraw().</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.awt.Color</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#notbold(java.awt.Color)">notbold</A></B>(java.awt.Color&nbsp;colr)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#paint(java.awt.Graphics)">paint</A></B>(java.awt.Graphics&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Paint the current screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.awt.Dimension</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#preferredSize()">preferredSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the preferred Size of the character display.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#putChar(int, int, char)">putChar</A></B>(int&nbsp;c,
+        int&nbsp;l,
+        char&nbsp;ch)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put a character on the screen with normal font and outline.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#putChar(int, int, char, int)">putChar</A></B>(int&nbsp;c,
+        int&nbsp;l,
+        char&nbsp;ch,
+        int&nbsp;attributes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put a character on the screen with specific font and outline.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#putString(int, int, java.lang.String)">putString</A></B>(int&nbsp;c,
+          int&nbsp;l,
+          java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put a String at a specific position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#putString(int, int, java.lang.String, int)">putString</A></B>(int&nbsp;c,
+          int&nbsp;l,
+          java.lang.String&nbsp;s,
+          int&nbsp;attributes)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put a String at a specific position giving all characters the same
+ attributes.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#redraw()">redraw</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Redraw marked lines.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#reshape(int, int, int, int)">reshape</A></B>(int&nbsp;x,
+        int&nbsp;y,
+        int&nbsp;w,
+        int&nbsp;h)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reshape character display according to resize strategy.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setBorder(int, boolean)">setBorder</A></B>(int&nbsp;thickness,
+          boolean&nbsp;raised)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the border thickness and the border type.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setBottomMargin(int)">setBottomMargin</A></B>(int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the bottom scroll margin for the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setBufferSize(int)">setBufferSize</A></B>(int&nbsp;amount)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set scrollback buffer size.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setCursorPos(int, int)">setCursorPos</A></B>(int&nbsp;c,
+             int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Puts the cursor at the specified position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setResizeStrategy(int)">setResizeStrategy</A></B>(int&nbsp;strategy)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the strategy when window is resized.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setScrollbar(java.lang.String)">setScrollbar</A></B>(java.lang.String&nbsp;position)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the scrollbar position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setTopMargin(int)">setTopMargin</A></B>(int&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the top scroll margin for the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setWindowBase(int)">setWindowBase</A></B>(int&nbsp;line)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the current window base.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#setWindowSize(int, int)">setWindowSize</A></B>(int&nbsp;width,
+              int&nbsp;height)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Change the size of the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.awt.Dimension</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#size()">size</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the real size in points of the character display.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/CharDisplay.html#update(java.awt.Graphics)">update</A></B>(java.awt.Graphics&nbsp;g)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update the display.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Panel"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Panel</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>addNotify</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paintComponents, 
+paramString, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocale, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+resize, 
+resize, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="version"><!-- --></A><H3>
+version</H3>
+<PRE>
+public java.lang.String <B>version</B></PRE>
+<DL>
+<DD>If you need the runtime version, just ask this variable.</DL>
+<HR>
+
+<A NAME="debug"><!-- --></A><H3>
+debug</H3>
+<PRE>
+public static final int <B>debug</B></PRE>
+<DL>
+<DD>Enable debug messages. This is final static to prevent unused
+ code to be compiled.</DL>
+<HR>
+
+<A NAME="SCROLL_UP"><!-- --></A><H3>
+SCROLL_UP</H3>
+<PRE>
+public static final boolean <B>SCROLL_UP</B></PRE>
+<DL>
+<DD>Scroll up when inserting a line.</DL>
+<HR>
+
+<A NAME="SCROLL_DOWN"><!-- --></A><H3>
+SCROLL_DOWN</H3>
+<PRE>
+public static final boolean <B>SCROLL_DOWN</B></PRE>
+<DL>
+<DD>Scroll down when inserting a line.</DL>
+<HR>
+
+<A NAME="RESIZE_NONE"><!-- --></A><H3>
+RESIZE_NONE</H3>
+<PRE>
+public static final int <B>RESIZE_NONE</B></PRE>
+<DL>
+<DD>Do nothing when the container is resized.</DL>
+<HR>
+
+<A NAME="RESIZE_SCREEN"><!-- --></A><H3>
+RESIZE_SCREEN</H3>
+<PRE>
+public static final int <B>RESIZE_SCREEN</B></PRE>
+<DL>
+<DD>Resize the width and height of the characterscreen.</DL>
+<HR>
+
+<A NAME="RESIZE_FONT"><!-- --></A><H3>
+RESIZE_FONT</H3>
+<PRE>
+public static final int <B>RESIZE_FONT</B></PRE>
+<DL>
+<DD>Resize the font to the new screensize.</DL>
+<HR>
+
+<A NAME="NORMAL"><!-- --></A><H3>
+NORMAL</H3>
+<PRE>
+public static final int <B>NORMAL</B></PRE>
+<DL>
+<DD>Make character normal.</DL>
+<HR>
+
+<A NAME="BOLD"><!-- --></A><H3>
+BOLD</H3>
+<PRE>
+public static final int <B>BOLD</B></PRE>
+<DL>
+<DD>Make character bold.</DL>
+<HR>
+
+<A NAME="UNDERLINE"><!-- --></A><H3>
+UNDERLINE</H3>
+<PRE>
+public static final int <B>UNDERLINE</B></PRE>
+<DL>
+<DD>Underline character.</DL>
+<HR>
+
+<A NAME="INVERT"><!-- --></A><H3>
+INVERT</H3>
+<PRE>
+public static final int <B>INVERT</B></PRE>
+<DL>
+<DD>Invert character.</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="CharDisplay()"><!-- --></A><H3>
+CharDisplay</H3>
+<PRE>
+public <B>CharDisplay</B>()</PRE>
+<DL>
+<DD>Create a character display with size 80x24 and Font "Courier", size 12.</DL>
+<HR>
+
+<A NAME="CharDisplay(int, int)"><!-- --></A><H3>
+CharDisplay</H3>
+<PRE>
+public <B>CharDisplay</B>(int&nbsp;width,
+                   int&nbsp;height)</PRE>
+<DL>
+<DD>Create a character display with specific size, Font is "Courier", size 12.</DL>
+<HR>
+
+<A NAME="CharDisplay(java.lang.String, int)"><!-- --></A><H3>
+CharDisplay</H3>
+<PRE>
+public <B>CharDisplay</B>(java.lang.String&nbsp;fname,
+                   int&nbsp;fsize)</PRE>
+<DL>
+<DD>Create a character display with 80x24 and specific font and font size.</DL>
+<HR>
+
+<A NAME="CharDisplay(int, int, java.lang.String, int)"><!-- --></A><H3>
+CharDisplay</H3>
+<PRE>
+public <B>CharDisplay</B>(int&nbsp;width,
+                   int&nbsp;height,
+                   java.lang.String&nbsp;fname,
+                   int&nbsp;fsize)</PRE>
+<DL>
+<DD>Create a character display with specific size, font and font size.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="notbold(java.awt.Color)"><!-- --></A><H3>
+notbold</H3>
+<PRE>
+public java.awt.Color <B>notbold</B>(java.awt.Color&nbsp;colr)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="putChar(int, int, char)"><!-- --></A><H3>
+putChar</H3>
+<PRE>
+public void <B>putChar</B>(int&nbsp;c,
+                    int&nbsp;l,
+                    char&nbsp;ch)</PRE>
+<DL>
+<DD>Put a character on the screen with normal font and outline.
+ The character previously on that position will be overwritten.
+ You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DD><CODE>ch</CODE> - the character to show on the screen<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#insertChar(int, int, char, int)"><CODE>insertChar(int, int, char, int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#deleteChar(int, int)"><CODE>deleteChar(int, int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putChar(int, int, char, int)"><!-- --></A><H3>
+putChar</H3>
+<PRE>
+public void <B>putChar</B>(int&nbsp;c,
+                    int&nbsp;l,
+                    char&nbsp;ch,
+                    int&nbsp;attributes)</PRE>
+<DL>
+<DD>Put a character on the screen with specific font and outline.
+ The character previously on that position will be overwritten.
+ You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DD><CODE>ch</CODE> - the character to show on the screen<DD><CODE>attributes</CODE> - the character attributes<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#BOLD"><CODE>BOLD</CODE></A>, 
+<A HREF="../display/CharDisplay.html#UNDERLINE"><CODE>UNDERLINE</CODE></A>, 
+<A HREF="../display/CharDisplay.html#INVERT"><CODE>INVERT</CODE></A>, 
+<A HREF="../display/CharDisplay.html#NORMAL"><CODE>NORMAL</CODE></A>, 
+<A HREF="../display/CharDisplay.html#insertChar(int, int, char, int)"><CODE>insertChar(int, int, char, int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#deleteChar(int, int)"><CODE>deleteChar(int, int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getChar(int, int)"><!-- --></A><H3>
+getChar</H3>
+<PRE>
+public char <B>getChar</B>(int&nbsp;c,
+                    int&nbsp;l)</PRE>
+<DL>
+<DD>Get the character at the specified position.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#putChar(int, int, char)"><CODE>putChar(int, int, char)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getAttributes(int, int)"><!-- --></A><H3>
+getAttributes</H3>
+<PRE>
+public int <B>getAttributes</B>(int&nbsp;c,
+                         int&nbsp;l)</PRE>
+<DL>
+<DD>Get the attributes for the specified position.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#putChar(int, int, char)"><CODE>putChar(int, int, char)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertChar(int, int, char, int)"><!-- --></A><H3>
+insertChar</H3>
+<PRE>
+public void <B>insertChar</B>(int&nbsp;c,
+                       int&nbsp;l,
+                       char&nbsp;ch,
+                       int&nbsp;attributes)</PRE>
+<DL>
+<DD>Insert a character at a specific position on the screen.
+ All character right to from this position will be moved one to the right.
+ You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DD><CODE>ch</CODE> - the character to insert<DD><CODE>attributes</CODE> - the character attributes<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#BOLD"><CODE>BOLD</CODE></A>, 
+<A HREF="../display/CharDisplay.html#UNDERLINE"><CODE>UNDERLINE</CODE></A>, 
+<A HREF="../display/CharDisplay.html#INVERT"><CODE>INVERT</CODE></A>, 
+<A HREF="../display/CharDisplay.html#NORMAL"><CODE>NORMAL</CODE></A>, 
+<A HREF="../display/CharDisplay.html#putChar(int, int, char)"><CODE>putChar(int, int, char)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#deleteChar(int, int)"><CODE>deleteChar(int, int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="deleteChar(int, int)"><!-- --></A><H3>
+deleteChar</H3>
+<PRE>
+public void <B>deleteChar</B>(int&nbsp;c,
+                       int&nbsp;l)</PRE>
+<DL>
+<DD>Delete a character at a given position on the screen.
+ All characters right to the position will be moved one to the left.
+ You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#putChar(int, int, char)"><CODE>putChar(int, int, char)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#insertChar(int, int, char, int)"><CODE>insertChar(int, int, char, int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putString(int, int, java.lang.String)"><!-- --></A><H3>
+putString</H3>
+<PRE>
+public void <B>putString</B>(int&nbsp;c,
+                      int&nbsp;l,
+                      java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>Put a String at a specific position. Any characters previously on that 
+ position will be overwritten. You need to call redraw() for screen update.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DD><CODE>s</CODE> - the string to be shown on the screen<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#BOLD"><CODE>BOLD</CODE></A>, 
+<A HREF="../display/CharDisplay.html#UNDERLINE"><CODE>UNDERLINE</CODE></A>, 
+<A HREF="../display/CharDisplay.html#INVERT"><CODE>INVERT</CODE></A>, 
+<A HREF="../display/CharDisplay.html#NORMAL"><CODE>NORMAL</CODE></A>, 
+<A HREF="../display/CharDisplay.html#putChar(int, int, char)"><CODE>putChar(int, int, char)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#insertLine(int)"><CODE>insertLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putString(int, int, java.lang.String, int)"><!-- --></A><H3>
+putString</H3>
+<PRE>
+public void <B>putString</B>(int&nbsp;c,
+                      int&nbsp;l,
+                      java.lang.String&nbsp;s,
+                      int&nbsp;attributes)</PRE>
+<DL>
+<DD>Put a String at a specific position giving all characters the same
+ attributes. Any characters previously on that position will be 
+ overwritten. You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (line)<DD><CODE>s</CODE> - the string to be shown on the screen<DD><CODE>attributes</CODE> - character attributes<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#BOLD"><CODE>BOLD</CODE></A>, 
+<A HREF="../display/CharDisplay.html#UNDERLINE"><CODE>UNDERLINE</CODE></A>, 
+<A HREF="../display/CharDisplay.html#INVERT"><CODE>INVERT</CODE></A>, 
+<A HREF="../display/CharDisplay.html#NORMAL"><CODE>NORMAL</CODE></A>, 
+<A HREF="../display/CharDisplay.html#putChar(int, int, char)"><CODE>putChar(int, int, char)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#insertLine(int)"><CODE>insertLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertLine(int)"><!-- --></A><H3>
+insertLine</H3>
+<PRE>
+public void <B>insertLine</B>(int&nbsp;l)</PRE>
+<DL>
+<DD>Insert a blank line at a specific position.
+ The current line and all previous lines are scrolled one line up. The
+ top line is lost. You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - the y-coordinate to insert the line<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertLine(int, int)"><!-- --></A><H3>
+insertLine</H3>
+<PRE>
+public void <B>insertLine</B>(int&nbsp;l,
+                       int&nbsp;n)</PRE>
+<DL>
+<DD>Insert blank lines at a specific position.
+ You need to call redraw() to update the screen<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - the y-coordinate to insert the line<DD><CODE>n</CODE> - amount of lines to be inserted<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertLine(int, boolean)"><!-- --></A><H3>
+insertLine</H3>
+<PRE>
+public void <B>insertLine</B>(int&nbsp;l,
+                       boolean&nbsp;scrollDown)</PRE>
+<DL>
+<DD>Insert a blank line at a specific position. Scroll text according to
+ the argument.
+ You need to call redraw() to update the screen<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - the y-coordinate to insert the line<DD><CODE>scrollDown</CODE> - scroll down<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#SCROLL_UP"><CODE>SCROLL_UP</CODE></A>, 
+<A HREF="../display/CharDisplay.html#SCROLL_DOWN"><CODE>SCROLL_DOWN</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insertLine(int, int, boolean)"><!-- --></A><H3>
+insertLine</H3>
+<PRE>
+public void <B>insertLine</B>(int&nbsp;l,
+                       int&nbsp;n,
+                       boolean&nbsp;scrollDown)</PRE>
+<DL>
+<DD>Insert blank lines at a specific position.
+ The current line and all previous lines are scrolled one line up. The
+ top line is lost. You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - the y-coordinate to insert the line<DD><CODE>n</CODE> - number of lines to be inserted<DD><CODE>scrollDown</CODE> - scroll down<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#SCROLL_UP"><CODE>SCROLL_UP</CODE></A>, 
+<A HREF="../display/CharDisplay.html#SCROLL_DOWN"><CODE>SCROLL_DOWN</CODE></A>, 
+<A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="deleteLine(int)"><!-- --></A><H3>
+deleteLine</H3>
+<PRE>
+public void <B>deleteLine</B>(int&nbsp;l)</PRE>
+<DL>
+<DD>Delete a line at a specific position. Subsequent lines will be scrolled 
+ up to fill the space and a blank line is inserted at the end of the 
+ screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - the y-coordinate to insert the line<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="deleteArea(int, int, int, int)"><!-- --></A><H3>
+deleteArea</H3>
+<PRE>
+public void <B>deleteArea</B>(int&nbsp;c,
+                       int&nbsp;l,
+                       int&nbsp;w,
+                       int&nbsp;h)</PRE>
+<DL>
+<DD>Delete a rectangular portion of the screen.
+ You need to call redraw() to update the screen.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - x-coordinate (column)<DD><CODE>l</CODE> - y-coordinate (row)<DD><CODE>w</CODE> - with of the area in characters<DD><CODE>h</CODE> - height of the area in characters<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#deleteChar(int, int)"><CODE>deleteChar(int, int)</CODE></A>, 
+<A HREF="../display/CharDisplay.html#deleteLine(int)"><CODE>deleteLine(int)</CODE></A>, 
+<CODE>redraw</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setCursorPos(int, int)"><!-- --></A><H3>
+setCursorPos</H3>
+<PRE>
+public void <B>setCursorPos</B>(int&nbsp;c,
+                         int&nbsp;l)</PRE>
+<DL>
+<DD>Puts the cursor at the specified position.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - column<DD><CODE>l</CODE> - line</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getCursorPos()"><!-- --></A><H3>
+getCursorPos</H3>
+<PRE>
+public java.awt.Dimension <B>getCursorPos</B>()</PRE>
+<DL>
+<DD>Get the current cursor position.<DD><DL>
+<DT><B>See Also: </B><DD><CODE>Dimension</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setTopMargin(int)"><!-- --></A><H3>
+setTopMargin</H3>
+<PRE>
+public void <B>setTopMargin</B>(int&nbsp;l)</PRE>
+<DL>
+<DD>Set the top scroll margin for the screen. If the current bottom margin
+ is smaller it will become the top margin and the line will become the
+ bottom margin.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - line that is the margin</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTopMargin()"><!-- --></A><H3>
+getTopMargin</H3>
+<PRE>
+public int <B>getTopMargin</B>()</PRE>
+<DL>
+<DD>Get the top scroll margin.</DL>
+<HR>
+
+<A NAME="setBottomMargin(int)"><!-- --></A><H3>
+setBottomMargin</H3>
+<PRE>
+public void <B>setBottomMargin</B>(int&nbsp;l)</PRE>
+<DL>
+<DD>Set the bottom scroll margin for the screen. If the current top margin
+ is bigger it will become the bottom margin and the line will become the
+ top margin.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - line that is the margin</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBottomMargin()"><!-- --></A><H3>
+getBottomMargin</H3>
+<PRE>
+public int <B>getBottomMargin</B>()</PRE>
+<DL>
+<DD>Get the bottom scroll margin.</DL>
+<HR>
+
+<A NAME="setBufferSize(int)"><!-- --></A><H3>
+setBufferSize</H3>
+<PRE>
+public void <B>setBufferSize</B>(int&nbsp;amount)</PRE>
+<DL>
+<DD>Set scrollback buffer size.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>amount</CODE> - new size of the buffer</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getBufferSize()"><!-- --></A><H3>
+getBufferSize</H3>
+<PRE>
+public int <B>getBufferSize</B>()</PRE>
+<DL>
+<DD>Retrieve current scrollback buffer size.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#setBufferSize(int)"><CODE>setBufferSize(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMaxBufferSize()"><!-- --></A><H3>
+getMaxBufferSize</H3>
+<PRE>
+public int <B>getMaxBufferSize</B>()</PRE>
+<DL>
+<DD>Retrieve maximum buffer Size.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#getBufferSize()"><CODE>getBufferSize()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setWindowBase(int)"><!-- --></A><H3>
+setWindowBase</H3>
+<PRE>
+public void <B>setWindowBase</B>(int&nbsp;line)</PRE>
+<DL>
+<DD>Set the current window base. This allows to view the scrollback buffer.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>line</CODE> - the line where the screen window starts<DT><B>See Also: </B><DD><CODE>setBufferSize</CODE>, 
+<CODE>getBufferSize</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getWindowBase()"><!-- --></A><H3>
+getWindowBase</H3>
+<PRE>
+public int <B>getWindowBase</B>()</PRE>
+<DL>
+<DD>Get the current window base.<DD><DL>
+<DT><B>See Also: </B><DD><CODE>setWindowBase</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setWindowSize(int, int)"><!-- --></A><H3>
+setWindowSize</H3>
+<PRE>
+public void <B>setWindowSize</B>(int&nbsp;width,
+                          int&nbsp;height)</PRE>
+<DL>
+<DD>Change the size of the screen. This will include adjustment of the 
+ scrollback buffer.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>columns</CODE> - width of the screen<DD><CODE>columns</CODE> - height of the screen</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setResizeStrategy(int)"><!-- --></A><H3>
+setResizeStrategy</H3>
+<PRE>
+public void <B>setResizeStrategy</B>(int&nbsp;strategy)</PRE>
+<DL>
+<DD>Set the strategy when window is resized.
+ RESIZE_FONT is default.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>strategy</CODE> - the strategy<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#RESIZE_NONE"><CODE>RESIZE_NONE</CODE></A>, 
+<A HREF="../display/CharDisplay.html#RESIZE_FONT"><CODE>RESIZE_FONT</CODE></A>, 
+<A HREF="../display/CharDisplay.html#RESIZE_SCREEN"><CODE>RESIZE_SCREEN</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRows()"><!-- --></A><H3>
+getRows</H3>
+<PRE>
+public int <B>getRows</B>()</PRE>
+<DL>
+<DD>Get amount of rows on the screen.</DL>
+<HR>
+
+<A NAME="getColumns()"><!-- --></A><H3>
+getColumns</H3>
+<PRE>
+public int <B>getColumns</B>()</PRE>
+<DL>
+<DD>Get amount of columns on the screen.</DL>
+<HR>
+
+<A NAME="setBorder(int, boolean)"><!-- --></A><H3>
+setBorder</H3>
+<PRE>
+public void <B>setBorder</B>(int&nbsp;thickness,
+                      boolean&nbsp;raised)</PRE>
+<DL>
+<DD>Set the border thickness and the border type.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>thickness</CODE> - border thickness in pixels, zero means no border<DD><CODE>raised</CODE> - a boolean indicating a raised or embossed border</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setScrollbar(java.lang.String)"><!-- --></A><H3>
+setScrollbar</H3>
+<PRE>
+public void <B>setScrollbar</B>(java.lang.String&nbsp;position)</PRE>
+<DL>
+<DD>Set the scrollbar position. valid values are "East" or "West".<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>position</CODE> - the position of the scrollbar</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="markLine(int, int)"><!-- --></A><H3>
+markLine</H3>
+<PRE>
+public void <B>markLine</B>(int&nbsp;l,
+                     int&nbsp;n)</PRE>
+<DL>
+<DD>Mark lines to be updated with redraw().<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - starting line<DD><CODE>n</CODE> - amount of lines to be updated<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#redraw()"><CODE>redraw()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="redraw()"><!-- --></A><H3>
+redraw</H3>
+<PRE>
+public void <B>redraw</B>()</PRE>
+<DL>
+<DD>Redraw marked lines.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#markLine(int, int)"><CODE>markLine(int, int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="update(java.awt.Graphics)"><!-- --></A><H3>
+update</H3>
+<PRE>
+public void <B>update</B>(java.awt.Graphics&nbsp;g)</PRE>
+<DL>
+<DD>Update the display. to reduce flashing we have overridden this method.<DD><DL>
+<DT><B>Overrides:</B><DD>update in class java.awt.Container</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="paint(java.awt.Graphics)"><!-- --></A><H3>
+paint</H3>
+<PRE>
+public void <B>paint</B>(java.awt.Graphics&nbsp;g)</PRE>
+<DL>
+<DD>Paint the current screen. All painting is done here. Only lines that have
+ changed will be redrawn!<DD><DL>
+<DT><B>Overrides:</B><DD>paint in class java.awt.Container</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="reshape(int, int, int, int)"><!-- --></A><H3>
+reshape</H3>
+<PRE>
+public void <B>reshape</B>(int&nbsp;x,
+                    int&nbsp;y,
+                    int&nbsp;w,
+                    int&nbsp;h)</PRE>
+<DL>
+<DD>Reshape character display according to resize strategy.<DD><DL>
+<DT><B>Overrides:</B><DD>reshape in class java.awt.Component<DT><B>See Also: </B><DD><A HREF="../display/CharDisplay.html#setResizeStrategy(int)"><CODE>setResizeStrategy(int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="size()"><!-- --></A><H3>
+size</H3>
+<PRE>
+public java.awt.Dimension <B>size</B>()</PRE>
+<DL>
+<DD>Return the real size in points of the character display.<DD><DL>
+<DT><B>Returns:</B><DD>Dimension the dimension of the display<DT><B>Overrides:</B><DD>size in class java.awt.Component<DT><B>See Also: </B><DD><CODE>Dimension</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="preferredSize()"><!-- --></A><H3>
+preferredSize</H3>
+<PRE>
+public java.awt.Dimension <B>preferredSize</B>()</PRE>
+<DL>
+<DD>Return the preferred Size of the character display.
+ This turns out to be the actual size.<DD><DL>
+<DT><B>Returns:</B><DD>Dimension dimension of the display<DT><B>Overrides:</B><DD>preferredSize in class java.awt.Container<DT><B>See Also: </B><DD><CODE>size</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="insets()"><!-- --></A><H3>
+insets</H3>
+<PRE>
+public java.awt.Insets <B>insets</B>()</PRE>
+<DL>
+<DD>The insets of the character display define the border.<DD><DL>
+<DT><B>Returns:</B><DD>Insets border thickness in pixels<DT><B>Overrides:</B><DD>insets in class java.awt.Container</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleEvent(java.awt.Event)"><!-- --></A><H3>
+handleEvent</H3>
+<PRE>
+public boolean <B>handleEvent</B>(java.awt.Event&nbsp;evt)</PRE>
+<DL>
+<DD>Handle mouse events for copy & paste<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>evt</CODE> - the event that occured<DT><B>Returns:</B><DD>boolean true if action was taken<DT><B>Overrides:</B><DD>handleEvent in class java.awt.Component<DT><B>See Also: </B><DD><CODE>Event</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../display/SoftFont.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="CharDisplay.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/SoftFont.html b/web/root/telnet/Documentation/Source/display/SoftFont.html
new file mode 100644
index 0000000000000000000000000000000000000000..e9d22339d6202757e220f6eb7e9c1014c8a7e674
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/SoftFont.html
@@ -0,0 +1,242 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:34 CEST 1999 -->
+<TITLE>
+: Class  SoftFont
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/CharDisplay.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../display/Terminal.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SoftFont.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+display</FONT>
+<BR>
+Class  SoftFont</H2>
+<PRE>
+java.lang.Object
+  |
+  +--<B>display.SoftFont</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SoftFont</B><DT>extends java.lang.Object</DL>
+
+<P>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../display/SoftFont.html#SoftFont()">SoftFont</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/SoftFont.html#drawChar(java.awt.Graphics, char, int, int, int, int)">drawChar</A></B>(java.awt.Graphics&nbsp;g,
+         char&nbsp;c,
+         int&nbsp;x,
+         int&nbsp;y,
+         int&nbsp;cw,
+         int&nbsp;ch)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/SoftFont.html#inSoftFont(char)">inSoftFont</A></B>(char&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+toString, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SoftFont()"><!-- --></A><H3>
+SoftFont</H3>
+<PRE>
+public <B>SoftFont</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="inSoftFont(char)"><!-- --></A><H3>
+inSoftFont</H3>
+<PRE>
+public boolean <B>inSoftFont</B>(char&nbsp;c)</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="drawChar(java.awt.Graphics, char, int, int, int, int)"><!-- --></A><H3>
+drawChar</H3>
+<PRE>
+public void <B>drawChar</B>(java.awt.Graphics&nbsp;g,
+                     char&nbsp;c,
+                     int&nbsp;x,
+                     int&nbsp;y,
+                     int&nbsp;cw,
+                     int&nbsp;ch)</PRE>
+<DL>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/CharDisplay.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../display/Terminal.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="SoftFont.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/Terminal.html b/web/root/telnet/Documentation/Source/display/Terminal.html
new file mode 100644
index 0000000000000000000000000000000000000000..1040635694953f70cb65c1080517eaa8441d5336
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/Terminal.html
@@ -0,0 +1,528 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:34 CEST 1999 -->
+<TITLE>
+: Class  Terminal
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/SoftFont.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../display/vt320.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Terminal.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+display</FONT>
+<BR>
+Class  Terminal</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--<B>display.Terminal</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../display/vt320.html">vt320</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract class <B>Terminal</B><DT>extends java.awt.Panel</DL>
+
+<P>
+Terminal is an abstract emulation class.
+ It contains a character display.
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="../serialized-form.html#display.Terminal">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../display/Terminal.html#Terminal()">Terminal</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;java.lang.String[][]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/Terminal.html#getParameterInfo()">getParameterInfo</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the specific parameter info for the emulation.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;java.awt.Dimension</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/Terminal.html#getSize()">getSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the current size of the terminal in characters.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/Terminal.html#getTerminalType()">getTerminalType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return actual terminal type identifier.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/Terminal.html#putChar(char)">putChar</A></B>(char&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put a character on the screen.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>abstract &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/Terminal.html#putString(java.lang.String)">putString</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put a character on the screen.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Panel"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Panel</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>addNotify</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocale, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+handleEvent, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+resize, 
+resize, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Terminal()"><!-- --></A><H3>
+Terminal</H3>
+<PRE>
+public <B>Terminal</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getParameterInfo()"><!-- --></A><H3>
+getParameterInfo</H3>
+<PRE>
+public abstract java.lang.String[][] <B>getParameterInfo</B>()</PRE>
+<DL>
+<DD>Get the specific parameter info for the emulation.<DD><DL>
+<DT><B>See Also: </B><DD><CODE>Applet</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putChar(char)"><!-- --></A><H3>
+putChar</H3>
+<PRE>
+public abstract void <B>putChar</B>(char&nbsp;c)</PRE>
+<DL>
+<DD>Put a character on the screen. The method has to see if it is
+ a special character that needs to be handles special.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>c</CODE> - the character<DT><B>See Also: </B><DD><A HREF="../display/Terminal.html#putString(java.lang.String)"><CODE>putString(java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putString(java.lang.String)"><!-- --></A><H3>
+putString</H3>
+<PRE>
+public abstract void <B>putString</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>Put a character on the screen. The method has to parse the string
+ may handle special characters.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>s</CODE> - the string<DT><B>See Also: </B><DD><A HREF="../display/Terminal.html#putString(java.lang.String)"><CODE>putString(java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSize()"><!-- --></A><H3>
+getSize</H3>
+<PRE>
+public abstract java.awt.Dimension <B>getSize</B>()</PRE>
+<DL>
+<DD>Return the current size of the terminal in characters.<DD><DL>
+<DT><B>Overrides:</B><DD>getSize in class java.awt.Component</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTerminalType()"><!-- --></A><H3>
+getTerminalType</H3>
+<PRE>
+public abstract java.lang.String <B>getTerminalType</B>()</PRE>
+<DL>
+<DD>Return actual terminal type identifier.</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/SoftFont.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../display/vt320.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Terminal.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/TerminalHost.html b/web/root/telnet/Documentation/Source/display/TerminalHost.html
new file mode 100644
index 0000000000000000000000000000000000000000..f44ed18826a46a63b733b32917d4c42db9a526dc
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/TerminalHost.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:33 CEST 1999 -->
+<TITLE>
+: Interface  TerminalHost
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TerminalHost.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+display</FONT>
+<BR>
+Interface  TerminalHost</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../telnet.html">telnet</A>, <A HREF="../display/vt320.html">vt320</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract interface <B>TerminalHost</B></DL>
+
+<P>
+TerminalHost is an interface for the remote (virtual) end of our connection
+ to the host computer we are connected to.
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L Jugel, Marcus Meißner</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/TerminalHost.html#send(java.lang.String)">send</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Send a string to the host and return if it was received successfully.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="send(java.lang.String)"><!-- --></A><H3>
+send</H3>
+<PRE>
+public boolean <B>send</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>Send a string to the host and return if it was received successfully.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>s</CODE> - the string to send<DT><B>Returns:</B><DD>True for successful receivement.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TerminalHost.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/package-frame.html b/web/root/telnet/Documentation/Source/display/package-frame.html
new file mode 100644
index 0000000000000000000000000000000000000000..3197fdeddd0d18e9b406434b0155d325156a39e2
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/package-frame.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Package display
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+<FONT size="+1" ID="FrameTitleFont">
+<A HREF="../display/package-summary.html" TARGET="classFrame">display</A></FONT>
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT ID="FrameItemFont">
+<BR>
+<A HREF="TerminalHost.html" TARGET="classFrame"><I>TerminalHost</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT ID="FrameItemFont">
+<BR>
+<A HREF="CharDisplay.html" TARGET="classFrame">CharDisplay</A>
+<BR>
+<A HREF="SoftFont.html" TARGET="classFrame">SoftFont</A>
+<BR>
+<A HREF="Terminal.html" TARGET="classFrame">Terminal</A>
+<BR>
+<A HREF="vt320.html" TARGET="classFrame">vt320</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/package-summary.html b/web/root/telnet/Documentation/Source/display/package-summary.html
new file mode 100644
index 0000000000000000000000000000000000000000..9ba0b65d51862a58a311fe198115829811e05f50
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/package-summary.html
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Package display
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;<A HREF="../modules/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<H2>
+Package display
+</H2>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="TerminalHost.html"><I>TerminalHost</I></A></B></TD>
+<TD>TerminalHost is an interface for the remote (virtual) end of our connection
+ to the host computer we are connected to.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="CharDisplay.html">CharDisplay</A></B></TD>
+<TD>A simple character display.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="SoftFont.html">SoftFont</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="Terminal.html">Terminal</A></B></TD>
+<TD>Terminal is an abstract emulation class.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="vt320.html">vt320</A></B></TD>
+<TD>A DEC VT320 Terminal Emulation (includes VT100/220 and ANSI).</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV PACKAGE&nbsp;
+&nbsp;<A HREF="../modules/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/package-tree.html b/web/root/telnet/Documentation/Source/display/package-tree.html
new file mode 100644
index 0000000000000000000000000000000000000000..fdec70375e6258c49e965e0a08145ba8407b3603
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/package-tree.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: display Class Hierarchy
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;<A HREF="../modules/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package display
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies: </B><DD><A HREF="../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.awt.Container<UL>
+<LI TYPE="circle">class java.awt.Panel<UL>
+<LI TYPE="circle">class display.<A HREF="../display/CharDisplay.html"><B>CharDisplay</B></A><LI TYPE="circle">class display.<A HREF="../display/Terminal.html"><B>Terminal</B></A><UL>
+<LI TYPE="circle">class display.<A HREF="../display/vt320.html"><B>vt320</B></A> (implements display.<A HREF="../display/TerminalHost.html">TerminalHost</A>)
+</UL>
+</UL>
+</UL>
+</UL>
+<LI TYPE="circle">class display.<A HREF="../display/SoftFont.html"><B>SoftFont</B></A></UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface display.<A HREF="../display/TerminalHost.html"><B>TerminalHost</B></A></UL>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;<A HREF="../modules/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/display/vt320.html b/web/root/telnet/Documentation/Source/display/vt320.html
new file mode 100644
index 0000000000000000000000000000000000000000..5429f89f54b07476213e38fb9ca2795283771b51
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/display/vt320.html
@@ -0,0 +1,842 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:34 CEST 1999 -->
+<TITLE>
+: Class  vt320
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/Terminal.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="vt320.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+display</FONT>
+<BR>
+Class  vt320</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--<A HREF="../display/Terminal.html">display.Terminal</A>
+                          |
+                          +--<B>display.vt320</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>vt320</B><DT>extends <A HREF="../display/Terminal.html">Terminal</A><DT>implements <A HREF="../display/TerminalHost.html">TerminalHost</A></DL>
+
+<P>
+A DEC VT320 Terminal Emulation (includes VT100/220 and ANSI).
+
+ The terminal emulation accesses the applet parameters to configure itself.
+ The following parameters may be set. Default values are written in
+ <I>italics</I> and other possible values are <B>bold</B>.
+ <DL>
+  <DT><TT>&lt;PARAM NAME="Fx" VALUE="<I>functionkeytext</I>"&gt</TT>
+  <DD>Sets the string sent when the function key Fx (x between 1 und 20)
+	is pressed.
+  <DT><TT>&lt;PARAM NAME="VTcolumns" VALUE="<I>80</I>"&gt</TT>
+  <DD>Sets the columns of the terminal initially. If the parameter
+      VTresize is set to <B>screen</B> this may change, else it is fixed.
+  <DT><TT>&lt;PARAM NAME="VTrows" VALUE="<I>24</I>"&gt</TT>
+  <DD>Sets the rows of the terminal initially. If the parameter
+      value of VTresize <B>screen</B> this may change!
+  <DT><TT>&lt;PARAM NAME="VTfont" VALUE="<I>Courier</I>"&gt</TT>
+  <DD>Sets the font to be used for the terminal. It is recommended to
+      use <I>Courier</I> or at least a fixed width font.
+  <DT><TT>&lt;PARAM NAME="VTfontsize" VALUE="<I>14</I>"&gt</TT>
+  <DD>Sets the font size for the terminal. If the parameter
+      value of VTresize is set to <B>font</B> this may change!
+  <DT><TT>&lt;PARAM NAME="VTresize" VALUE="<I>font</I>"&gt</TT>
+  <DD>This parameter determines what the terminal should do if the window
+      is resized. The default setting <I><B>font</B></I> will result in
+      resizing the font until is matches the window best. Other possible
+      values are <B>none</B> or <B>screen</B>. <B>none</B> will let nothing
+      happen and <B>screen</B> will let the display try to change the
+      amount of rows and columns to match the window best.
+  <DT><TT>&lt;PARAM NAME="VTscrollbar" VALUE="<I>false</I>"&gt</TT>
+  <DD>Setting this parameter to <B>true</B> will add a scrollbar west to
+      the terminal. Other possible values include <B>left</B> to put the
+      scrollbar on the left side of the terminal and <B>right</B> to put it
+      explicitely to the right side.
+  <DT><TT>&lt;PARAM NAME="VTid" VALUE="<I>vt320</I>"&gt</TT>
+  <DD>This parameter will override the terminal id <I>vt320</I>. It may
+      be used to determine special terminal abilities of VT Terminals.
+  <DT><TT>&lt;PARAM NAME="VTbuffer" VALUE="<I>xx</I>"&gt</TT>
+  <DD>Initially this parameter is the same as the VTrows parameter. It
+      cannot be less than the amount of rows on the display. It determines
+      the available scrollback buffer.
+  <DT><TT>&lt;PARAM NAME="VTcharset" VALUE="<I>none</I>"&gt</TT>
+  <DD>Setting this parameter to <B>ibm</B> will enable mapping of ibm
+      characters (as used in PC BBS systems) to UNICODE characters. Note
+      that those special characters probably won't show on UNIX systems
+      due to lack in X11 UNICODE support.
+  <DT><TT>&lt;PARAM NAME="VTvms" VALUE="<I>false</I>"&gt</TT>
+  <DD>Setting this parameter to <B>true</B> will change the Backspace key
+      into a delete key, cause the numeric keypad keys to emit VT100
+      codes when Ctrl is pressed, and make other VMS-important keyboard
+      definitions.
+  <DT><TT>&lt;PARAM NAME="F<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+  <DD>Function keys from <I>F1</I> to <I>F20</I> are programmable. You can
+      install any possible string including special characters, such as
+      <TABLE BORDER>
+      <TR><TD><TT>\e</TT></TD><TD>Escape</TD>
+      <TR><TD><TT>\b</TT></TD><TD>Backspace</TD>
+      <TR><TD><TT>\n</TT></TD><TD>Newline</TD>
+      <TR><TD><TT>\r</TT></TD><TD>Return</TD>
+      <TR><TD><TT>\xxxx</TT></TD><TD>Character xxxx (decimal)</TD>
+      </TABLE>
+  <DT><TT>&lt;PARAM NAME="CF<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+  <DD>Function keys (with the Control-key pressed) from <I>CF1</I> to <I>CF20</I> are programmable too.
+  <DT><TT>&lt;PARAM NAME="SF<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+  <DD>Function keys (with the Shift-key pressed) from <I>SF1</I> to <I>SF20</I> are programmable too.
+  <DT><TT>&lt;PARAM NAME="AF<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+  <DD>Function keys (with the Alt-key pressed) from <I>AF1</I> to <I>AF20</I> are programmable too.
+ </DL>
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Mei?ner</DD>
+<DT><B>See Also: </B><DD><A HREF="../serialized-form.html#display.vt320">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#INSERT">INSERT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Insert key.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#KEYCAPS_LOCK">KEYCAPS_LOCK</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#KEYINSERT">KEYINSERT</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#KEYNUM_LOCK">KEYNUM_LOCK</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#KEYPAUSE">KEYPAUSE</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#KEYPRINT_SCREEN">KEYPRINT_SCREEN</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#KEYSCROLL_LOCK">KEYSCROLL_LOCK</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;char[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#unimap">unimap</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../display/vt320.html#vt320()">vt320</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#addNotify()">addNotify</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize terminal.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String[][]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#getParameterInfo()">getParameterInfo</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.awt.Dimension</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#getSize()">getSize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#getTerminalType()">getTerminalType</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#handleEvent(java.awt.Event)">handleEvent</A></B>(java.awt.Event&nbsp;evt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Handle events for the terminal.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;char</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#map_cp850_unicode(char)">map_cp850_unicode</A></B>(char&nbsp;x)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#putChar(char)">putChar</A></B>(char&nbsp;c)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#putChar(char, boolean)">putChar</A></B>(char&nbsp;c,
+        boolean&nbsp;doshowcursor)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#putString(java.lang.String)">putString</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Put String at current cursor position.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#send(java.lang.String)">send</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dummy method to handle input events (String).</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../display/vt320.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the version of the terminal emulation and its display.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocale, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+resize, 
+resize, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="KEYPRINT_SCREEN"><!-- --></A><H3>
+KEYPRINT_SCREEN</H3>
+<PRE>
+public static final int <B>KEYPRINT_SCREEN</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="KEYSCROLL_LOCK"><!-- --></A><H3>
+KEYSCROLL_LOCK</H3>
+<PRE>
+public static final int <B>KEYSCROLL_LOCK</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="KEYCAPS_LOCK"><!-- --></A><H3>
+KEYCAPS_LOCK</H3>
+<PRE>
+public static final int <B>KEYCAPS_LOCK</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="KEYNUM_LOCK"><!-- --></A><H3>
+KEYNUM_LOCK</H3>
+<PRE>
+public static final int <B>KEYNUM_LOCK</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="KEYPAUSE"><!-- --></A><H3>
+KEYPAUSE</H3>
+<PRE>
+public static final int <B>KEYPAUSE</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="KEYINSERT"><!-- --></A><H3>
+KEYINSERT</H3>
+<PRE>
+public static final int <B>KEYINSERT</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="INSERT"><!-- --></A><H3>
+INSERT</H3>
+<PRE>
+public static final int <B>INSERT</B></PRE>
+<DL>
+<DD>The Insert key.</DL>
+<HR>
+
+<A NAME="unimap"><!-- --></A><H3>
+unimap</H3>
+<PRE>
+public static final char[] <B>unimap</B></PRE>
+<DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="vt320()"><!-- --></A><H3>
+vt320</H3>
+<PRE>
+public <B>vt320</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Return the version of the terminal emulation and its display.<DD><DL>
+<DT><B>Overrides:</B><DD>toString in class java.awt.Component</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getParameterInfo()"><!-- --></A><H3>
+getParameterInfo</H3>
+<PRE>
+public java.lang.String[][] <B>getParameterInfo</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><A HREF="../display/Terminal.html#getParameterInfo()">getParameterInfo</A> in class <A HREF="../display/Terminal.html">Terminal</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addNotify()"><!-- --></A><H3>
+addNotify</H3>
+<PRE>
+public void <B>addNotify</B>()</PRE>
+<DL>
+<DD>Initialize terminal.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>parent</CODE> - the applet parent where to get parameters from<DT><B>Overrides:</B><DD>addNotify in class java.awt.Panel<DT><B>See Also: </B><DD><A HREF="../display/Terminal.html"><CODE>Terminal</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSize()"><!-- --></A><H3>
+getSize</H3>
+<PRE>
+public java.awt.Dimension <B>getSize</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><A HREF="../display/Terminal.html#getSize()">getSize</A> in class <A HREF="../display/Terminal.html">Terminal</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getTerminalType()"><!-- --></A><H3>
+getTerminalType</H3>
+<PRE>
+public java.lang.String <B>getTerminalType</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><A HREF="../display/Terminal.html#getTerminalType()">getTerminalType</A> in class <A HREF="../display/Terminal.html">Terminal</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleEvent(java.awt.Event)"><!-- --></A><H3>
+handleEvent</H3>
+<PRE>
+public boolean <B>handleEvent</B>(java.awt.Event&nbsp;evt)</PRE>
+<DL>
+<DD>Handle events for the terminal. Only accept events for the scroll
+ bar. Any other events have to be propagated to the parent.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>evt</CODE> - the event<DT><B>Overrides:</B><DD>handleEvent in class java.awt.Component</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="send(java.lang.String)"><!-- --></A><H3>
+send</H3>
+<PRE>
+public boolean <B>send</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>Dummy method to handle input events (String).
+ This is only needed if our parent is not TerminalHost<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../display/TerminalHost.html#send(java.lang.String)">send</A> in interface <A HREF="../display/TerminalHost.html">TerminalHost</A><DT><B>Parameters:</B><DD><CODE>s</CODE> - String to handle<DT><B>Returns:</B><DD>always true<DT><B>See Also: </B><DD><A HREF="../display/TerminalHost.html"><CODE>TerminalHost</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putString(java.lang.String)"><!-- --></A><H3>
+putString</H3>
+<PRE>
+public void <B>putString</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>Put String at current cursor position. Moves cursor
+ according to the String. Does NOT wrap.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>s</CODE> - the string<DT><B>Overrides:</B><DD><A HREF="../display/Terminal.html#putString(java.lang.String)">putString</A> in class <A HREF="../display/Terminal.html">Terminal</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putChar(char)"><!-- --></A><H3>
+putChar</H3>
+<PRE>
+public void <B>putChar</B>(char&nbsp;c)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD><A HREF="../display/Terminal.html#putChar(char)">putChar</A> in class <A HREF="../display/Terminal.html">Terminal</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="map_cp850_unicode(char)"><!-- --></A><H3>
+map_cp850_unicode</H3>
+<PRE>
+public char <B>map_cp850_unicode</B>(char&nbsp;x)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="putChar(char, boolean)"><!-- --></A><H3>
+putChar</H3>
+<PRE>
+public void <B>putChar</B>(char&nbsp;c,
+                    boolean&nbsp;doshowcursor)</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/Terminal.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="vt320.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/help-doc.html b/web/root/telnet/Documentation/Source/help-doc.html
new file mode 100644
index 0000000000000000000000000000000000000000..dfaccc436dd37febf989cb9dc7de5143aca98c18
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/help-doc.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:37 CEST 1999 -->
+<TITLE>
+: API Help
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<CENTER>
+<H1>
+How This API Document Is Organized</H1>
+</CENTER>
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
+Overview</H3>
+<BLOCKQUOTE>
+
+<P>
+The <A HREF="overview-summary.html">Overview</A> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</BLOCKQUOTE>
+<H3>
+Package</H3>
+<BLOCKQUOTE>
+
+<P>
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
+<LI>Interfaces (italic)<LI>Classes<LI>Exceptions<LI>Errors</UL>
+</BLOCKQUOTE>
+<H3>
+Class/Interface</H3>
+<BLOCKQUOTE>
+
+<P>
+Each class, interface, inner class and inner interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
+<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
+<P>
+<LI>Inner Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
+<P>
+<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
+<H3>
+Tree (Class Hierarchy)</H3>
+<BLOCKQUOTE>
+There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
+<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
+</BLOCKQUOTE>
+<H3>
+Deprecated API</H3>
+<BLOCKQUOTE>
+The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
+<H3>
+Index</H3>
+<BLOCKQUOTE>
+The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
+<H3>
+Prev/Next</H3>
+These links take you to the next or previous class, interface, package, or related page.<H3>
+Frames/No Frames</H3>
+These links show and hide the HTML frames.  All pages are available with or without frames.
+<P>
+<H3>
+Serialized Form</H3>
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+<P>
+<FONT SIZE="-1">
+<EM>
+This help file applies to API documentation generated using the standard doclet. </EM>
+</FONT>
+<BR>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="help-doc.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/images/blue-ball-small.gif b/web/root/telnet/Documentation/Source/images/blue-ball-small.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d4c5cde5b005117d443e595db216e8a212831f75
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/blue-ball-small.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/blue-ball.gif b/web/root/telnet/Documentation/Source/images/blue-ball.gif
new file mode 100644
index 0000000000000000000000000000000000000000..edc29b786ce52736bf9f2a1ac38aaa78b1799e92
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/blue-ball.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/class-index.gif b/web/root/telnet/Documentation/Source/images/class-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7f276bcb242e6136502f60bded36f5326bab534a
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/class-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/constrct.gif b/web/root/telnet/Documentation/Source/images/constrct.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d1a6ae507ca808dd0df7f7cef51fbb3a4aa7050a
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/constrct.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/constructor-index.gif b/web/root/telnet/Documentation/Source/images/constructor-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..435cac42386bbd6537502c2cf4f0e61dbe5bbf67
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/constructor-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/constructors.gif b/web/root/telnet/Documentation/Source/images/constructors.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d1a6ae507ca808dd0df7f7cef51fbb3a4aa7050a
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/constructors.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/cyan-ball-small.gif b/web/root/telnet/Documentation/Source/images/cyan-ball-small.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7f74357443af1e4323a2e6597c59a2e8a508b149
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/cyan-ball-small.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/cyan-ball.gif b/web/root/telnet/Documentation/Source/images/cyan-ball.gif
new file mode 100644
index 0000000000000000000000000000000000000000..97ca1f2b6e3956db2a34dea63b25bf308fa0085c
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/cyan-ball.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/error-index.gif b/web/root/telnet/Documentation/Source/images/error-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..22835ff8c64d5af8369f589cf17819263a8e8fbc
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/error-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/exception-index.gif b/web/root/telnet/Documentation/Source/images/exception-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e3830d9c52e7899bb62b56f56f71ba304108ed83
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/exception-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/field_ix.gif b/web/root/telnet/Documentation/Source/images/field_ix.gif
new file mode 100644
index 0000000000000000000000000000000000000000..304ce7d59a25edb878a96399ebcdd77cd9d3a0c8
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/field_ix.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/fields.gif b/web/root/telnet/Documentation/Source/images/fields.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6e2a42d940e367265e076bba834884a633461d3c
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/fields.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/green-ball-small.gif b/web/root/telnet/Documentation/Source/images/green-ball-small.gif
new file mode 100644
index 0000000000000000000000000000000000000000..17fea5b32bb808c030865d16d4640a1598e6b76d
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/green-ball-small.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/green-ball.gif b/web/root/telnet/Documentation/Source/images/green-ball.gif
new file mode 100644
index 0000000000000000000000000000000000000000..71e1b2ec2db92415bf28bc917b772ab874000d31
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/green-ball.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/interface-index.gif b/web/root/telnet/Documentation/Source/images/interface-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bf93dda9e3536f9bd1129ff3008d6ca8e998dceb
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/interface-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/magenta-ball-small.gif b/web/root/telnet/Documentation/Source/images/magenta-ball-small.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bd0584b3c6751baf523dbb07d856bd5443a23a20
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/magenta-ball-small.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/magenta-ball.gif b/web/root/telnet/Documentation/Source/images/magenta-ball.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5da03b84d2bf772dd396adf1be8a53e7c46ec54b
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/magenta-ball.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/method-index.gif b/web/root/telnet/Documentation/Source/images/method-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a05e7051160fc7b579abde9ea02e0af9d796cb8e
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/method-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/methods.gif b/web/root/telnet/Documentation/Source/images/methods.gif
new file mode 100644
index 0000000000000000000000000000000000000000..949e01b8a33818bf52b2d124a504967d0d75e954
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/methods.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/package-index.gif b/web/root/telnet/Documentation/Source/images/package-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f894d4210d743ad9a4f0736159ef226279508dc1
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/package-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/red-ball-small.gif b/web/root/telnet/Documentation/Source/images/red-ball-small.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f6b3c372ca1e7e70f805981b93c6cd678570e993
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/red-ball-small.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/red-ball.gif b/web/root/telnet/Documentation/Source/images/red-ball.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dca92960148cb3751f9b2de8cf96f26293c15888
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/red-ball.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/variable-index.gif b/web/root/telnet/Documentation/Source/images/variable-index.gif
new file mode 100644
index 0000000000000000000000000000000000000000..65cc029e722f8cc8d4663328fe955faab8455982
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/variable-index.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/variables.gif b/web/root/telnet/Documentation/Source/images/variables.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6e2a42d940e367265e076bba834884a633461d3c
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/variables.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/yellow-ball-small.gif b/web/root/telnet/Documentation/Source/images/yellow-ball-small.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8e5f57cdfcbfbd4ccd3504bdae10cbc9215ef8ca
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/yellow-ball-small.gif differ
diff --git a/web/root/telnet/Documentation/Source/images/yellow-ball.gif b/web/root/telnet/Documentation/Source/images/yellow-ball.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b8c0bb3d6baad5fdb28a878b33c265daeafe9d4
Binary files /dev/null and b/web/root/telnet/Documentation/Source/images/yellow-ball.gif differ
diff --git a/web/root/telnet/Documentation/Source/index-all.html b/web/root/telnet/Documentation/Source/index-all.html
new file mode 100644
index 0000000000000000000000000000000000000000..7986cb5770aeb352781ffb9f8c9e1256dd51223c
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/index-all.html
@@ -0,0 +1,801 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:31 CEST 1999 -->
+<TITLE>
+: Index
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<A HREF="#_A_">A</A> <A HREF="#_B_">B</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_F_">F</A> <A HREF="#_G_">G</A> <A HREF="#_H_">H</A> <A HREF="#_I_">I</A> <A HREF="#_K_">K</A> <A HREF="#_L_">L</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> <A HREF="#_W_">W</A> <HR>
+<A NAME="_A_"><!-- --></A><H2>
+<B>A</B></H2>
+<DL>
+<DT><A HREF="display/vt320.html#addNotify()"><B>addNotify()</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>Initialize terminal.
+<DT><A HREF="modules/BSXModule.html#addNotify()"><B>addNotify()</B></A> - 
+Method in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>Adds two Buttons to the Panel and instanciates a BSXWindow.
+<DT><A HREF="modules/MudConnector.html#addNotify()"><B>addNotify()</B></A> - 
+Method in class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>when newly added try to load the mudlist using the parameter "mudlist"
+<DT><A HREF="modules/ButtonBar.html#addNotify()"><B>addNotify()</B></A> - 
+Method in class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>
+<DD>create the buttonbar from the parameter list.
+<DT><A HREF="telnet.html#address"><B>address</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>The host address to connect to.
+<DT><A HREF="appWrapper.html#appletResize(int, int)"><B>appletResize(int, int)</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>This method is called when the applet want's to be resized.
+<DT><A HREF="appWrapper.html"><B>appWrapper</B></A> - class <A HREF="appWrapper.html">appWrapper</A>.<DD>The appWrapper is thought to make the applet itself independent from
+ the original context.<DT><A HREF="appWrapper.html#appWrapper()"><B>appWrapper()</B></A> - 
+Constructor for class <A HREF="appWrapper.html">appWrapper</A>
+<DD>&nbsp;
+<DT><A HREF="socket/TelnetWrapper.html#available()"><B>available()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Returns bytes available to be read.
+<DT><A HREF="socket/TelnetIO.html#available()"><B>available()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Returns bytes available to be read.
+</DL>
+<HR>
+<A NAME="_B_"><!-- --></A><H2>
+<B>B</B></H2>
+<DL>
+<DT><A HREF="display/CharDisplay.html#BOLD"><B>BOLD</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Make character bold.
+<DT><A HREF="modules/BSXModule.html"><B>BSXModule</B></A> - class modules.<A HREF="modules/BSXModule.html">BSXModule</A>.<DD>The ultimate BSX module implements most of the common used
+ BSX controll sequences.<DT><A HREF="modules/BSXModule.html#BSXModule()"><B>BSXModule()</B></A> - 
+Constructor for class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>&nbsp;
+<DT><A HREF="modules/ButtonBar.html"><B>ButtonBar</B></A> - class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>.<DD>This class implements a programmable button bar.<DT><A HREF="modules/ButtonBar.html#ButtonBar()"><B>ButtonBar()</B></A> - 
+Constructor for class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_C_"><!-- --></A><H2>
+<B>C</B></H2>
+<DL>
+<DT><A HREF="display/CharDisplay.html"><B>CharDisplay</B></A> - class display.<A HREF="display/CharDisplay.html">CharDisplay</A>.<DD>A simple character display.<DT><A HREF="display/CharDisplay.html#CharDisplay()"><B>CharDisplay()</B></A> - 
+Constructor for class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Create a character display with size 80x24 and Font "Courier", size 12.
+<DT><A HREF="display/CharDisplay.html#CharDisplay(int, int)"><B>CharDisplay(int, int)</B></A> - 
+Constructor for class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Create a character display with specific size, Font is "Courier", size 12.
+<DT><A HREF="display/CharDisplay.html#CharDisplay(int, int, java.lang.String, int)"><B>CharDisplay(int, int, String, int)</B></A> - 
+Constructor for class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Create a character display with specific size, font and font size.
+<DT><A HREF="display/CharDisplay.html#CharDisplay(java.lang.String, int)"><B>CharDisplay(String, int)</B></A> - 
+Constructor for class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Create a character display with 80x24 and specific font and font size.
+<DT><A HREF="CharDisplayTest.html"><B>CharDisplayTest</B></A> - class <A HREF="CharDisplayTest.html">CharDisplayTest</A>.<DD>CharDisplayTest -- a test applet to show the display/CharDisplay features
+ --<DT><A HREF="CharDisplayTest.html#CharDisplayTest()"><B>CharDisplayTest()</B></A> - 
+Constructor for class <A HREF="CharDisplayTest.html">CharDisplayTest</A>
+<DD>&nbsp;
+<DT><A HREF="modules/BSXModule.html#clientVersion"><B>clientVersion</B></A> - 
+Variable in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>Client Version
+<DT><A HREF="telnet.html#connect()"><B>connect()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Connect to the specified host and port but don't break existing 
+ connections.
+<DT><A HREF="telnet.html#connect(java.lang.String)"><B>connect(String)</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Connect to the specified host and port but don't break existing 
+ connections.
+<DT><A HREF="socket/TelnetIO.html#connect(java.lang.String)"><B>connect(String)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Connect to the remote host at the default telnet port (23).
+<DT><A HREF="telnet.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Connect to the specified host and port but don't break existing 
+ connections.
+<DT><A HREF="socket/TelnetIO.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Connect to the remote host at the specified port.
+<DT><A HREF="modules/BSXModule.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>do nothing
+<DT><A HREF="modules/Module.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in interface modules.<A HREF="modules/Module.html">Module</A>
+<DD>Connected to the remote host.
+<DT><A HREF="modules/TextLabel.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in class modules.<A HREF="modules/TextLabel.html">TextLabel</A>
+<DD>Do nothing upon connect.
+<DT><A HREF="modules/MudConnector.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>dummy methods
+<DT><A HREF="modules/Script.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in class modules.<A HREF="modules/Script.html">Script</A>
+<DD>Configure the script module by reading the script PARAMeter.
+<DT><A HREF="modules/ButtonBar.html#connect(java.lang.String, int)"><B>connect(String, int)</B></A> - 
+Method in class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>
+<DD>If the applet connects this method is called.
+</DL>
+<HR>
+<A NAME="_D_"><!-- --></A><H2>
+<B>D</B></H2>
+<DL>
+<DT><A HREF="display/CharDisplay.html#debug"><B>debug</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Enable debug messages.
+<DT><A HREF="socket/TelnetWrapper.html#debug"><B>debug</B></A> - 
+Variable in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Set to true for System.out.println debugging.
+<DT><A HREF="display/CharDisplay.html#deleteArea(int, int, int, int)"><B>deleteArea(int, int, int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Delete a rectangular portion of the screen.
+<DT><A HREF="display/CharDisplay.html#deleteChar(int, int)"><B>deleteChar(int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Delete a character at a given position on the screen.
+<DT><A HREF="display/CharDisplay.html#deleteLine(int)"><B>deleteLine(int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Delete a line at a specific position.
+<DT><A HREF="telnet.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Disconnect from the remote host.
+<DT><A HREF="socket/TelnetWrapper.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Ends the telnet connection.
+<DT><A HREF="socket/TelnetIO.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Disconnect from remote host.
+<DT><A HREF="modules/BSXModule.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>do nothing
+<DT><A HREF="modules/Module.html#disconnect()"><B>disconnect()</B></A> - 
+Method in interface modules.<A HREF="modules/Module.html">Module</A>
+<DD>Disconnect from the host.
+<DT><A HREF="modules/TextLabel.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class modules.<A HREF="modules/TextLabel.html">TextLabel</A>
+<DD>Do nothing upon disconnecton.
+<DT><A HREF="modules/MudConnector.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>&nbsp;
+<DT><A HREF="modules/Script.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class modules.<A HREF="modules/Script.html">Script</A>
+<DD>Get notified of disconnection.
+<DT><A HREF="modules/ButtonBar.html#disconnect()"><B>disconnect()</B></A> - 
+Method in class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>
+<DD>Get notified of disconnection.
+<DT><A HREF="display/package-summary.html">display</A> - package display<DD>&nbsp;<DT><A HREF="display/SoftFont.html#drawChar(java.awt.Graphics, char, int, int, int, int)"><B>drawChar(Graphics, char, int, int, int, int)</B></A> - 
+Method in class display.<A HREF="display/SoftFont.html">SoftFont</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_E_"><!-- --></A><H2>
+<B>E</B></H2>
+<DL>
+<DT><A HREF="telnet.html#emulation"><B>emulation</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>Emulation type (default is vt320).
+</DL>
+<HR>
+<A NAME="_F_"><!-- --></A><H2>
+<B>F</B></H2>
+<DL>
+<DT><A HREF="socket/TelnetWrapper.html#finalize()"><B>finalize()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Ends the telnet connection.
+</DL>
+<HR>
+<A NAME="_G_"><!-- --></A><H2>
+<B>G</B></H2>
+<DL>
+<DT><A HREF="telnet.html#getAppletInfo()"><B>getAppletInfo()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Retrieve the current version of the applet.
+<DT><A HREF="appWrapper.html#getAppletInfo()"><B>getAppletInfo()</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>Give information about the applet.
+<DT><A HREF="display/CharDisplay.html#getAttributes(int, int)"><B>getAttributes(int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get the attributes for the specified position.
+<DT><A HREF="display/CharDisplay.html#getBottomMargin()"><B>getBottomMargin()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get the bottom scroll margin.
+<DT><A HREF="display/CharDisplay.html#getBufferSize()"><B>getBufferSize()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Retrieve current scrollback buffer size.
+<DT><A HREF="display/CharDisplay.html#getChar(int, int)"><B>getChar(int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get the character at the specified position.
+<DT><A HREF="display/CharDisplay.html#getColumns()"><B>getColumns()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get amount of columns on the screen.
+<DT><A HREF="display/CharDisplay.html#getCursorPos()"><B>getCursorPos()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get the current cursor position.
+<DT><A HREF="display/CharDisplay.html#getMaxBufferSize()"><B>getMaxBufferSize()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Retrieve maximum buffer Size.
+<DT><A HREF="telnet.html#getParameter(java.lang.String)"><B>getParameter(String)</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>We override the Applet method getParameter() to be able to handle 
+ parameters even as application.
+<DT><A HREF="telnet.html#getParameterInfo()"><B>getParameterInfo()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Retrieve parameter tag information.
+<DT><A HREF="appWrapper.html#getParameterInfo()"><B>getParameterInfo()</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>Give information about the appWrapper and the applet loaded.
+<DT><A HREF="display/Terminal.html#getParameterInfo()"><B>getParameterInfo()</B></A> - 
+Method in class display.<A HREF="display/Terminal.html">Terminal</A>
+<DD>Get the specific parameter info for the emulation.
+<DT><A HREF="display/vt320.html#getParameterInfo()"><B>getParameterInfo()</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/CharDisplay.html#getRows()"><B>getRows()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get amount of rows on the screen.
+<DT><A HREF="display/Terminal.html#getSize()"><B>getSize()</B></A> - 
+Method in class display.<A HREF="display/Terminal.html">Terminal</A>
+<DD>Return the current size of the terminal in characters.
+<DT><A HREF="display/vt320.html#getSize()"><B>getSize()</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/Terminal.html#getTerminalType()"><B>getTerminalType()</B></A> - 
+Method in class display.<A HREF="display/Terminal.html">Terminal</A>
+<DD>Return actual terminal type identifier.
+<DT><A HREF="display/vt320.html#getTerminalType()"><B>getTerminalType()</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/CharDisplay.html#getTopMargin()"><B>getTopMargin()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get the top scroll margin.
+<DT><A HREF="display/CharDisplay.html#getWindowBase()"><B>getWindowBase()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Get the current window base.
+</DL>
+<HR>
+<A NAME="_H_"><!-- --></A><H2>
+<B>H</B></H2>
+<DL>
+<DT><A HREF="appWrapper.html#handleEvent(java.awt.Event)"><B>handleEvent(Event)</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>Handle button events.
+<DT><A HREF="CharDisplayTest.html#handleEvent(java.awt.Event)"><B>handleEvent(Event)</B></A> - 
+Method in class <A HREF="CharDisplayTest.html">CharDisplayTest</A>
+<DD>&nbsp;
+<DT><A HREF="display/CharDisplay.html#handleEvent(java.awt.Event)"><B>handleEvent(Event)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Handle mouse events for copy & paste
+<DT><A HREF="display/vt320.html#handleEvent(java.awt.Event)"><B>handleEvent(Event)</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>Handle events for the terminal.
+<DT><A HREF="modules/BSXModule.html#handleEvent(java.awt.Event)"><B>handleEvent(Event)</B></A> - 
+Method in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>Java 1.0 eventhandling routines.
+<DT><A HREF="modules/MudConnector.html#handleEvent(java.awt.Event)"><B>handleEvent(Event)</B></A> - 
+Method in class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>handle list selection, connect, disconnect and refresh button
+<DT><A HREF="modules/ButtonBar.html#handleEvent(java.awt.Event)"><B>handleEvent(Event)</B></A> - 
+Method in class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_I_"><!-- --></A><H2>
+<B>I</B></H2>
+<DL>
+<DT><A HREF="telnet.html#init()"><B>init()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Initialize applet.
+<DT><A HREF="appWrapper.html#init()"><B>init()</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>Applet initialization.
+<DT><A HREF="CharDisplayTest.html#init()"><B>init()</B></A> - 
+Method in class <A HREF="CharDisplayTest.html">CharDisplayTest</A>
+<DD>&nbsp;
+<DT><A HREF="display/vt320.html#INSERT"><B>INSERT</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>The Insert key.
+<DT><A HREF="display/CharDisplay.html#insertChar(int, int, char, int)"><B>insertChar(int, int, char, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Insert a character at a specific position on the screen.
+<DT><A HREF="display/CharDisplay.html#insertLine(int)"><B>insertLine(int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Insert a blank line at a specific position.
+<DT><A HREF="display/CharDisplay.html#insertLine(int, boolean)"><B>insertLine(int, boolean)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Insert a blank line at a specific position.
+<DT><A HREF="display/CharDisplay.html#insertLine(int, int)"><B>insertLine(int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Insert blank lines at a specific position.
+<DT><A HREF="display/CharDisplay.html#insertLine(int, int, boolean)"><B>insertLine(int, int, boolean)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Insert blank lines at a specific position.
+<DT><A HREF="display/CharDisplay.html#insets()"><B>insets()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>The insets of the character display define the border.
+<DT><A HREF="display/SoftFont.html#inSoftFont(char)"><B>inSoftFont(char)</B></A> - 
+Method in class display.<A HREF="display/SoftFont.html">SoftFont</A>
+<DD>&nbsp;
+<DT><A HREF="display/CharDisplay.html#INVERT"><B>INVERT</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Invert character.
+</DL>
+<HR>
+<A NAME="_K_"><!-- --></A><H2>
+<B>K</B></H2>
+<DL>
+<DT><A HREF="display/vt320.html#KEYCAPS_LOCK"><B>KEYCAPS_LOCK</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/vt320.html#KEYINSERT"><B>KEYINSERT</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/vt320.html#KEYNUM_LOCK"><B>KEYNUM_LOCK</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/vt320.html#KEYPAUSE"><B>KEYPAUSE</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/vt320.html#KEYPRINT_SCREEN"><B>KEYPRINT_SCREEN</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/vt320.html#KEYSCROLL_LOCK"><B>KEYSCROLL_LOCK</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_L_"><!-- --></A><H2>
+<B>L</B></H2>
+<DL>
+<DT><A HREF="socket/TelnetWrapper.html#login(java.lang.String, java.lang.String)"><B>login(String, String)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Logs in as a particular user and password.
+</DL>
+<HR>
+<A NAME="_M_"><!-- --></A><H2>
+<B>M</B></H2>
+<DL>
+<DT><A HREF="telnet.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
+Static method in class <A HREF="telnet.html">telnet</A>
+<DD>The main function is called on startup of the application.
+<DT><A HREF="proxy.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
+Static method in class <A HREF="proxy.html">proxy</A>
+<DD>This method is called when the application is run on the commandline.
+<DT><A HREF="socket/TelnetWrapper.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
+Static method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Telnet test driver.
+<DT><A HREF="modules/BSXModule.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
+Static method in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>a main for test-purposes
+<DT><A HREF="display/vt320.html#map_cp850_unicode(char)"><B>map_cp850_unicode(char)</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/CharDisplay.html#markLine(int, int)"><B>markLine(int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Mark lines to be updated with redraw().
+<DT><A HREF="modules/Module.html"><B>Module</B></A> - interface modules.<A HREF="modules/Module.html">Module</A>.<DD>Modules must implement this interface to be detected as valid modules<DT><A HREF="modules/package-summary.html">modules</A> - package modules<DD>&nbsp;<DT><A HREF="telnet.html#modules"><B>modules</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>Dynamically loaded modules are stored here.
+<DT><A HREF="modules/MudConnector.html"><B>MudConnector</B></A> - class modules.<A HREF="modules/MudConnector.html">MudConnector</A>.<DD>A specially designed module for the 
+ <A HREF="http://www.mudconnect.com/">MUD Connector</A>.<DT><A HREF="modules/MudConnector.html#MudConnector()"><B>MudConnector()</B></A> - 
+Constructor for class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_N_"><!-- --></A><H2>
+<B>N</B></H2>
+<DL>
+<DT><A HREF="display/CharDisplay.html#NORMAL"><B>NORMAL</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Make character normal.
+<DT><A HREF="display/CharDisplay.html#notbold(java.awt.Color)"><B>notbold(Color)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>&nbsp;
+<DT><A HREF="telnet.html#notifyStatus(java.util.Vector)"><B>notifyStatus(Vector)</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>This method is called when telnet needs to be notified of status changes.
+<DT><A HREF="socket/TelnetIO.html#notifyStatus(java.util.Vector)"><B>notifyStatus(Vector)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Notify about current telnet status.
+<DT><A HREF="socket/StatusPeer.html#notifyStatus(java.util.Vector)"><B>notifyStatus(Vector)</B></A> - 
+Method in interface socket.<A HREF="socket/StatusPeer.html">StatusPeer</A>
+<DD>This method is called for the peer of the TelnetIO class if there is
+ a statuschange.
+</DL>
+<HR>
+<A NAME="_P_"><!-- --></A><H2>
+<B>P</B></H2>
+<DL>
+<DT><A HREF="appWrapper.html#paint(java.awt.Graphics)"><B>paint(Graphics)</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>Write a message to the applet area.
+<DT><A HREF="display/CharDisplay.html#paint(java.awt.Graphics)"><B>paint(Graphics)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Paint the current screen.
+<DT><A HREF="telnet.html#params"><B>params</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>This Hashtable contains information retrievable by getParameter() in case
+ the program is run as an application and the AppletStub is missing.
+<DT><A HREF="telnet.html#port"><B>port</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>The port number (default ist 23).
+<DT><A HREF="display/CharDisplay.html#preferredSize()"><B>preferredSize()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Return the preferred Size of the character display.
+<DT><A HREF="proxy.html"><B>proxy</B></A> - class <A HREF="proxy.html">proxy</A>.<DD>proxy class -- implements a proxy server to redirect network access<DT><A HREF="telnet.html#proxy"><B>proxy</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>The proxy ip address.
+<DT><A HREF="proxy.html#proxy(int, java.lang.String, int)"><B>proxy(int, String, int)</B></A> - 
+Constructor for class <A HREF="proxy.html">proxy</A>
+<DD>Create a server socket and start listening on the local port.
+<DT><A HREF="telnet.html#proxyport"><B>proxyport</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>The proxy port number.
+<DT><A HREF="display/Terminal.html#putChar(char)"><B>putChar(char)</B></A> - 
+Method in class display.<A HREF="display/Terminal.html">Terminal</A>
+<DD>Put a character on the screen.
+<DT><A HREF="display/vt320.html#putChar(char)"><B>putChar(char)</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/vt320.html#putChar(char, boolean)"><B>putChar(char, boolean)</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="display/CharDisplay.html#putChar(int, int, char)"><B>putChar(int, int, char)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Put a character on the screen with normal font and outline.
+<DT><A HREF="display/CharDisplay.html#putChar(int, int, char, int)"><B>putChar(int, int, char, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Put a character on the screen with specific font and outline.
+<DT><A HREF="display/CharDisplay.html#putString(int, int, java.lang.String)"><B>putString(int, int, String)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Put a String at a specific position.
+<DT><A HREF="display/CharDisplay.html#putString(int, int, java.lang.String, int)"><B>putString(int, int, String, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Put a String at a specific position giving all characters the same
+ attributes.
+<DT><A HREF="display/Terminal.html#putString(java.lang.String)"><B>putString(String)</B></A> - 
+Method in class display.<A HREF="display/Terminal.html">Terminal</A>
+<DD>Put a character on the screen.
+<DT><A HREF="display/vt320.html#putString(java.lang.String)"><B>putString(String)</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>Put String at current cursor position.
+</DL>
+<HR>
+<A NAME="_R_"><!-- --></A><H2>
+<B>R</B></H2>
+<DL>
+<DT><A HREF="socket/TelnetWrapper.html#receive()"><B>receive()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Returns a String from the telnet connection.
+<DT><A HREF="socket/TelnetIO.html#receive()"><B>receive()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Read data from the remote host.
+<DT><A HREF="modules/BSXModule.html#receive(java.lang.String)"><B>receive(String)</B></A> - 
+Method in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>This method is called by the telnet, so that we can parse the String.
+<DT><A HREF="modules/Module.html#receive(java.lang.String)"><B>receive(String)</B></A> - 
+Method in interface modules.<A HREF="modules/Module.html">Module</A>
+<DD>Receive data from somewhere.
+<DT><A HREF="modules/TextLabel.html#receive(java.lang.String)"><B>receive(String)</B></A> - 
+Method in class modules.<A HREF="modules/TextLabel.html">TextLabel</A>
+<DD>Do nothing when receiving text.
+<DT><A HREF="modules/MudConnector.html#receive(java.lang.String)"><B>receive(String)</B></A> - 
+Method in class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>&nbsp;
+<DT><A HREF="modules/Script.html#receive(java.lang.String)"><B>receive(String)</B></A> - 
+Method in class modules.<A HREF="modules/Script.html">Script</A>
+<DD>This method is called when data is received.
+<DT><A HREF="modules/ButtonBar.html#receive(java.lang.String)"><B>receive(String)</B></A> - 
+Method in class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>
+<DD>This module does not take any input.
+<DT><A HREF="socket/TelnetWrapper.html#receiveBytes()"><B>receiveBytes()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Returns a byte array.
+<DT><A HREF="socket/TelnetWrapper.html#receiveUntil(java.lang.String)"><B>receiveUntil(String)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Returns all data received up until a certain token.
+<DT><A HREF="socket/TelnetWrapper.html#receiveUntil(java.lang.String, long)"><B>receiveUntil(String, long)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Returns all data received up until a certain token.
+<DT><A HREF="display/CharDisplay.html#redraw()"><B>redraw()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Redraw marked lines.
+<DT><A HREF="appWrapper.html#reshape(int, int, int, int)"><B>reshape(int, int, int, int)</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>reshape the applet and ourself
+<DT><A HREF="display/CharDisplay.html#reshape(int, int, int, int)"><B>reshape(int, int, int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Reshape character display according to resize strategy.
+<DT><A HREF="display/CharDisplay.html#RESIZE_FONT"><B>RESIZE_FONT</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Resize the font to the new screensize.
+<DT><A HREF="display/CharDisplay.html#RESIZE_NONE"><B>RESIZE_NONE</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Do nothing when the container is resized.
+<DT><A HREF="display/CharDisplay.html#RESIZE_SCREEN"><B>RESIZE_SCREEN</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Resize the width and height of the characterscreen.
+<DT><A HREF="telnet.html#run()"><B>run()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Try to read data from the sockets and put it on the terminal.
+<DT><A HREF="appWrapper.html#run()"><B>run()</B></A> - 
+Method in class <A HREF="appWrapper.html">appWrapper</A>
+<DD>Load the applet finally.
+<DT><A HREF="proxy.html#run()"><B>run()</B></A> - 
+Method in class <A HREF="proxy.html">proxy</A>
+<DD>Cycle around until an error occurs and wait for incoming connections.
+<DT><A HREF="modules/MudConnector.html#run()"><B>run()</B></A> - 
+Method in class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>The body of the thread opens a URLConnection with the address given as
+ parameter "mudlist" and downloads it.
+</DL>
+<HR>
+<A NAME="_S_"><!-- --></A><H2>
+<B>S</B></H2>
+<DL>
+<DT><A HREF="modules/Script.html"><B>Script</B></A> - class modules.<A HREF="modules/Script.html">Script</A>.<DD>A very simple scripting module.<DT><A HREF="modules/Script.html#Script()"><B>Script()</B></A> - 
+Constructor for class modules.<A HREF="modules/Script.html">Script</A>
+<DD>&nbsp;
+<DT><A HREF="display/CharDisplay.html#SCROLL_DOWN"><B>SCROLL_DOWN</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Scroll down when inserting a line.
+<DT><A HREF="display/CharDisplay.html#SCROLL_UP"><B>SCROLL_UP</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Scroll up when inserting a line.
+<DT><A HREF="socket/TelnetIO.html#send(byte)"><B>send(byte)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>&nbsp;
+<DT><A HREF="socket/TelnetWrapper.html#send(byte[])"><B>send(byte[])</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Sends bytes over the telnet connection.
+<DT><A HREF="socket/TelnetIO.html#send(byte[])"><B>send(byte[])</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Send data to the remote host.
+<DT><A HREF="telnet.html#send(java.lang.String)"><B>send(String)</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Send a String to the remote host.
+<DT><A HREF="display/TerminalHost.html#send(java.lang.String)"><B>send(String)</B></A> - 
+Method in interface display.<A HREF="display/TerminalHost.html">TerminalHost</A>
+<DD>Send a string to the host and return if it was received successfully.
+<DT><A HREF="display/vt320.html#send(java.lang.String)"><B>send(String)</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>Dummy method to handle input events (String).
+<DT><A HREF="socket/TelnetWrapper.html#send(java.lang.String)"><B>send(String)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Sends a String to the remote host.
+<DT><A HREF="socket/TelnetWrapper.html#sendLine(java.lang.String)"><B>sendLine(String)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Sends a line to the remote host, returns all data before the prompt.
+<DT><A HREF="display/CharDisplay.html#setBorder(int, boolean)"><B>setBorder(int, boolean)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Set the border thickness and the border type.
+<DT><A HREF="display/CharDisplay.html#setBottomMargin(int)"><B>setBottomMargin(int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Set the bottom scroll margin for the screen.
+<DT><A HREF="display/CharDisplay.html#setBufferSize(int)"><B>setBufferSize(int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Set scrollback buffer size.
+<DT><A HREF="display/CharDisplay.html#setCursorPos(int, int)"><B>setCursorPos(int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Puts the cursor at the specified position.
+<DT><A HREF="socket/TelnetWrapper.html#setDefaultPrompt(java.lang.String)"><B>setDefaultPrompt(String)</B></A> - 
+Static method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Sets the default prompt used by all TelnetWrappers.
+<DT><A HREF="modules/BSXModule.html#setLoader(java.lang.Object)"><B>setLoader(Object)</B></A> - 
+Method in class modules.<A HREF="modules/BSXModule.html">BSXModule</A>
+<DD>register o as our parent
+<DT><A HREF="modules/Module.html#setLoader(java.lang.Object)"><B>setLoader(Object)</B></A> - 
+Method in interface modules.<A HREF="modules/Module.html">Module</A>
+<DD>Set the loader of the module.
+<DT><A HREF="modules/TextLabel.html#setLoader(java.lang.Object)"><B>setLoader(Object)</B></A> - 
+Method in class modules.<A HREF="modules/TextLabel.html">TextLabel</A>
+<DD>Set the applet as module loader and configure.
+<DT><A HREF="modules/MudConnector.html#setLoader(java.lang.Object)"><B>setLoader(Object)</B></A> - 
+Method in class modules.<A HREF="modules/MudConnector.html">MudConnector</A>
+<DD>setLoader() is called upon start of the parent applet.
+<DT><A HREF="modules/Script.html#setLoader(java.lang.Object)"><B>setLoader(Object)</B></A> - 
+Method in class modules.<A HREF="modules/Script.html">Script</A>
+<DD>Set the applet as module loader
+<DT><A HREF="modules/ButtonBar.html#setLoader(java.lang.Object)"><B>setLoader(Object)</B></A> - 
+Method in class modules.<A HREF="modules/ButtonBar.html">ButtonBar</A>
+<DD>This method is called by our loader to notify us of it.
+<DT><A HREF="socket/TelnetWrapper.html#setLogin(java.lang.String, java.lang.String)"><B>setLogin(String, String)</B></A> - 
+Static method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Sets the default login used by TelnetWrappers.
+<DT><A HREF="socket/TelnetIO.html#setPeer(socket.StatusPeer)"><B>setPeer(StatusPeer)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Set the object to be notified about current status.
+<DT><A HREF="socket/TelnetWrapper.html#setPrompt(java.lang.String)"><B>setPrompt(String)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Sets the expected prompt.
+<DT><A HREF="display/CharDisplay.html#setResizeStrategy(int)"><B>setResizeStrategy(int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Set the strategy when window is resized.
+<DT><A HREF="display/CharDisplay.html#setScrollbar(java.lang.String)"><B>setScrollbar(String)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Set the scrollbar position.
+<DT><A HREF="display/CharDisplay.html#setTopMargin(int)"><B>setTopMargin(int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Set the top scroll margin for the screen.
+<DT><A HREF="display/CharDisplay.html#setWindowBase(int)"><B>setWindowBase(int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Set the current window base.
+<DT><A HREF="display/CharDisplay.html#setWindowSize(int, int)"><B>setWindowSize(int, int)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Change the size of the screen.
+<DT><A HREF="display/CharDisplay.html#size()"><B>size()</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Return the real size in points of the character display.
+<DT><A HREF="socket/package-summary.html">socket</A> - package socket<DD>&nbsp;<DT><A HREF="display/SoftFont.html"><B>SoftFont</B></A> - class display.<A HREF="display/SoftFont.html">SoftFont</A>.<DD>&nbsp;<DT><A HREF="display/SoftFont.html#SoftFont()"><B>SoftFont()</B></A> - 
+Constructor for class display.<A HREF="display/SoftFont.html">SoftFont</A>
+<DD>&nbsp;
+<DT><A HREF="telnet.html#start()"><B>start()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Upon start of the applet try to create a new connection.
+<DT><A HREF="socket/StatusPeer.html"><B>StatusPeer</B></A> - interface socket.<A HREF="socket/StatusPeer.html">StatusPeer</A>.<DD>StatusPeer -- interface for status messages
+ --<DT><A HREF="telnet.html#stop()"><B>stop()</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Disconnect when the applet is stopped.
+</DL>
+<HR>
+<A NAME="_T_"><!-- --></A><H2>
+<B>T</B></H2>
+<DL>
+<DT><A HREF="telnet.html"><B>telnet</B></A> - class <A HREF="telnet.html">telnet</A>.<DD>A telnet implementation that supports different terminal emulations.<DT><A HREF="telnet.html#telnet()"><B>telnet()</B></A> - 
+Constructor for class <A HREF="telnet.html">telnet</A>
+<DD>&nbsp;
+<DT><A HREF="socket/TelnetIO.html"><B>TelnetIO</B></A> - class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>.<DD>Implements simple telnet io<DT><A HREF="socket/TelnetIO.html#TelnetIO()"><B>TelnetIO()</B></A> - 
+Constructor for class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>&nbsp;
+<DT><A HREF="socket/TelnetWrapper.html"><B>TelnetWrapper</B></A> - class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>.<DD>Wrapper for a Java Telnet call.<DT><A HREF="socket/TelnetWrapper.html#TelnetWrapper(java.lang.String)"><B>TelnetWrapper(String)</B></A> - 
+Constructor for class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Connects to the default telnet port on the given host.
+<DT><A HREF="socket/TelnetWrapper.html#TelnetWrapper(java.lang.String, int)"><B>TelnetWrapper(String, int)</B></A> - 
+Constructor for class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Connects to a specific telnet port on the given host.
+<DT><A HREF="telnet.html#term"><B>term</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>The terminal emulation (dynamically loaded).
+<DT><A HREF="display/Terminal.html"><B>Terminal</B></A> - class display.<A HREF="display/Terminal.html">Terminal</A>.<DD>Terminal is an abstract emulation class.<DT><A HREF="display/Terminal.html#Terminal()"><B>Terminal()</B></A> - 
+Constructor for class display.<A HREF="display/Terminal.html">Terminal</A>
+<DD>&nbsp;
+<DT><A HREF="display/TerminalHost.html"><B>TerminalHost</B></A> - interface display.<A HREF="display/TerminalHost.html">TerminalHost</A>.<DD>TerminalHost is an interface for the remote (virtual) end of our connection
+ to the host computer we are connected to.<DT><A HREF="modules/TextLabel.html"><B>TextLabel</B></A> - class modules.<A HREF="modules/TextLabel.html">TextLabel</A>.<DD>This small module lets you display text somewhere in the applets area.<DT><A HREF="modules/TextLabel.html#TextLabel()"><B>TextLabel()</B></A> - 
+Constructor for class modules.<A HREF="modules/TextLabel.html">TextLabel</A>
+<DD>&nbsp;
+<DT><A HREF="socket/TimedOutException.html"><B>TimedOutException</B></A> - exception socket.<A HREF="socket/TimedOutException.html">TimedOutException</A>.<DD>Exception thrown when a Telnet connection takes too long
+ before receiving a specified String token.<DT><A HREF="socket/TimedOutException.html#TimedOutException()"><B>TimedOutException()</B></A> - 
+Constructor for class socket.<A HREF="socket/TimedOutException.html">TimedOutException</A>
+<DD>&nbsp;
+<DT><A HREF="socket/TimedOutException.html#TimedOutException(java.lang.String)"><B>TimedOutException(String)</B></A> - 
+Constructor for class socket.<A HREF="socket/TimedOutException.html">TimedOutException</A>
+<DD>&nbsp;
+<DT><A HREF="telnet.html#tio"><B>tio</B></A> - 
+Variable in class <A HREF="telnet.html">telnet</A>
+<DD>The telnet io methods.
+<DT><A HREF="display/vt320.html#toString()"><B>toString()</B></A> - 
+Method in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>Return the version of the terminal emulation and its display.
+<DT><A HREF="socket/TelnetIO.html#toString()"><B>toString()</B></A> - 
+Method in class socket.<A HREF="socket/TelnetIO.html">TelnetIO</A>
+<DD>Return the version of TelnetIO.
+</DL>
+<HR>
+<A NAME="_U_"><!-- --></A><H2>
+<B>U</B></H2>
+<DL>
+<DT><A HREF="display/CharDisplay.html#UNDERLINE"><B>UNDERLINE</B></A> - 
+Static variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Underline character.
+<DT><A HREF="display/vt320.html#unimap"><B>unimap</B></A> - 
+Static variable in class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+<DT><A HREF="socket/TelnetWrapper.html#unsetLogin()"><B>unsetLogin()</B></A> - 
+Static method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Turns off the default login of TelnetWrappers.
+<DT><A HREF="display/CharDisplay.html#update(java.awt.Graphics)"><B>update(Graphics)</B></A> - 
+Method in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>Update the display.
+</DL>
+<HR>
+<A NAME="_V_"><!-- --></A><H2>
+<B>V</B></H2>
+<DL>
+<DT><A HREF="display/CharDisplay.html#version"><B>version</B></A> - 
+Variable in class display.<A HREF="display/CharDisplay.html">CharDisplay</A>
+<DD>If you need the runtime version, just ask this variable.
+<DT><A HREF="display/vt320.html"><B>vt320</B></A> - class display.<A HREF="display/vt320.html">vt320</A>.<DD>A DEC VT320 Terminal Emulation (includes VT100/220 and ANSI).<DT><A HREF="display/vt320.html#vt320()"><B>vt320()</B></A> - 
+Constructor for class display.<A HREF="display/vt320.html">vt320</A>
+<DD>&nbsp;
+</DL>
+<HR>
+<A NAME="_W_"><!-- --></A><H2>
+<B>W</B></H2>
+<DL>
+<DT><A HREF="socket/TelnetWrapper.html#wait(java.lang.String)"><B>wait(String)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Skip any received data until the token appears.
+<DT><A HREF="socket/TelnetWrapper.html#wait(java.lang.String, long)"><B>wait(String, long)</B></A> - 
+Method in class socket.<A HREF="socket/TelnetWrapper.html">TelnetWrapper</A>
+<DD>Wait for a String or a timeout.
+<DT><A HREF="telnet.html#writeToSocket(java.lang.String)"><B>writeToSocket(String)</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Send a String to the remote Host.
+<DT><A HREF="telnet.html#writeToUser(java.lang.String)"><B>writeToUser(String)</B></A> - 
+Method in class <A HREF="telnet.html">telnet</A>
+<DD>Send a String to the users terminal
+</DL>
+<HR>
+<A HREF="#_A_">A</A> <A HREF="#_B_">B</A> <A HREF="#_C_">C</A> <A HREF="#_D_">D</A> <A HREF="#_E_">E</A> <A HREF="#_F_">F</A> <A HREF="#_G_">G</A> <A HREF="#_H_">H</A> <A HREF="#_I_">I</A> <A HREF="#_K_">K</A> <A HREF="#_L_">L</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_P_">P</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_T_">T</A> <A HREF="#_U_">U</A> <A HREF="#_V_">V</A> <A HREF="#_W_">W</A> 
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="index-all.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/index.html b/web/root/telnet/Documentation/Source/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..cc35f0b2e31163b4d57f6055eb8958c07fae9131
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/index.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:31 CEST 1999-->
+<TITLE>
+Generated Documentation (Untitled)
+</TITLE>
+</HEAD>
+<FRAMESET cols="20%,80%">
+<FRAMESET rows="30%,70%">
+<FRAME src="overview-frame.html" name="packageListFrame">
+<FRAME src="allclasses-frame.html" name="packageFrame">
+</FRAMESET>
+<FRAME src="overview-summary.html" name="classFrame">
+</FRAMESET>
+<NOFRAMES>
+<H2>
+Frame Alert</H2>
+
+<P>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<BR>
+Link to <A HREF="overview-summary.html">Non-frame version.</A></NOFRAMES>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/BSXModule.html b/web/root/telnet/Documentation/Source/modules/BSXModule.html
new file mode 100644
index 0000000000000000000000000000000000000000..d1f285c8d7b53c1ea286c9a889973a4684f5961b
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/BSXModule.html
@@ -0,0 +1,596 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:35 CEST 1999 -->
+<TITLE>
+: Class  BSXModule
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../modules/ButtonBar.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BSXModule.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+modules</FONT>
+<BR>
+Class  BSXModule</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--<B>modules.BSXModule</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>BSXModule</B><DT>extends java.awt.Panel<DT>implements <A HREF="../modules/Module.html">Module</A></DL>
+
+<P>
+The ultimate BSX module implements most of the common used
+ BSX controll sequences.
+ <P>
+ Features:<UL>
+ <LI>a Statemachine to parse the Strings passed by the telnet
+ <LI>a own package named bsx, for Window and Polygon handling
+ terrible english because my native language is german
+ </UL>
+ TODO:<UL>
+ <LI>more BSX Sequences
+ <LI>Documentaion
+ </UL>
+<P>
+<DL>
+<DT><B>Author: </B><DD>Thomas Kriegelstein</DD>
+<DT><B>See Also: </B><DD><A HREF="../serialized-form.html#modules.BSXModule">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#clientVersion">clientVersion</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Client Version</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../modules/BSXModule.html#BSXModule()">BSXModule</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#addNotify()">addNotify</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds two Buttons to the Panel and instanciates a BSXWindow.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;host,
+        int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do nothing</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do nothing</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#handleEvent(java.awt.Event)">handleEvent</A></B>(java.awt.Event&nbsp;e)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Java 1.0 eventhandling routines.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#main(java.lang.String[])">main</A></B>(java.lang.String[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a main for test-purposes</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#receive(java.lang.String)">receive</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called by the telnet, so that we can parse the String.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/BSXModule.html#setLoader(java.lang.Object)">setLoader</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;register o as our parent</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocale, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+resize, 
+resize, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="clientVersion"><!-- --></A><H3>
+clientVersion</H3>
+<PRE>
+protected java.lang.String <B>clientVersion</B></PRE>
+<DL>
+<DD>Client Version</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="BSXModule()"><!-- --></A><H3>
+BSXModule</H3>
+<PRE>
+public <B>BSXModule</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setLoader(java.lang.Object)"><!-- --></A><H3>
+setLoader</H3>
+<PRE>
+public void <B>setLoader</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>register o as our parent<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#setLoader(java.lang.Object)">setLoader</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;host,
+                    int&nbsp;port)</PRE>
+<DL>
+<DD>do nothing<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#connect(java.lang.String, int)">connect</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()</PRE>
+<DL>
+<DD>do nothing<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#disconnect()">disconnect</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="receive(java.lang.String)"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public java.lang.String <B>receive</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>This method is called by the telnet, so that we can parse the String.
+ Prints out the filtered String if logging s enabled.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#receive(java.lang.String)">receive</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>String</CODE> - s the String to be parsed<DT><B>Returns:</B><DD>a filtered String with no BSX sequences in it</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addNotify()"><!-- --></A><H3>
+addNotify</H3>
+<PRE>
+public void <B>addNotify</B>()</PRE>
+<DL>
+<DD>Adds two Buttons to the Panel and instanciates a BSXWindow.<DD><DL>
+<DT><B>Overrides:</B><DD>addNotify in class java.awt.Panel</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleEvent(java.awt.Event)"><!-- --></A><H3>
+handleEvent</H3>
+<PRE>
+public boolean <B>handleEvent</B>(java.awt.Event&nbsp;e)</PRE>
+<DL>
+<DD>Java 1.0 eventhandling routines.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>Event</CODE> - e<DT><B>Returns:</B><DD>true if Event has been recognized and fullfilled.<DT><B>Overrides:</B><DD>handleEvent in class java.awt.Component</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(java.lang.String[]&nbsp;args)</PRE>
+<DL>
+<DD>a main for test-purposes<DD><DL>
+</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../modules/ButtonBar.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BSXModule.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/ButtonBar.html b/web/root/telnet/Documentation/Source/modules/ButtonBar.html
new file mode 100644
index 0000000000000000000000000000000000000000..7ea0a0ff19a9b6600fb3db71e64c267b65e47c4c
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/ButtonBar.html
@@ -0,0 +1,636 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:35 CEST 1999 -->
+<TITLE>
+: Class  ButtonBar
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/BSXModule.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../modules/MudConnector.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ButtonBar.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+modules</FONT>
+<BR>
+Class  ButtonBar</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--<B>modules.ButtonBar</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>ButtonBar</B><DT>extends java.awt.Panel<DT>implements <A HREF="../modules/Module.html">Module</A></DL>
+
+<P>
+This class implements a programmable button bar.
+ You can add <A HREF="#buttons">Buttons</A> and <A HREF="#fields">Input 
+ fields</A> to trigger actions in the <A HREF="telnet.html">telnet 
+ applet</A>. On how to load a module, please refer to the 
+ <A HREF="telnet.html">telnet</A> documentation.
+ 
+ <DL>
+  <A NAME="buttons"></A>
+  <DT><B>Buttons:</B>
+  <DD><TT>&lt;PARAM NAME=<B><I>number</I></B>#Button VALUE=&quot;<B><I>buttontext</I></B>|<B><I>buttonaction</I></B>&quot;&gt;</TT>
+  <DD><B><I>number</I></B> is the sequence number and determines the place
+      of the button on the row.
+      <P>
+  <DD><B><I>buttontext</I></B> is a string displayed on the button.
+      <P>
+  <DD><A NAME="buttonaction"><B><I>buttonaction</I></B></A> may be one
+      of the following functions or strings<BR>
+      <FONT SIZE=-1>(<I>Note:</I> the backslash character
+      in front of the dollar sign is mandatory!)</FONT>
+      <UL>
+       <LI><TT><I>simple text</I></TT>
+           to be sent to the remote host. Newline and/or carriage return
+           characters may be added in C syntax <B>\n</B> and <B>\r</B>.
+           To support unimplemented function keys the <B>\e</B> escape
+           character may be useful. The <B>\b</B> backspace character is
+           also supported.
+           The text may contain <A HREF="#fieldreference"><B><I>field 
+           reference(s)</I></B></A>.
+           <P>
+       <LI><TT>\$connect(<B><I>host</I></B>[,<B><I>port</I></B>])</TT> 
+           tries to initiate a connection to the <B><I>host</I></B>
+           at the <B><I>port</I></B>, if given. The standard port is
+           23. <B><I>host</I></B> and <B><I>port</I></B> may be hostname
+           and number or <A HREF="#fieldreference"><B><I>field
+           reference(s)</I></B></A>. If a connection already exists
+           nothing will happen.<BR>
+           <FONT SIZE=-1>(<I>Note:</I> It is not allowed to have
+           spaces anywhere inside the parenthesis!)</FONT>
+           <P>
+       <LI><TT>\$disconnect()</TT>
+           terminates the current connection, but if there was no
+           connection nothing will happen.
+           <P>
+       <LI><TT>\$detach()</TT>
+           detaches the applet from the web browser window and
+           creates a new frame externally. This may be used to allow
+           users to use the applet while browsing the web with the
+           same browser window.<BR>
+           <FONT SIZE=-1>(<I>Note:</I> You need to load the applet via the
+           <A HREF="appWrapper.html">appWrapper class</A> or
+           it will not work properly!)</FONT>
+      </UL>
+  <DD><B>Examples:</B><BR>
+      <FONT SIZE=-1>(<I>Note:</I> It makes sense if you look at the
+      examples for input fields below.)</FONT>
+      <PRE>
+        &lt;PARAM NAME=1#Button VALUE="HELP!|help\r\n"&gt;
+        &lt;PARAM NAME=2#Button VALUE="HELP:|help \@help@\r\n"&gt;
+        &lt;PARAM NAME=4#Button VALUE="simple|\$connect(localhost)"&gt;
+        &lt;PARAM NAME=5#Button VALUE="complete|\$connect(www,4711)"&gt;
+        &lt;PARAM NAME=6#Button VALUE="connect|\$connect(\@address@)"&gt;
+        &lt;PARAM NAME=8#Button VALUE="connect to port|\$connect(\@address@,\@port@)"&gt;
+        &lt;PARAM NAME=10#Button VALUE="window|\$detach()"&gt;
+     </PRE>
+     <P>
+  <A NAME="fields"></A>
+  <DT><B>Input fields</B>
+  <DD><TT>&lt;PARAM NAME=<B><I>number</I></B>#Input VALUE=&quot;<B><I>fieldname</I></B>[#<I><B>length</B></I>]|<B><I>initial text</I></B>[|<B><I>action</I></B>]&quot;&gt;</TT>
+  <DD><B><I>number</I></B> is the sequence number and determines the place
+      of the field on the row.
+      <P>
+  <DD><A NAME="fieldreference"><B><I>fieldname</I></B></A> is a
+      symbolic name to reference the input field. A reference may be used in 
+      <A HREF="#buttonaction"><B><I>button actions</I></B></A> and
+      is constructed as follows:
+      <TT>\@<B><I>fieldname</I></B>@</TT>
+      The <B>\@fieldname@</B> macro will be replaced by the string entered in
+      the text field.
+      <P>
+  <DD><B><I>length</I></B> is the length of the input field in numbers of
+      characters.
+      <P>
+  <DD><B><I>initial text</I></B> is the text to be placed into the input
+      field on startup
+  <DD><B><I>action</I></B> may be used similar to a 
+      <A HREF="#buttonaction"><B><I>button action</I></B></A>. This action 
+      will be used if the users presses Return in the inputfield. Leave
+      empty if you only want to use a button to send the text!
+  <DD><B>Examples:</B><BR>
+      <FONT SIZE=-1>(<I>Note:</I> It makes sense if you look at the
+      examples for buttons before.)</FONT>
+      <PRE>
+        &lt;PARAM NAME=3#Input VALUE="help#10|"&gt;
+        &lt;PARAM NAME=7#Input VALUE="address|www.first.gmd.de"&gt;
+        &lt;PARAM NAME=8#Input VALUE="send#5|who|\@send@\r\n"&gt;
+        &lt;PARAM NAME=9#Input VALUE="port#5|4711"&gt;
+      </PRE>
+      <P>
+ </DL>
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="../modules/Module.html"><CODE>Module</CODE></A>, <A HREF="../serialized-form.html#modules.ButtonBar">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../modules/ButtonBar.html#ButtonBar()">ButtonBar</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/ButtonBar.html#addNotify()">addNotify</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create the buttonbar from the parameter list.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/ButtonBar.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;host,
+        int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the applet connects this method is called.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/ButtonBar.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get notified of disconnection.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/ButtonBar.html#handleEvent(java.awt.Event)">handleEvent</A></B>(java.awt.Event&nbsp;evt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/ButtonBar.html#receive(java.lang.String)">receive</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This module does not take any input.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/ButtonBar.html#setLoader(java.lang.Object)">setLoader</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called by our loader to notify us of it.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocale, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+resize, 
+resize, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="ButtonBar()"><!-- --></A><H3>
+ButtonBar</H3>
+<PRE>
+public <B>ButtonBar</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setLoader(java.lang.Object)"><!-- --></A><H3>
+setLoader</H3>
+<PRE>
+public void <B>setLoader</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>This method is called by our loader to notify us of it.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#setLoader(java.lang.Object)">setLoader</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>o</CODE> - The object that has loaded this object.<DT><B>See Also: </B><DD><CODE>display.Module</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;host,
+                    int&nbsp;port)</PRE>
+<DL>
+<DD>If the applet connects this method is called.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#connect(java.lang.String, int)">connect</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>host</CODE> - remote hostaddress - not used<DD><CODE>port</CODE> - remote port - not used</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()</PRE>
+<DL>
+<DD>Get notified of disconnection. Do nothing.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#disconnect()">disconnect</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="receive(java.lang.String)"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public java.lang.String <B>receive</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>This module does not take any input. It works passive.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#receive(java.lang.String)">receive</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Returns:</B><DD>null to remove from the list of receiver modules.<DT><B>See Also: </B><DD><CODE>display.Module</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addNotify()"><!-- --></A><H3>
+addNotify</H3>
+<PRE>
+public void <B>addNotify</B>()</PRE>
+<DL>
+<DD>create the buttonbar from the parameter list. We will know our parent,
+ when we have been added.<DD><DL>
+<DT><B>Overrides:</B><DD>addNotify in class java.awt.Panel</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleEvent(java.awt.Event)"><!-- --></A><H3>
+handleEvent</H3>
+<PRE>
+public boolean <B>handleEvent</B>(java.awt.Event&nbsp;evt)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Overrides:</B><DD>handleEvent in class java.awt.Component</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/BSXModule.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../modules/MudConnector.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ButtonBar.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/Module.html b/web/root/telnet/Documentation/Source/modules/Module.html
new file mode 100644
index 0000000000000000000000000000000000000000..8c6a35e32e50f5c5d14a513914c90043ec4f6468
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/Module.html
@@ -0,0 +1,235 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:35 CEST 1999 -->
+<TITLE>
+: Interface  Module
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Module.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+modules</FONT>
+<BR>
+Interface  Module</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../modules/BSXModule.html">BSXModule</A>, <A HREF="../modules/TextLabel.html">TextLabel</A>, <A HREF="../modules/MudConnector.html">MudConnector</A>, <A HREF="../modules/Script.html">Script</A>, <A HREF="../modules/ButtonBar.html">ButtonBar</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract interface <B>Module</B></DL>
+
+<P>
+Modules must implement this interface to be detected as valid modules
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Module.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;host,
+        int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connected to the remote host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Module.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disconnect from the host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Module.html#receive(java.lang.String)">receive</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Receive data from somewhere.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Module.html#setLoader(java.lang.Object)">setLoader</A></B>(java.lang.Object&nbsp;loader)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the loader of the module.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setLoader(java.lang.Object)"><!-- --></A><H3>
+setLoader</H3>
+<PRE>
+public void <B>setLoader</B>(java.lang.Object&nbsp;loader)</PRE>
+<DL>
+<DD>Set the loader of the module. This is necessary to know if you want to
+ contact the modules parent.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>loader</CODE> - The object that has loaded this module.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;host,
+                    int&nbsp;port)</PRE>
+<DL>
+<DD>Connected to the remote host. This method notifies upon new connection.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>host</CODE> - remote hostname<DD><CODE>port</CODE> - remote port</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()</PRE>
+<DL>
+<DD>Disconnect from the host. This method notifies of lost connection.</DL>
+<HR>
+
+<A NAME="receive(java.lang.String)"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public java.lang.String <B>receive</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>Receive data from somewhere. If a modules does not want to receive data
+ it should return null to remove itself from the list of receiver modules.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>s</CODE> - The string we receive.<DT><B>Returns:</B><DD>the modified string or null (to remove from receiver list)</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Module.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/MudConnector.html b/web/root/telnet/Documentation/Source/modules/MudConnector.html
new file mode 100644
index 0000000000000000000000000000000000000000..055f1deb8d5ce2354d47aebda9f09a37b60be3af
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/MudConnector.html
@@ -0,0 +1,571 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:35 CEST 1999 -->
+<TITLE>
+: Class  MudConnector
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/ButtonBar.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../modules/Script.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MudConnector.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+modules</FONT>
+<BR>
+Class  MudConnector</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--<B>modules.MudConnector</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>MudConnector</B><DT>extends java.awt.Panel<DT>implements <A HREF="../modules/Module.html">Module</A>, java.lang.Runnable</DL>
+
+<P>
+A specially designed module for the 
+ <A HREF="http://www.mudconnect.com/">MUD Connector</A>.
+ It loads a list of MUDs via http and displays them in a list box to 
+ be selected. A selected MUD can then be entered.
+
+ <DL>
+  <DT><B>MudConnector parameterfile:</B>
+   <DD><PRE>&lt;PARAM NAME=MUDlist VALUE=&quot;<B><I>url</I></B>&quot;&gt;</PRE>
+   <DD>The url of the Mudlist. This url MUST be located on the same web
+       server as the applet!
+ </DL>
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="../modules/Module.html"><CODE>Module</CODE></A>, <A HREF="../serialized-form.html#modules.MudConnector">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../modules/MudConnector.html#MudConnector()">MudConnector</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/MudConnector.html#addNotify()">addNotify</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when newly added try to load the mudlist using the parameter "mudlist"</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/MudConnector.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;host,
+        int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dummy methods</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/MudConnector.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/MudConnector.html#handleEvent(java.awt.Event)">handleEvent</A></B>(java.awt.Event&nbsp;evt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle list selection, connect, disconnect and refresh button</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/MudConnector.html#receive(java.lang.String)">receive</A></B>(java.lang.String&nbsp;str)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/MudConnector.html#run()">run</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The body of the thread opens a URLConnection with the address given as
+ parameter "mudlist" and downloads it.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/MudConnector.html#setLoader(java.lang.Object)">setLoader</A></B>(java.lang.Object&nbsp;loader)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setLoader() is called upon start of the parent applet.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocale, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+resize, 
+resize, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="MudConnector()"><!-- --></A><H3>
+MudConnector</H3>
+<PRE>
+public <B>MudConnector</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setLoader(java.lang.Object)"><!-- --></A><H3>
+setLoader</H3>
+<PRE>
+public void <B>setLoader</B>(java.lang.Object&nbsp;loader)</PRE>
+<DL>
+<DD>setLoader() is called upon start of the parent applet. This method
+ initializes the GUI of the module, e.g the list and buttons.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#setLoader(java.lang.Object)">setLoader</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>loader</CODE> - the parent applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addNotify()"><!-- --></A><H3>
+addNotify</H3>
+<PRE>
+public void <B>addNotify</B>()</PRE>
+<DL>
+<DD>when newly added try to load the mudlist using the parameter "mudlist"<DD><DL>
+<DT><B>Overrides:</B><DD>addNotify in class java.awt.Panel</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="run()"><!-- --></A><H3>
+run</H3>
+<PRE>
+public void <B>run</B>()</PRE>
+<DL>
+<DD>The body of the thread opens a URLConnection with the address given as
+ parameter "mudlist" and downloads it. It expects a tabulator separated
+ list <mudname> <mudhost> <mudport> and the amount of muds in the file
+ at the beginning of the file.<DD><DL>
+<DT><B>Specified by: </B><DD>run in interface java.lang.Runnable</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="handleEvent(java.awt.Event)"><!-- --></A><H3>
+handleEvent</H3>
+<PRE>
+public boolean <B>handleEvent</B>(java.awt.Event&nbsp;evt)</PRE>
+<DL>
+<DD>handle list selection, connect, disconnect and refresh button<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>evt</CODE> - the event to process<DT><B>Overrides:</B><DD>handleEvent in class java.awt.Component</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;host,
+                    int&nbsp;port)</PRE>
+<DL>
+<DD>dummy methods<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#connect(java.lang.String, int)">connect</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#disconnect()">disconnect</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="receive(java.lang.String)"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public java.lang.String <B>receive</B>(java.lang.String&nbsp;str)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#receive(java.lang.String)">receive</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/ButtonBar.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../modules/Script.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="MudConnector.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/Script.html b/web/root/telnet/Documentation/Source/modules/Script.html
new file mode 100644
index 0000000000000000000000000000000000000000..b57f3df66fc7c25ae6f9923e3e1965814cde7789
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/Script.html
@@ -0,0 +1,348 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:35 CEST 1999 -->
+<TITLE>
+: Class  Script
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/MudConnector.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../modules/TextLabel.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Script.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+modules</FONT>
+<BR>
+Class  Script</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.util.Dictionary
+        |
+        +--java.util.Hashtable
+              |
+              +--<B>modules.Script</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>Script</B><DT>extends java.util.Hashtable<DT>implements <A HREF="../modules/Module.html">Module</A></DL>
+
+<P>
+A very simple scripting module. It takes pairs of pattern and text and
+ sends the corresponding text when the pattern matches. Each pattern is
+ only matched once per connected session.
+
+ <DL>
+  <DT><B>Scripts:</B>
+   <DD><PRE>&lt;PARAM NAME=script VALUE=&quot;<B><I>pattern</I></B>|<B><I>text</I></B>|<B><I>...</I></B>&quot;&gt;</PRE>
+   <DD>A script contains of pairs of <I>pattern</I> and <I>text</I> strings.
+       If the pattern is matched against the output from the remote host,
+       the corresponding text will be sent. Each pattern will match only
+       <B>once</B> per session. A session is defined by connect and 
+       disconnect.<P>
+       Thus it is possible to program an autologin as follows:<BR>
+       <PRE><B>"login:|leo|Password:|mypassword|leo@www|ls"</B></PRE>
+       Newlines will be added automatically to the string sent! At the
+       moment the order of the pattern and text pairs is <I>not</I> relevant.
+       <P>
+       It is possible to prompt the user for input if a match occurs. If the
+       corresponding <I>text</I> is a string enclosed in braces ([] or {}) a
+       dialog window is opened with <I>text</I> as prompt. A special case 
+       is an empty prompt in which case the <I>pattern</I> will be shown as 
+       prompt. &quot;[Your name:]&quot; would open a dialog window with the
+       text &quot;Your name&quot; as prompt. Curly braces have a special
+       meaning; any user input will be shown as &quot;*&quot; which makes
+       it possible to program password prompts. Example: 
+       &quot;{Your password:}&quot;.<P>
+       A special match like: &quot;login:|[]&quot; can be used to open a
+       dialog and display &quot;login:&quot; as prompt. This works for
+       &quot;{}&quot; as well.
+       
+ </DL>
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="../modules/Module.html"><CODE>Module</CODE></A>, <A HREF="../serialized-form.html#modules.Script">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../modules/Script.html#Script()">Script</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Script.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;host,
+        int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure the script module by reading the script PARAMeter.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Script.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get notified of disconnection.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Script.html#receive(java.lang.String)">receive</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called when data is received.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/Script.html#setLoader(java.lang.Object)">setLoader</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the applet as module loader</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.util.Hashtable"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.util.Hashtable</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clear, 
+clone, 
+contains, 
+containsKey, 
+containsValue, 
+elements, 
+entrySet, 
+equals, 
+get, 
+hashCode, 
+isEmpty, 
+keys, 
+keySet, 
+put, 
+putAll, 
+rehash, 
+remove, 
+size, 
+toString, 
+values</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>finalize, 
+getClass, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="Script()"><!-- --></A><H3>
+Script</H3>
+<PRE>
+public <B>Script</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setLoader(java.lang.Object)"><!-- --></A><H3>
+setLoader</H3>
+<PRE>
+public void <B>setLoader</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Set the applet as module loader<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#setLoader(java.lang.Object)">setLoader</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>o</CODE> - the object that is the applet (must be an Applet)<DT><B>See Also: </B><DD><CODE>module.Module</CODE>, 
+<CODE>Applet</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;host,
+                    int&nbsp;port)</PRE>
+<DL>
+<DD>Configure the script module by reading the script PARAMeter.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#connect(java.lang.String, int)">connect</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>host</CODE> - remote hostaddress - not used<DD><CODE>port</CODE> - remote port - not used</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()</PRE>
+<DL>
+<DD>Get notified of disconnection. Do nothing.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#disconnect()">disconnect</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="receive(java.lang.String)"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public java.lang.String <B>receive</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>This method is called when data is received. It tries to match the
+ input to the list of patterns and sends corresponding text on success.
+ If the response is [] or {} the user will be prompted with the matching
+ text. You can modify the prompt string by entering it inside of the
+ brackets or curly braces (e.g. [Enter your id:]). In case of curly
+ braces the input area will not show the typed in text (for passwords)!<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#receive(java.lang.String)">receive</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>s</CODE> - The string to test.<DT><B>See Also: </B><DD><CODE>peer.InputPeer</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/MudConnector.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../modules/TextLabel.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="Script.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/TextLabel.html b/web/root/telnet/Documentation/Source/modules/TextLabel.html
new file mode 100644
index 0000000000000000000000000000000000000000..14e004295967bb419162f59f84e783df627f2800
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/TextLabel.html
@@ -0,0 +1,523 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:35 CEST 1999 -->
+<TITLE>
+: Class  TextLabel
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/Script.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TextLabel.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+modules</FONT>
+<BR>
+Class  TextLabel</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--<B>modules.TextLabel</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TextLabel</B><DT>extends java.awt.Panel<DT>implements <A HREF="../modules/Module.html">Module</A></DL>
+
+<P>
+This small module lets you display text somewhere in the applets area.
+
+ <DL>
+  <DT><B>Label:</B>
+   <DD><PRE>&lt;PARAM NAME=labelRows    VALUE=&quot;<B><I>rows</B></I>&quot;&gt;</PRE>
+   <DD>Defines the how many rows the label will have.
+   <DD><PRE>&lt;PARAM NAME=labelCols    VALUE=&quot;<B><I>cols</B></I>&quot;&gt;</PRE>
+   <DD>Defines the how many columns the label will have.
+   <DD><PRE>&lt;PARAM NAME=labelFont    VALUE=&quot;<B><I>font[,size]</B></I>&quot;&gt;</PRE>
+   <DD>The font for displaying the label text. If the <I>size</I> is left out
+       a standard size of 14 points is assumed.
+   <DD><PRE>&lt;PARAM NAME=label#<I>number</I> VALUE=&quot;<B><I>text</I></B>&quot;&gt;</PRE>
+   <DT>The labels are enumerated and displayed in rows and columns.
+ </DL>
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="../modules/Module.html"><CODE>Module</CODE></A>, <A HREF="../serialized-form.html#modules.TextLabel">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../modules/TextLabel.html#TextLabel()">TextLabel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/TextLabel.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;host,
+        int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do nothing upon connect.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/TextLabel.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do nothing upon disconnecton.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/TextLabel.html#receive(java.lang.String)">receive</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do nothing when receiving text.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../modules/TextLabel.html#setLoader(java.lang.Object)">setLoader</A></B>(java.lang.Object&nbsp;o)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the applet as module loader and configure.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Panel"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Panel</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>addNotify</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocale, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+handleEvent, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+resize, 
+resize, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TextLabel()"><!-- --></A><H3>
+TextLabel</H3>
+<PRE>
+public <B>TextLabel</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setLoader(java.lang.Object)"><!-- --></A><H3>
+setLoader</H3>
+<PRE>
+public void <B>setLoader</B>(java.lang.Object&nbsp;o)</PRE>
+<DL>
+<DD>Set the applet as module loader and configure.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#setLoader(java.lang.Object)">setLoader</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>o</CODE> - the object that is the applet (must be an Applet)<DT><B>See Also: </B><DD><CODE>module.Module</CODE>, 
+<CODE>Applet</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;host,
+                    int&nbsp;port)</PRE>
+<DL>
+<DD>Do nothing upon connect.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#connect(java.lang.String, int)">connect</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>host</CODE> - remote hostaddress - not used<DD><CODE>port</CODE> - remote port - not used</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()</PRE>
+<DL>
+<DD>Do nothing upon disconnecton.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#disconnect()">disconnect</A> in interface <A HREF="../modules/Module.html">Module</A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="receive(java.lang.String)"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public java.lang.String <B>receive</B>(java.lang.String&nbsp;s)</PRE>
+<DL>
+<DD>Do nothing when receiving text. Be removed upon first call.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../modules/Module.html#receive(java.lang.String)">receive</A> in interface <A HREF="../modules/Module.html">Module</A><DT><B>Parameters:</B><DD><CODE>s</CODE> - The string received.<DT><B>See Also: </B><DD><CODE>peer.InputPeer</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/Script.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TextLabel.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_java.awt.Component">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/package-frame.html b/web/root/telnet/Documentation/Source/modules/package-frame.html
new file mode 100644
index 0000000000000000000000000000000000000000..dab1f3cd1d23177faada934fdd39386c3c03310e
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/package-frame.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Package modules
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+<FONT size="+1" ID="FrameTitleFont">
+<A HREF="../modules/package-summary.html" TARGET="classFrame">modules</A></FONT>
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT ID="FrameItemFont">
+<BR>
+<A HREF="Module.html" TARGET="classFrame"><I>Module</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT ID="FrameItemFont">
+<BR>
+<A HREF="BSXModule.html" TARGET="classFrame">BSXModule</A>
+<BR>
+<A HREF="ButtonBar.html" TARGET="classFrame">ButtonBar</A>
+<BR>
+<A HREF="MudConnector.html" TARGET="classFrame">MudConnector</A>
+<BR>
+<A HREF="Script.html" TARGET="classFrame">Script</A>
+<BR>
+<A HREF="TextLabel.html" TARGET="classFrame">TextLabel</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/package-summary.html b/web/root/telnet/Documentation/Source/modules/package-summary.html
new file mode 100644
index 0000000000000000000000000000000000000000..6ff39f7c094d1925f43b24ed0ba66f8288d17f9a
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/package-summary.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Package modules
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../socket/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<H2>
+Package modules
+</H2>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="Module.html"><I>Module</I></A></B></TD>
+<TD>Modules must implement this interface to be detected as valid modules</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="BSXModule.html">BSXModule</A></B></TD>
+<TD>The ultimate BSX module implements most of the common used
+ BSX controll sequences.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="ButtonBar.html">ButtonBar</A></B></TD>
+<TD>This class implements a programmable button bar.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="MudConnector.html">MudConnector</A></B></TD>
+<TD>A specially designed module for the 
+ <A HREF="http://www.mudconnect.com/">MUD Connector</A>.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="Script.html">Script</A></B></TD>
+<TD>A very simple scripting module.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="TextLabel.html">TextLabel</A></B></TD>
+<TD>This small module lets you display text somewhere in the applets area.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../socket/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/modules/package-tree.html b/web/root/telnet/Documentation/Source/modules/package-tree.html
new file mode 100644
index 0000000000000000000000000000000000000000..00d9e9dd6bf2d0157b0b10560cbc5c5876067b54
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/modules/package-tree.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: modules Class Hierarchy
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../socket/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package modules
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies: </B><DD><A HREF="../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.awt.Container<UL>
+<LI TYPE="circle">class java.awt.Panel<UL>
+<LI TYPE="circle">class modules.<A HREF="../modules/BSXModule.html"><B>BSXModule</B></A> (implements modules.<A HREF="../modules/Module.html">Module</A>)
+<LI TYPE="circle">class modules.<A HREF="../modules/ButtonBar.html"><B>ButtonBar</B></A> (implements modules.<A HREF="../modules/Module.html">Module</A>)
+<LI TYPE="circle">class modules.<A HREF="../modules/MudConnector.html"><B>MudConnector</B></A> (implements modules.<A HREF="../modules/Module.html">Module</A>, java.lang.Runnable)
+<LI TYPE="circle">class modules.<A HREF="../modules/TextLabel.html"><B>TextLabel</B></A> (implements modules.<A HREF="../modules/Module.html">Module</A>)
+</UL>
+</UL>
+</UL>
+<LI TYPE="circle">class java.util.Dictionary<UL>
+<LI TYPE="circle">class java.util.Hashtable (implements java.lang.Cloneable, java.util.Map, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class modules.<A HREF="../modules/Script.html"><B>Script</B></A> (implements modules.<A HREF="../modules/Module.html">Module</A>)
+</UL>
+</UL>
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface modules.<A HREF="../modules/Module.html"><B>Module</B></A></UL>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../display/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;<A HREF="../socket/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/overview-frame.html b/web/root/telnet/Documentation/Source/overview-frame.html
new file mode 100644
index 0000000000000000000000000000000000000000..cc150b57d8f590b36224bfe7ae8a741fd3882819
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/overview-frame.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Overview
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameTitleFont">
+<B></B></FONT></TD>
+</TR>
+</TABLE>
+
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT ID="FrameItemFont"><A HREF="allclasses-frame.html" TARGET="packageFrame">All Classes</A></FONT>
+<P>
+<FONT size="+1" ID="FrameHeadingFont">
+Packages</FONT>
+<BR>
+<FONT ID="FrameItemFont"><A HREF="display/package-frame.html" TARGET="packageFrame">display</A></FONT>
+<BR>
+<FONT ID="FrameItemFont"><A HREF="modules/package-frame.html" TARGET="packageFrame">modules</A></FONT>
+<BR>
+<FONT ID="FrameItemFont"><A HREF="socket/package-frame.html" TARGET="packageFrame">socket</A></FONT>
+<BR>
+</TD>
+</TR>
+</TABLE>
+
+<P>
+&nbsp;
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/overview-summary.html b/web/root/telnet/Documentation/Source/overview-summary.html
new file mode 100644
index 0000000000000000000000000000000000000000..6579b2f6228feb102c97fed167bef04eabab6e6e
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/overview-summary.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Overview
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Overview</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Packages</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="display/package-summary.html">display</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="modules/package-summary.html">modules</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="socket/package-summary.html">socket</A></B></TD>
+<TD>&nbsp;</TD>
+</TR>
+</TABLE>
+
+<P>
+&nbsp;<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Overview</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/overview-tree.html b/web/root/telnet/Documentation/Source/overview-tree.html
new file mode 100644
index 0000000000000000000000000000000000000000..79d996ed79d9c52f03cf4a56b4914462aefaf9f1
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/overview-tree.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:30 CEST 1999 -->
+<TITLE>
+: Class Hierarchy
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For All Packages</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies: </B><DD><A HREF="display/package-tree.html">display</A>, <A HREF="modules/package-tree.html">modules</A>, <A HREF="socket/package-tree.html">socket</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.awt.Container<UL>
+<LI TYPE="circle">class java.awt.Panel<UL>
+<LI TYPE="circle">class java.applet.Applet<UL>
+<LI TYPE="circle">class <A HREF="appWrapper.html"><B>appWrapper</B></A> (implements java.applet.AppletStub, java.lang.Runnable)
+<LI TYPE="circle">class <A HREF="CharDisplayTest.html"><B>CharDisplayTest</B></A><LI TYPE="circle">class <A HREF="telnet.html"><B>telnet</B></A> (implements java.lang.Runnable, socket.<A HREF="socket/StatusPeer.html">StatusPeer</A>, display.<A HREF="display/TerminalHost.html">TerminalHost</A>)
+</UL>
+<LI TYPE="circle">class modules.<A HREF="modules/BSXModule.html"><B>BSXModule</B></A> (implements modules.<A HREF="modules/Module.html">Module</A>)
+<LI TYPE="circle">class modules.<A HREF="modules/ButtonBar.html"><B>ButtonBar</B></A> (implements modules.<A HREF="modules/Module.html">Module</A>)
+<LI TYPE="circle">class display.<A HREF="display/CharDisplay.html"><B>CharDisplay</B></A><LI TYPE="circle">class modules.<A HREF="modules/MudConnector.html"><B>MudConnector</B></A> (implements modules.<A HREF="modules/Module.html">Module</A>, java.lang.Runnable)
+<LI TYPE="circle">class display.<A HREF="display/Terminal.html"><B>Terminal</B></A><UL>
+<LI TYPE="circle">class display.<A HREF="display/vt320.html"><B>vt320</B></A> (implements display.<A HREF="display/TerminalHost.html">TerminalHost</A>)
+</UL>
+<LI TYPE="circle">class modules.<A HREF="modules/TextLabel.html"><B>TextLabel</B></A> (implements modules.<A HREF="modules/Module.html">Module</A>)
+</UL>
+</UL>
+</UL>
+<LI TYPE="circle">class java.util.Dictionary<UL>
+<LI TYPE="circle">class java.util.Hashtable (implements java.lang.Cloneable, java.util.Map, java.io.Serializable)
+<UL>
+<LI TYPE="circle">class modules.<A HREF="modules/Script.html"><B>Script</B></A> (implements modules.<A HREF="modules/Module.html">Module</A>)
+</UL>
+</UL>
+<LI TYPE="circle">class <A HREF="proxy.html"><B>proxy</B></A> (implements java.lang.Runnable)
+<LI TYPE="circle">class display.<A HREF="display/SoftFont.html"><B>SoftFont</B></A><LI TYPE="circle">class socket.<A HREF="socket/TelnetIO.html"><B>TelnetIO</B></A> (implements socket.<A HREF="socket/StatusPeer.html">StatusPeer</A>)
+<LI TYPE="circle">class socket.<A HREF="socket/TelnetWrapper.html"><B>TelnetWrapper</B></A><LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class java.io.IOException<UL>
+<LI TYPE="circle">class socket.<A HREF="socket/TimedOutException.html"><B>TimedOutException</B></A></UL>
+</UL>
+</UL>
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface modules.<A HREF="modules/Module.html"><B>Module</B></A><LI TYPE="circle">interface socket.<A HREF="socket/StatusPeer.html"><B>StatusPeer</B></A><LI TYPE="circle">interface display.<A HREF="display/TerminalHost.html"><B>TerminalHost</B></A></UL>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="overview-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/package-list b/web/root/telnet/Documentation/Source/package-list
new file mode 100644
index 0000000000000000000000000000000000000000..1b8a62b2c95b65d4035becc7c7aaf262d67186a8
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/package-list
@@ -0,0 +1,3 @@
+display
+modules
+socket
diff --git a/web/root/telnet/Documentation/Source/packages.html b/web/root/telnet/Documentation/Source/packages.html
new file mode 100644
index 0000000000000000000000000000000000000000..4bca39c29c825a83f78a62d8813b01aa16616469
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/packages.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:31 CEST 1999 -->
+<TITLE>
+
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<BR>
+
+<BR>
+
+<BR>
+<CENTER>
+The front page has been renamed.Please see:
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="index.html">Frame version</A>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="overview-summary.html">Non-frame version.</A></CENTER>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/proxy.html b/web/root/telnet/Documentation/Source/proxy.html
new file mode 100644
index 0000000000000000000000000000000000000000..01520e91d64c3b43e57d456b1c0bf37ac03f2fa9
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/proxy.html
@@ -0,0 +1,252 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:33 CEST 1999 -->
+<TITLE>
+: Class  proxy
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="CharDisplayTest.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="telnet.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="proxy.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+Class  proxy</H2>
+<PRE>
+java.lang.Object
+  |
+  +--<B>proxy</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>proxy</B><DT>extends java.lang.Object<DT>implements java.lang.Runnable</DL>
+
+<P>
+proxy class -- implements a proxy server to redirect network access
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="proxy.html#proxy(int, java.lang.String, int)">proxy</A></B>(int&nbsp;lport,
+      java.lang.String&nbsp;raddr,
+      int&nbsp;rport)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a server socket and start listening on the local port.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="proxy.html#main(java.lang.String[])">main</A></B>(java.lang.String[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called when the application is run on the commandline.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="proxy.html#run()">run</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cycle around until an error occurs and wait for incoming connections.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+toString, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="proxy(int, java.lang.String, int)"><!-- --></A><H3>
+proxy</H3>
+<PRE>
+public <B>proxy</B>(int&nbsp;lport,
+             java.lang.String&nbsp;raddr,
+             int&nbsp;rport)</PRE>
+<DL>
+<DD>Create a server socket and start listening on the local port.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>lport</CODE> - local port<DD><CODE>raddr</CODE> - address of the destination<DD><CODE>rport</CODE> - port on the destination host</DL>
+</DD>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(java.lang.String[]&nbsp;args)</PRE>
+<DL>
+<DD>This method is called when the application is run on the commandline.
+ It takes two or three arguments:
+ usage: java proxy local-port destination-host destination-port<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>args</CODE> - The command line arguments</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="run()"><!-- --></A><H3>
+run</H3>
+<PRE>
+public void <B>run</B>()</PRE>
+<DL>
+<DD>Cycle around until an error occurs and wait for incoming connections.
+ An incoming connection will create two redirectors. One for
+ local-host - destination-host and one for destination-host - local-host.<DD><DL>
+<DT><B>Specified by: </B><DD>run in interface java.lang.Runnable</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="CharDisplayTest.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="telnet.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="proxy.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/serialized-form.html b/web/root/telnet/Documentation/Source/serialized-form.html
new file mode 100644
index 0000000000000000000000000000000000000000..72f77d6f637fcd0130360ce4bf12086ccbfa7673
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/serialized-form.html
@@ -0,0 +1,1635 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:36 CEST 1999 -->
+<TITLE>
+Serialized Form
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="serialized-form.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<CENTER>
+<H1>
+Serialized Form</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>display</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="display.CharDisplay"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="display/CharDisplay.html">display.CharDisplay</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+bottomMargin</H3>
+<PRE>
+int <B>bottomMargin</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+bufSize</H3>
+<PRE>
+int <B>bufSize</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+charArray</H3>
+<PRE>
+char[][] <B>charArray</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+charAttributes</H3>
+<PRE>
+int[][] <B>charAttributes</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+charDescent</H3>
+<PRE>
+int <B>charDescent</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+charHeight</H3>
+<PRE>
+int <B>charHeight</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+charWidth</H3>
+<PRE>
+int <B>charWidth</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+color</H3>
+<PRE>
+java.awt.Color[] <B>color</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+cursorX</H3>
+<PRE>
+int <B>cursorX</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+cursorY</H3>
+<PRE>
+int <B>cursorY</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+fm</H3>
+<PRE>
+java.awt.FontMetrics <B>fm</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+insets</H3>
+<PRE>
+java.awt.Insets <B>insets</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+maxBufSize</H3>
+<PRE>
+int <B>maxBufSize</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+normalFont</H3>
+<PRE>
+java.awt.Font <B>normalFont</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+raised</H3>
+<PRE>
+boolean <B>raised</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+resizeStrategy</H3>
+<PRE>
+int <B>resizeStrategy</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+scrBarPos</H3>
+<PRE>
+java.lang.String <B>scrBarPos</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+screenBase</H3>
+<PRE>
+int <B>screenBase</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+screenLocked</H3>
+<PRE>
+boolean <B>screenLocked</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+scrollBar</H3>
+<PRE>
+java.awt.Scrollbar <B>scrollBar</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+selectBegin</H3>
+<PRE>
+java.awt.Point <B>selectBegin</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+selectEnd</H3>
+<PRE>
+java.awt.Point <B>selectEnd</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+selectFrame</H3>
+<PRE>
+java.awt.Frame <B>selectFrame</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+selection</H3>
+<PRE>
+java.awt.TextArea <B>selection</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+sf</H3>
+<PRE>
+<A HREF="display/SoftFont.html">SoftFont</A> <B>sf</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+size</H3>
+<PRE>
+java.awt.Dimension <B>size</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+topMargin</H3>
+<PRE>
+int <B>topMargin</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+update</H3>
+<PRE>
+boolean[] <B>update</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+version</H3>
+<PRE>
+java.lang.String <B>version</B></PRE>
+<DL>
+<DD>If you need the runtime version, just ask this variable.</DL>
+<HR>
+
+<H3>
+windowBase</H3>
+<PRE>
+int <B>windowBase</B></PRE>
+<DL>
+</DL>
+
+<P>
+<A NAME="display.Terminal"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="display/Terminal.html">display.Terminal</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<A NAME="display.vt320"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="display/vt320.html">display.vt320</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+attributes</H3>
+<PRE>
+int <B>attributes</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+C</H3>
+<PRE>
+int <B>C</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+DCEvar</H3>
+<PRE>
+int <B>DCEvar</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+DCEvars</H3>
+<PRE>
+int[] <B>DCEvars</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+dcs</H3>
+<PRE>
+java.lang.String <B>dcs</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+display</H3>
+<PRE>
+<A HREF="display/CharDisplay.html">CharDisplay</A> <B>display</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Do</H3>
+<PRE>
+java.lang.String <B>Do</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Find</H3>
+<PRE>
+java.lang.String <B>Find</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+FunctionKey</H3>
+<PRE>
+java.lang.String[] <B>FunctionKey</B></PRE>
+<DL>
+<DD>Strings to send on function key presseic</DL>
+<HR>
+
+<H3>
+FunctionKeyAlt</H3>
+<PRE>
+java.lang.String[] <B>FunctionKeyAlt</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+FunctionKeyCtrl</H3>
+<PRE>
+java.lang.String[] <B>FunctionKeyCtrl</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+FunctionKeyShift</H3>
+<PRE>
+java.lang.String[] <B>FunctionKeyShift</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Help</H3>
+<PRE>
+java.lang.String <B>Help</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+host</H3>
+<PRE>
+<A HREF="display/TerminalHost.html">TerminalHost</A> <B>host</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Insert</H3>
+<PRE>
+java.lang.String <B>Insert</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+insertmode</H3>
+<PRE>
+int <B>insertmode</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KeyBacktab</H3>
+<PRE>
+java.lang.String <B>KeyBacktab</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KeyDown</H3>
+<PRE>
+java.lang.String <B>KeyDown</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KeyLeft</H3>
+<PRE>
+java.lang.String <B>KeyLeft</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KeyRight</H3>
+<PRE>
+java.lang.String <B>KeyRight</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KeyTab</H3>
+<PRE>
+java.lang.String <B>KeyTab</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KeyUp</H3>
+<PRE>
+java.lang.String <B>KeyUp</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP0</H3>
+<PRE>
+java.lang.String <B>KP0</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP1</H3>
+<PRE>
+java.lang.String <B>KP1</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP2</H3>
+<PRE>
+java.lang.String <B>KP2</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP3</H3>
+<PRE>
+java.lang.String <B>KP3</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP4</H3>
+<PRE>
+java.lang.String <B>KP4</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP5</H3>
+<PRE>
+java.lang.String <B>KP5</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP6</H3>
+<PRE>
+java.lang.String <B>KP6</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP7</H3>
+<PRE>
+java.lang.String <B>KP7</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP8</H3>
+<PRE>
+java.lang.String <B>KP8</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KP9</H3>
+<PRE>
+java.lang.String <B>KP9</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KPComma</H3>
+<PRE>
+java.lang.String <B>KPComma</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KPEnter</H3>
+<PRE>
+java.lang.String <B>KPEnter</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KPMinus</H3>
+<PRE>
+java.lang.String <B>KPMinus</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+KPPeriod</H3>
+<PRE>
+java.lang.String <B>KPPeriod</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+moveoutsidemargins</H3>
+<PRE>
+boolean <B>moveoutsidemargins</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+NextScn</H3>
+<PRE>
+java.lang.String <B>NextScn</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+normalcursor</H3>
+<PRE>
+int <B>normalcursor</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+osc</H3>
+<PRE>
+java.lang.String <B>osc</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+osn</H3>
+<PRE>
+java.lang.String <B>osn</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+PF1</H3>
+<PRE>
+java.lang.String <B>PF1</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+PF2</H3>
+<PRE>
+java.lang.String <B>PF2</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+PF3</H3>
+<PRE>
+java.lang.String <B>PF3</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+PF4</H3>
+<PRE>
+java.lang.String <B>PF4</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+pressedKey</H3>
+<PRE>
+int <B>pressedKey</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+pressedWhen</H3>
+<PRE>
+long <B>pressedWhen</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+PrevScn</H3>
+<PRE>
+java.lang.String <B>PrevScn</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+R</H3>
+<PRE>
+int <B>R</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Remove</H3>
+<PRE>
+java.lang.String <B>Remove</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Sa</H3>
+<PRE>
+int <B>Sa</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Sc</H3>
+<PRE>
+int <B>Sc</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Select</H3>
+<PRE>
+java.lang.String <B>Select</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+sendcrlf</H3>
+<PRE>
+boolean <B>sendcrlf</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Sr</H3>
+<PRE>
+int <B>Sr</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+statusmode</H3>
+<PRE>
+int <B>statusmode</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+Tabs</H3>
+<PRE>
+byte[] <B>Tabs</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+term_state</H3>
+<PRE>
+int <B>term_state</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+terminalID</H3>
+<PRE>
+java.lang.String <B>terminalID</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+useibmcharset</H3>
+<PRE>
+boolean <B>useibmcharset</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+vms</H3>
+<PRE>
+boolean <B>vms</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+vt52mode</H3>
+<PRE>
+int <B>vt52mode</B></PRE>
+<DL>
+</DL>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>modules</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="modules.BSXModule"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="modules/BSXModule.html">modules.BSXModule</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+bsxButton</H3>
+<PRE>
+java.awt.Button <B>bsxButton</B></PRE>
+<DL>
+<DD>the Buttons to switch on and off the logging and BSX handling</DL>
+<HR>
+
+<H3>
+bsxCheckIt</H3>
+<PRE>
+boolean <B>bsxCheckIt</B></PRE>
+<DL>
+<DD>the states of the Buttons</DL>
+<HR>
+
+<H3>
+BSXData</H3>
+<PRE>
+java.lang.String <B>BSXData</B></PRE>
+<DL>
+<DD>holds the BSX description, including the numbers of polygons and edges</DL>
+<HR>
+
+<H3>
+bsxWindow</H3>
+<PRE>
+modules.bsx.BSXDisplay <B>bsxWindow</B></PRE>
+<DL>
+<DD>The Frame, where the graphic is drawn</DL>
+<HR>
+
+<H3>
+clientVersion</H3>
+<PRE>
+java.lang.String <B>clientVersion</B></PRE>
+<DL>
+<DD>Client Version</DL>
+<HR>
+
+<H3>
+intEdges</H3>
+<PRE>
+int <B>intEdges</B></PRE>
+<DL>
+<DD>holds the number of edges in the current polygon as an int</DL>
+<HR>
+
+<H3>
+intPolys</H3>
+<PRE>
+int <B>intPolys</B></PRE>
+<DL>
+<DD>holds the number of polygons in the current description as an int</DL>
+<HR>
+
+<H3>
+intXPos</H3>
+<PRE>
+int <B>intXPos</B></PRE>
+<DL>
+<DD>holds the X position of the current object as an int</DL>
+<HR>
+
+<H3>
+intYPos</H3>
+<PRE>
+int <B>intYPos</B></PRE>
+<DL>
+<DD>holds the Y position of the current object as an int</DL>
+<HR>
+
+<H3>
+lastCommand</H3>
+<PRE>
+java.lang.String <B>lastCommand</B></PRE>
+<DL>
+<DD>lastCommand is a Statedescriptor.<BR>
+ if lastCommand.length()=4 then the entire Command has been read
+ else go on reading the command completly<BR>
+ Commands are: PRO SCE VIO DFS DFO TMS RMO RFS RQV PUR
+ additional commands are: BOM EOM LON LOF TXT which will not be supported 
+ by Regenbogen BSX java Client.<BR>
+ Commands are preceeded by a @</DL>
+<HR>
+
+<H3>
+lastState</H3>
+<PRE>
+int <B>lastState</B></PRE>
+<DL>
+<DD>lastState identifies what we have done last time we received a string
+ <UL>
+ <LI>-1 undefined -> used to mark succesful work
+ <LI> 0 nothing -> go on searching for a new command
+ <LI> 1 identifier -> we have to complete the identifier
+ <LI> 2 download -> we have to get more BSXData
+ </UL></DL>
+<HR>
+
+<H3>
+logButton</H3>
+<PRE>
+java.awt.Button <B>logButton</B></PRE>
+<DL>
+<DD>the Buttons to switch on and off the logging and BSX handling</DL>
+<HR>
+
+<H3>
+logging</H3>
+<PRE>
+boolean <B>logging</B></PRE>
+<DL>
+<DD>the states of the Buttons</DL>
+<HR>
+
+<H3>
+parent</H3>
+<PRE>
+<A HREF="telnet.html">telnet</A> <B>parent</B></PRE>
+<DL>
+<DD>Our parent, the telnet app.</DL>
+<HR>
+
+<H3>
+strEdges</H3>
+<PRE>
+java.lang.String <B>strEdges</B></PRE>
+<DL>
+<DD>holds the number of edges in the current polygon as a String</DL>
+<HR>
+
+<H3>
+strIdentifier</H3>
+<PRE>
+java.lang.String <B>strIdentifier</B></PRE>
+<DL>
+<DD>holds the identifier of the current object</DL>
+<HR>
+
+<H3>
+strPolys</H3>
+<PRE>
+java.lang.String <B>strPolys</B></PRE>
+<DL>
+<DD>holds the number of polygons in the current description as a String</DL>
+<HR>
+
+<H3>
+strXPos</H3>
+<PRE>
+java.lang.String <B>strXPos</B></PRE>
+<DL>
+<DD>holds the X position of the current object as a String</DL>
+<HR>
+
+<H3>
+strYPos</H3>
+<PRE>
+java.lang.String <B>strYPos</B></PRE>
+<DL>
+<DD>holds the Y position of the current object as a String</DL>
+<HR>
+
+<H3>
+toplevel</H3>
+<PRE>
+java.awt.Container <B>toplevel</B></PRE>
+<DL>
+<DD>the Container, wich is around us</DL>
+
+<P>
+<A NAME="modules.ButtonBar"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="modules/ButtonBar.html">modules.ButtonBar</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+buttons</H3>
+<PRE>
+java.util.Hashtable <B>buttons</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+fields</H3>
+<PRE>
+java.util.Hashtable <B>fields</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+parent</H3>
+<PRE>
+<A HREF="telnet.html">telnet</A> <B>parent</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+toplevel</H3>
+<PRE>
+java.awt.Container <B>toplevel</B></PRE>
+<DL>
+</DL>
+
+<P>
+<A NAME="modules.MudConnector"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="modules/MudConnector.html">modules.MudConnector</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+address</H3>
+<PRE>
+java.awt.Panel <B>address</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+app</H3>
+<PRE>
+<A HREF="telnet.html">telnet</A> <B>app</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+connectButton</H3>
+<PRE>
+java.awt.Button <B>connectButton</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+disconnectButton</H3>
+<PRE>
+java.awt.Button <B>disconnectButton</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+display</H3>
+<PRE>
+java.awt.List <B>display</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+index</H3>
+<PRE>
+java.util.Vector <B>index</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+indicator</H3>
+<PRE>
+java.awt.Label <B>indicator</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+info</H3>
+<PRE>
+java.awt.TextField <B>info</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+layouter</H3>
+<PRE>
+java.awt.CardLayout <B>layouter</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+progress</H3>
+<PRE>
+java.awt.Panel <B>progress</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+refreshButton</H3>
+<PRE>
+java.awt.Button <B>refreshButton</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+server</H3>
+<PRE>
+java.net.URL <B>server</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+showButton</H3>
+<PRE>
+java.awt.Button <B>showButton</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+url</H3>
+<PRE>
+java.lang.String <B>url</B></PRE>
+<DL>
+</DL>
+
+<P>
+<A NAME="modules.Script"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="modules/Script.html">modules.Script</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+applet</H3>
+<PRE>
+<A HREF="telnet.html">telnet</A> <B>applet</B></PRE>
+<DL>
+</DL>
+
+<P>
+<A NAME="modules.TextLabel"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="modules/TextLabel.html">modules.TextLabel</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+applet</H3>
+<PRE>
+<A HREF="telnet.html">telnet</A> <B>applet</B></PRE>
+<DL>
+</DL>
+
+<P>
+<HR SIZE="4" NOSHADE>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD ALIGN="center"><FONT SIZE="+2">
+<B>Package</B> <B>socket</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="socket.TimedOutException"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="socket/TimedOutException.html">socket.TimedOutException</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR SIZE="4" NOSHADE>
+<A NAME="appWrapper"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="appWrapper.html">appWrapper</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+applet</H3>
+<PRE>
+java.applet.Applet <B>applet</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+appletName</H3>
+<PRE>
+java.lang.String <B>appletName</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+f</H3>
+<PRE>
+frame <B>f</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+frameTitle</H3>
+<PRE>
+java.lang.String <B>frameTitle</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+loader</H3>
+<PRE>
+java.lang.Thread <B>loader</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+startButton</H3>
+<PRE>
+java.awt.Button <B>startButton</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+startLabel</H3>
+<PRE>
+java.lang.String <B>startLabel</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+stopLabel</H3>
+<PRE>
+java.lang.String <B>stopLabel</B></PRE>
+<DL>
+</DL>
+
+<P>
+<HR SIZE="4" NOSHADE>
+<A NAME="CharDisplayTest"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="CharDisplayTest.html">CharDisplayTest</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+attr</H3>
+<PRE>
+java.awt.Button <B>attr</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+buttons</H3>
+<PRE>
+java.awt.Panel <B>buttons</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+chars</H3>
+<PRE>
+java.awt.Button <B>chars</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+display</H3>
+<PRE>
+<A HREF="display/CharDisplay.html">CharDisplay</A> <B>display</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+fonts</H3>
+<PRE>
+java.awt.Choice <B>fonts</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+from</H3>
+<PRE>
+java.awt.TextField <B>from</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+info</H3>
+<PRE>
+java.awt.Button <B>info</B></PRE>
+<DL>
+</DL>
+
+<P>
+<HR SIZE="4" NOSHADE>
+<A NAME="telnet"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableSubHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class <A HREF="telnet.html">telnet</A> implements Serializable</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+<A NAME="serializedForm"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Serialized Fields</B></FONT></TD>
+</TR>
+</TABLE>
+
+<H3>
+address</H3>
+<PRE>
+java.lang.String <B>address</B></PRE>
+<DL>
+<DD>The host address to connect to. This is retrieved from the PARAM tag
+ "address".</DL>
+<HR>
+
+<H3>
+connected</H3>
+<PRE>
+boolean <B>connected</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+emulation</H3>
+<PRE>
+java.lang.String <B>emulation</B></PRE>
+<DL>
+<DD>Emulation type (default is vt320). This can be specified as the PARAM
+ tag "emulation".<DD><DL>
+<DT><B>See Also: </B><DD><CODE>term</CODE>, 
+<A HREF="display/Terminal.html"><CODE>Terminal</CODE></A>, 
+<A HREF="display/TerminalHost.html"><CODE>TerminalHost</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<H3>
+localecho</H3>
+<PRE>
+boolean <B>localecho</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+modules</H3>
+<PRE>
+java.util.Vector <B>modules</B></PRE>
+<DL>
+<DD>Dynamically loaded modules are stored here.</DL>
+<HR>
+
+<H3>
+params</H3>
+<PRE>
+java.util.Hashtable <B>params</B></PRE>
+<DL>
+<DD>This Hashtable contains information retrievable by getParameter() in case
+ the program is run as an application and the AppletStub is missing.</DL>
+<HR>
+
+<H3>
+parent</H3>
+<PRE>
+java.awt.Container <B>parent</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+port</H3>
+<PRE>
+int <B>port</B></PRE>
+<DL>
+<DD>The port number (default ist 23). This can be specified as the PARAM tag
+ "port".</DL>
+<HR>
+
+<H3>
+proxy</H3>
+<PRE>
+java.lang.String <B>proxy</B></PRE>
+<DL>
+<DD>The proxy ip address. If this variable is set telnet will try to connect
+ to this address and then send a string to tell the relay where the
+ target host is.<DD><DL>
+<DT><B>See Also: </B><DD><CODE>address</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<H3>
+proxyport</H3>
+<PRE>
+int <B>proxyport</B></PRE>
+<DL>
+<DD>The proxy port number. This is the port where the relay is expected to
+ listen for incoming connections.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="proxy.html"><CODE>proxy</CODE></A>, 
+<CODE>port</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<H3>
+t</H3>
+<PRE>
+java.lang.Thread <B>t</B></PRE>
+<DL>
+</DL>
+<HR>
+
+<H3>
+term</H3>
+<PRE>
+<A HREF="display/Terminal.html">Terminal</A> <B>term</B></PRE>
+<DL>
+<DD>The terminal emulation (dynamically loaded).<DD><DL>
+<DT><B>See Also: </B><DD><CODE>emulation</CODE>, 
+<A HREF="display/Terminal.html"><CODE>Terminal</CODE></A>, 
+<A HREF="display/TerminalHost.html"><CODE>TerminalHost</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<H3>
+tio</H3>
+<PRE>
+<A HREF="socket/TelnetIO.html">TelnetIO</A> <B>tio</B></PRE>
+<DL>
+<DD>The telnet io methods.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="socket/TelnetIO.html"><CODE>TelnetIO</CODE></A></DL>
+</DD>
+</DL>
+
+<P>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Package</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="serialized-form.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/socket/StatusPeer.html b/web/root/telnet/Documentation/Source/socket/StatusPeer.html
new file mode 100644
index 0000000000000000000000000000000000000000..1303ddddaae9f3d91224f93973d832b34ec653e6
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/socket/StatusPeer.html
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:35 CEST 1999 -->
+<TITLE>
+: Interface  StatusPeer
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="StatusPeer.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+socket</FONT>
+<BR>
+Interface  StatusPeer</H2>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../telnet.html">telnet</A>, <A HREF="../socket/TelnetIO.html">TelnetIO</A></DD>
+</DL>
+<HR>
+<DL>
+<DT>public abstract interface <B>StatusPeer</B></DL>
+
+<P>
+StatusPeer -- interface for status messages
+ --
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/StatusPeer.html#notifyStatus(java.util.Vector)">notifyStatus</A></B>(java.util.Vector&nbsp;status)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called for the peer of the TelnetIO class if there is
+ a statuschange.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="notifyStatus(java.util.Vector)"><!-- --></A><H3>
+notifyStatus</H3>
+<PRE>
+public java.lang.Object <B>notifyStatus</B>(java.util.Vector&nbsp;status)</PRE>
+<DL>
+<DD>This method is called for the peer of the TelnetIO class if there is
+ a statuschange.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>status</CODE> - A Vector containing the key as element 0 and any arguments
+               from element 1 on.<DT><B>Returns:</B><DD>an object that matches the requested information or null<DT><B>See Also: </B><DD><A HREF="../socket/TelnetIO.html"><CODE>TelnetIO</CODE></A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="StatusPeer.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/socket/TelnetIO.html b/web/root/telnet/Documentation/Source/socket/TelnetIO.html
new file mode 100644
index 0000000000000000000000000000000000000000..f358437eb93a727bf20b8172cb2cdd42f15356c6
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/socket/TelnetIO.html
@@ -0,0 +1,408 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:36 CEST 1999 -->
+<TITLE>
+: Class  TelnetIO
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../socket/TelnetWrapper.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TelnetIO.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+socket</FONT>
+<BR>
+Class  TelnetIO</H2>
+<PRE>
+java.lang.Object
+  |
+  +--<B>socket.TelnetIO</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TelnetIO</B><DT>extends java.lang.Object<DT>implements <A HREF="../socket/StatusPeer.html">StatusPeer</A></DL>
+
+<P>
+Implements simple telnet io
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#TelnetIO()">TelnetIO</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#available()">available</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns bytes available to be read.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#connect(java.lang.String)">connect</A></B>(java.lang.String&nbsp;address)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect to the remote host at the default telnet port (23).</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;address,
+        int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect to the remote host at the specified port.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disconnect from remote host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#notifyStatus(java.util.Vector)">notifyStatus</A></B>(java.util.Vector&nbsp;status)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notify about current telnet status.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;byte[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#receive()">receive</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Read data from the remote host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#send(byte)">send</A></B>(byte&nbsp;b)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#send(byte[])">send</A></B>(byte[]&nbsp;buf)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Send data to the remote host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#setPeer(socket.StatusPeer)">setPeer</A></B>(<A HREF="../socket/StatusPeer.html">StatusPeer</A>&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the object to be notified about current status.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetIO.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the version of TelnetIO.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TelnetIO()"><!-- --></A><H3>
+TelnetIO</H3>
+<PRE>
+public <B>TelnetIO</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public java.lang.String <B>toString</B>()</PRE>
+<DL>
+<DD>Return the version of TelnetIO.<DD><DL>
+<DT><B>Overrides:</B><DD>toString in class java.lang.Object</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;address,
+                    int&nbsp;port)
+             throws java.io.IOException</PRE>
+<DL>
+<DD>Connect to the remote host at the specified port.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>address</CODE> - the symbolic host address<DD><CODE>port</CODE> - the numeric port<DT><B>See Also: </B><DD><A HREF="../socket/TelnetIO.html#disconnect()"><CODE>disconnect()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()
+                throws java.io.IOException</PRE>
+<DL>
+<DD>Disconnect from remote host.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../socket/TelnetIO.html#connect(java.lang.String, int)"><CODE>connect(java.lang.String, int)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public void <B>connect</B>(java.lang.String&nbsp;address)
+             throws java.io.IOException</PRE>
+<DL>
+<DD>Connect to the remote host at the default telnet port (23).<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>address</CODE> - the symbolic host address</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setPeer(socket.StatusPeer)"><!-- --></A><H3>
+setPeer</H3>
+<PRE>
+public void <B>setPeer</B>(<A HREF="../socket/StatusPeer.html">StatusPeer</A>&nbsp;obj)</PRE>
+<DL>
+<DD>Set the object to be notified about current status.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>obj</CODE> - object to be notified.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="available()"><!-- --></A><H3>
+available</H3>
+<PRE>
+public int <B>available</B>()
+              throws java.io.IOException</PRE>
+<DL>
+<DD>Returns bytes available to be read.  Since they haven't been
+ negotiated over, this could be misleading.
+ Most useful as a boolean value - "are any bytes available" -
+ rather than as an exact count of "how many ara available."<DD><DL>
+<DT><B>Throws:</B><DD>java.io.IOException - on problems with the socket connection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="receive()"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public byte[] <B>receive</B>()
+               throws java.io.IOException</PRE>
+<DL>
+<DD>Read data from the remote host. Blocks until data is available. 
+ Returns an array of bytes.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../socket/TelnetIO.html#send(byte[])"><CODE>send(byte[])</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="send(byte[])"><!-- --></A><H3>
+send</H3>
+<PRE>
+public void <B>send</B>(byte[]&nbsp;buf)
+          throws java.io.IOException</PRE>
+<DL>
+<DD>Send data to the remote host.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>buf</CODE> - array of bytes to send<DT><B>See Also: </B><DD><A HREF="../socket/TelnetIO.html#receive()"><CODE>receive()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="send(byte)"><!-- --></A><H3>
+send</H3>
+<PRE>
+public void <B>send</B>(byte&nbsp;b)
+          throws java.io.IOException</PRE>
+<DL>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="notifyStatus(java.util.Vector)"><!-- --></A><H3>
+notifyStatus</H3>
+<PRE>
+public java.lang.Object <B>notifyStatus</B>(java.util.Vector&nbsp;status)</PRE>
+<DL>
+<DD>Notify about current telnet status. This method is called top-down.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="../socket/StatusPeer.html#notifyStatus(java.util.Vector)">notifyStatus</A> in interface <A HREF="../socket/StatusPeer.html">StatusPeer</A><DT><B>Parameters:</B><DD><CODE>status</CODE> - contains status information</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;<A HREF="../socket/TelnetWrapper.html"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TelnetIO.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/socket/TelnetWrapper.html b/web/root/telnet/Documentation/Source/socket/TelnetWrapper.html
new file mode 100644
index 0000000000000000000000000000000000000000..e035970ef8f0538ae46e1cdda49c7cc31bbb4b80
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/socket/TelnetWrapper.html
@@ -0,0 +1,679 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:36 CEST 1999 -->
+<TITLE>
+: Class  TelnetWrapper
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../socket/TelnetIO.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TelnetWrapper.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+socket</FONT>
+<BR>
+Class  TelnetWrapper</H2>
+<PRE>
+java.lang.Object
+  |
+  +--<B>socket.TelnetWrapper</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TelnetWrapper</B><DT>extends java.lang.Object</DL>
+
+<P>
+Wrapper for a Java Telnet call. 
+ To use, make a new TelnetWrapper() with the name or IP address of a host.
+ Then, for most uses, the easiest way is to call setPrompt() with the
+ expected prompt, then call login(), and a sequence of sendLine()'s
+ until you get what you want done.
+ <P>
+ If you don't know the prompt ahead of time, you have to do a sequence of
+ send() and wait() or receiveUntil() calls.  send() sends a string across
+ the telnet connection. Add a '\r' to the end if you want to
+ complete a command. wait() waits for an exact string from the other side
+ of the telnet connection, and returns nothing,
+ receiveUntil() also waits for a string, but returns all the data
+ that it received while waiting, including the string itself. 
+ Use this if you want the output from a command. Please note that
+ the telnet connection will usually echo the sent command. 
+ <P>
+ sendLine() is generally better, since it adds the '\r'
+ automatically, waits for the prompt before returning, and returns all
+ data received before the prompt, with the prompt itself cut off the
+ end, and the sent command cut off the beginning. login() and
+ sendLine() are implemented using send(), wait() and receiveUntil().
+ They can be freely mixed and matched.
+ <P>
+ Here is a simple example of the use of TelnetWrapper:
+ <PRE>
+ // creates a new file in /tmp, lists the directory to prove it done
+ {
+   TelnetWrapper telnet = new TelnetWrapper("123.45.78.90");
+
+   // setting the correct prompt ahead of time is very important 
+   // if you want to use login and sendLine
+   telnet.setPrompt("$ ");
+   telnet.login("loginname", "password");
+
+   // this is how you have to do it otherwise
+   telnet.send("touch /tmp/TELNET_WRAPPER" + "\r");
+   telnet.wait("$ ");
+
+   // sendLine 1: adds the \r automatically, 2: waits for the prompt
+   // before returning 3: returns what was printed from the command
+   String ls = telnet.sendLine("ls /tmp");
+   System.out.println(ls);
+
+   // clean up
+   telnet.disconnect();
+ } 
+ </PRE>
+<P>
+<DL>
+<DT><B>Version: </B><DD>0.2 5/15/97 - added comments, replaced String += with
+    StringBuffer.append() in receiveUntil(), added port constructor</DD>
+<DT><B>Author: </B><DD>George Ruban 3/4/97</DD>
+<DT><B>See Also: </B><DD><A HREF="../socket/TelnetIO.html"><CODE>TelnetIO</CODE></A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#debug">debug</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set to true for System.out.println debugging.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#TelnetWrapper(java.lang.String)">TelnetWrapper</A></B>(java.lang.String&nbsp;host)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connects to the default telnet port on the given host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#TelnetWrapper(java.lang.String, int)">TelnetWrapper</A></B>(java.lang.String&nbsp;host,
+              int&nbsp;port)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connects to a specific telnet port on the given host.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#available()">available</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns bytes available to be read.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ends the telnet connection.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#finalize()">finalize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ends the telnet connection.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#login(java.lang.String, java.lang.String)">login</A></B>(java.lang.String&nbsp;loginName,
+      java.lang.String&nbsp;password)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logs in as a particular user and password.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#main(java.lang.String[])">main</A></B>(java.lang.String[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Telnet test driver.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#receive()">receive</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a String from the telnet connection.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;byte[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#receiveBytes()">receiveBytes</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a byte array.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#receiveUntil(java.lang.String)">receiveUntil</A></B>(java.lang.String&nbsp;token)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns all data received up until a certain token.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#receiveUntil(java.lang.String, long)">receiveUntil</A></B>(java.lang.String&nbsp;token,
+             long&nbsp;timeout)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns all data received up until a certain token.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#send(byte[])">send</A></B>(byte[]&nbsp;buf)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends bytes over the telnet connection.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#send(java.lang.String)">send</A></B>(java.lang.String&nbsp;s)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a String to the remote host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#sendLine(java.lang.String)">sendLine</A></B>(java.lang.String&nbsp;command)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a line to the remote host, returns all data before the prompt.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#setDefaultPrompt(java.lang.String)">setDefaultPrompt</A></B>(java.lang.String&nbsp;prompt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the default prompt used by all TelnetWrappers.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#setLogin(java.lang.String, java.lang.String)">setLogin</A></B>(java.lang.String&nbsp;login,
+         java.lang.String&nbsp;password)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the default login used by TelnetWrappers.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#setPrompt(java.lang.String)">setPrompt</A></B>(java.lang.String&nbsp;prompt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the expected prompt.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#unsetLogin()">unsetLogin</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Turns off the default login of TelnetWrappers.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#wait(java.lang.String)">wait</A></B>(java.lang.String&nbsp;token)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Skip any received data until the token appears.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../socket/TelnetWrapper.html#wait(java.lang.String, long)">wait</A></B>(java.lang.String&nbsp;token,
+     long&nbsp;timeout)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wait for a String or a timeout.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+toString, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="debug"><!-- --></A><H3>
+debug</H3>
+<PRE>
+public boolean <B>debug</B></PRE>
+<DL>
+<DD>Set to true for System.out.println debugging.</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TelnetWrapper(java.lang.String)"><!-- --></A><H3>
+TelnetWrapper</H3>
+<PRE>
+public <B>TelnetWrapper</B>(java.lang.String&nbsp;host)
+              throws java.io.IOException</PRE>
+<DL>
+<DD>Connects to the default telnet port on the given host. 
+ If the defaultLogin and defaultPassword are non-null, attempts login.</DL>
+<HR>
+
+<A NAME="TelnetWrapper(java.lang.String, int)"><!-- --></A><H3>
+TelnetWrapper</H3>
+<PRE>
+public <B>TelnetWrapper</B>(java.lang.String&nbsp;host,
+                     int&nbsp;port)
+              throws java.io.IOException</PRE>
+<DL>
+<DD>Connects to a specific telnet port on the given host. 
+ If the defaultLogin and defaultPassword are non-null, attempts login.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="wait(java.lang.String)"><!-- --></A><H3>
+wait</H3>
+<PRE>
+public void <B>wait</B>(java.lang.String&nbsp;token)
+          throws java.io.IOException</PRE>
+<DL>
+<DD>Skip any received data until the token appears. 
+ More efficient than receiveUntil, but liable to fail on large
+ tokens that can be spread over several "send"s. In that case,
+ consider using receiveUntil and ignoring the return value.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>token</CODE> - String to wait for<DT><B>Throws:</B><DD>java.io.IOException - on problems with the socket connection<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#receiveUntil(java.lang.String)"><CODE>receiveUntil(java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="wait(java.lang.String, long)"><!-- --></A><H3>
+wait</H3>
+<PRE>
+public void <B>wait</B>(java.lang.String&nbsp;token,
+                 long&nbsp;timeout)
+          throws java.io.IOException,
+                 <A HREF="../socket/TimedOutException.html">TimedOutException</A></PRE>
+<DL>
+<DD>Wait for a String or a timeout. 
+ If time runs out, throws a TimedOutException.
+ Sleeps in intervals of 100 milliseconds until either receiving the
+ token or timeout.
+ <P>
+ More efficient than receiveUntil, but liable to fail on large
+ tokens that can be spread over several "send"s. In that case,
+ consider using receiveUntil and ignoring the return value.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>token</CODE> - String to wait for<DD><CODE>timeout</CODE> - time in milliseconds to wait (negative means wait forever)<DT><B>Throws:</B><DD>java.io.IOException - on problems with the socket connection<DD><A HREF="../socket/TimedOutException.html">TimedOutException</A> - if time runs out before token received<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#receiveUntil(java.lang.String, long)"><CODE>receiveUntil(String, long)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="available()"><!-- --></A><H3>
+available</H3>
+<PRE>
+public int <B>available</B>()
+              throws java.io.IOException</PRE>
+<DL>
+<DD>Returns bytes available to be read.  Since they haven't been
+ negotiated over, this could be misleading...</DL>
+<HR>
+
+<A NAME="receive()"><!-- --></A><H3>
+receive</H3>
+<PRE>
+public java.lang.String <B>receive</B>()
+                         throws java.io.IOException</PRE>
+<DL>
+<DD>Returns a String from the telnet connection. Blocks
+ until one is available. No guarantees that the string is in
+ any way complete.
+ NOTE: uses Java 1.0.2 style String-bytes conversion.</DL>
+<HR>
+
+<A NAME="receiveBytes()"><!-- --></A><H3>
+receiveBytes</H3>
+<PRE>
+public byte[] <B>receiveBytes</B>()
+                    throws java.io.IOException</PRE>
+<DL>
+<DD>Returns a byte array. Blocks until data is available.</DL>
+<HR>
+
+<A NAME="receiveUntil(java.lang.String)"><!-- --></A><H3>
+receiveUntil</H3>
+<PRE>
+public java.lang.String <B>receiveUntil</B>(java.lang.String&nbsp;token)
+                              throws java.io.IOException</PRE>
+<DL>
+<DD>Returns all data received up until a certain token.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>token</CODE> - String to wait for<DT><B>Throws:</B><DD>java.io.IOException - on problems with the socket connection<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#wait(java.lang.String)"><CODE>wait(java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="receiveUntil(java.lang.String, long)"><!-- --></A><H3>
+receiveUntil</H3>
+<PRE>
+public java.lang.String <B>receiveUntil</B>(java.lang.String&nbsp;token,
+                                     long&nbsp;timeout)
+                              throws java.io.IOException,
+                                     <A HREF="../socket/TimedOutException.html">TimedOutException</A></PRE>
+<DL>
+<DD>Returns all data received up until a certain token.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>token</CODE> - String to wait for<DD><CODE>timeout</CODE> - time in milliseconds to wait (negative means wait forever)<DT><B>Throws:</B><DD>java.io.IOException - on problems with the socket connection<DD><A HREF="../socket/TimedOutException.html">TimedOutException</A> - if time runs out before token received<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#wait(java.lang.String, long)"><CODE>wait(String, long)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="send(java.lang.String)"><!-- --></A><H3>
+send</H3>
+<PRE>
+public void <B>send</B>(java.lang.String&nbsp;s)
+          throws java.io.IOException</PRE>
+<DL>
+<DD>Sends a String to the remote host.
+ NOTE: uses Java 1.0.2 style String-bytes conversion.<DD><DL>
+<DT><B>Throws:</B><DD>java.io.IOException - on problems with the socket connection</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="sendLine(java.lang.String)"><!-- --></A><H3>
+sendLine</H3>
+<PRE>
+public java.lang.String <B>sendLine</B>(java.lang.String&nbsp;command)
+                          throws java.io.IOException</PRE>
+<DL>
+<DD>Sends a line to the remote host, returns all data before the prompt.
+ Since telnet seems to rely on carriage returns ('\r'), 
+ one will be appended to the sent string, if necessary.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>command</CODE> - command line to send<DT><B>Returns:</B><DD>whatever data the command produced before the prompt.<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#setPrompt(java.lang.String)"><CODE>setPrompt(java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="send(byte[])"><!-- --></A><H3>
+send</H3>
+<PRE>
+public void <B>send</B>(byte[]&nbsp;buf)
+          throws java.io.IOException</PRE>
+<DL>
+<DD>Sends bytes over the telnet connection.</DL>
+<HR>
+
+<A NAME="login(java.lang.String, java.lang.String)"><!-- --></A><H3>
+login</H3>
+<PRE>
+public void <B>login</B>(java.lang.String&nbsp;loginName,
+                  java.lang.String&nbsp;password)
+           throws java.io.IOException</PRE>
+<DL>
+<DD>Logs in as a particular user and password. 
+ Returns after receiving prompt.</DL>
+<HR>
+
+<A NAME="setPrompt(java.lang.String)"><!-- --></A><H3>
+setPrompt</H3>
+<PRE>
+public void <B>setPrompt</B>(java.lang.String&nbsp;prompt)</PRE>
+<DL>
+<DD>Sets the expected prompt. 
+ If this function is not explicitly called, the default prompt is used.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#setDefaultPrompt(java.lang.String)"><CODE>setDefaultPrompt(java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDefaultPrompt(java.lang.String)"><!-- --></A><H3>
+setDefaultPrompt</H3>
+<PRE>
+public static void <B>setDefaultPrompt</B>(java.lang.String&nbsp;prompt)</PRE>
+<DL>
+<DD>Sets the default prompt used by all TelnetWrappers.
+ This can be specifically overridden for a specific instance.
+ The default prompt starts out as "$ " until this function is called.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#setPrompt(java.lang.String)"><CODE>setPrompt(java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setLogin(java.lang.String, java.lang.String)"><!-- --></A><H3>
+setLogin</H3>
+<PRE>
+public static void <B>setLogin</B>(java.lang.String&nbsp;login,
+                            java.lang.String&nbsp;password)</PRE>
+<DL>
+<DD>Sets the default login used by TelnetWrappers.
+ If this method is called with non-null login and password,
+ all TelnetWrappers will attempt to login when first created.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>login</CODE> - login name to use<DD><CODE>password</CODE> - password to use<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#login(java.lang.String, java.lang.String)"><CODE>login(java.lang.String, java.lang.String)</CODE></A>, 
+<A HREF="../socket/TelnetWrapper.html#unsetLogin()"><CODE>unsetLogin()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="unsetLogin()"><!-- --></A><H3>
+unsetLogin</H3>
+<PRE>
+public static void <B>unsetLogin</B>()</PRE>
+<DL>
+<DD>Turns off the default login of TelnetWrappers.
+ After this method is called, TelnetWrappers will not
+ login until that method is explicitly called.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="../socket/TelnetWrapper.html#setLogin(java.lang.String, java.lang.String)"><CODE>setLogin(java.lang.String, java.lang.String)</CODE></A>, 
+<A HREF="../socket/TelnetWrapper.html#login(java.lang.String, java.lang.String)"><CODE>login(java.lang.String, java.lang.String)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public void <B>disconnect</B>()
+                throws java.io.IOException</PRE>
+<DL>
+<DD>Ends the telnet connection.</DL>
+<HR>
+
+<A NAME="finalize()"><!-- --></A><H3>
+finalize</H3>
+<PRE>
+public void <B>finalize</B>()</PRE>
+<DL>
+<DD>Ends the telnet connection.<DD><DL>
+<DT><B>Overrides:</B><DD>finalize in class java.lang.Object</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(java.lang.String[]&nbsp;args)
+                 throws java.io.IOException</PRE>
+<DL>
+<DD>Telnet test driver.
+ Modeled after the IOtest.java example in the Telnet Applet.
+ Logs in to "host", creates a timestamped file in /tmp, lists the
+ /tmp directory to System.out, disconnects.  Shows off several
+ TelnetWrapper methods.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>args</CODE> - host login password prompt</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../socket/TelnetIO.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TelnetWrapper.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/socket/TimedOutException.html b/web/root/telnet/Documentation/Source/socket/TimedOutException.html
new file mode 100644
index 0000000000000000000000000000000000000000..4f180a154cd49b90bba26bc9098a7ea7afd11efe
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/socket/TimedOutException.html
@@ -0,0 +1,228 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:36 CEST 1999 -->
+<TITLE>
+: Class  TimedOutException
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TimedOutException.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+socket</FONT>
+<BR>
+Class  TimedOutException</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.lang.Throwable
+        |
+        +--java.lang.Exception
+              |
+              +--java.io.IOException
+                    |
+                    +--<B>socket.TimedOutException</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>TimedOutException</B><DT>extends java.io.IOException</DL>
+
+<P>
+Exception thrown when a Telnet connection takes too long
+ before receiving a specified String token.
+<P>
+<DL>
+<DT><B>Version: </B><DD>0.1 7/30/97</DD>
+<DT><B>Author: </B><DD>George Ruban</DD>
+<DT><B>See Also: </B><DD><A HREF="../serialized-form.html#socket.TimedOutException">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../socket/TimedOutException.html#TimedOutException()">TimedOutException</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="../socket/TimedOutException.html#TimedOutException(java.lang.String)">TimedOutException</A></B>(java.lang.String&nbsp;message)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="methods_inherited_from_class_java.lang.Throwable"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Throwable</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>fillInStackTrace, 
+getLocalizedMessage, 
+getMessage, 
+printStackTrace, 
+printStackTrace, 
+printStackTrace, 
+toString</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="TimedOutException()"><!-- --></A><H3>
+TimedOutException</H3>
+<PRE>
+public <B>TimedOutException</B>()</PRE>
+<DL>
+</DL>
+<HR>
+
+<A NAME="TimedOutException(java.lang.String)"><!-- --></A><H3>
+TimedOutException</H3>
+<PRE>
+public <B>TimedOutException</B>(java.lang.String&nbsp;message)</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;PREV CLASS&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="TimedOutException.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#methods_inherited_from_class_java.lang.Throwable">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;METHOD</FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/socket/package-frame.html b/web/root/telnet/Documentation/Source/socket/package-frame.html
new file mode 100644
index 0000000000000000000000000000000000000000..9fb033f62a534bdd31ebbb2cd719fbe42c3d40e2
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/socket/package-frame.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Package socket
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+<FONT size="+1" ID="FrameTitleFont">
+<A HREF="../socket/package-summary.html" TARGET="classFrame">socket</A></FONT>
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT ID="FrameItemFont">
+<BR>
+<A HREF="StatusPeer.html" TARGET="classFrame"><I>StatusPeer</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT ID="FrameItemFont">
+<BR>
+<A HREF="TelnetIO.html" TARGET="classFrame">TelnetIO</A>
+<BR>
+<A HREF="TelnetWrapper.html" TARGET="classFrame">TelnetWrapper</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%">
+<TR>
+<TD NOWRAP><FONT size="+1" ID="FrameHeadingFont">
+Exceptions</FONT>&nbsp;
+<FONT ID="FrameItemFont">
+<BR>
+<A HREF="TimedOutException.html" TARGET="classFrame">TimedOutException</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/socket/package-summary.html b/web/root/telnet/Documentation/Source/socket/package-summary.html
new file mode 100644
index 0000000000000000000000000000000000000000..9e552b3660439ddc009507989973041fedb938f0
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/socket/package-summary.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: Package socket
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<H2>
+Package socket
+</H2>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="StatusPeer.html"><I>StatusPeer</I></A></B></TD>
+<TD>StatusPeer -- interface for status messages
+ --</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="TelnetIO.html">TelnetIO</A></B></TD>
+<TD>Implements simple telnet io</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="TelnetWrapper.html">TelnetWrapper</A></B></TD>
+<TD>Wrapper for a Java Telnet call.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Exception Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="TimedOutException.html">TimedOutException</A></B></TD>
+<TD>Exception thrown when a Telnet connection takes too long
+ before receiving a specified String token.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/socket/package-tree.html b/web/root/telnet/Documentation/Source/socket/package-tree.html
new file mode 100644
index 0000000000000000000000000000000000000000..166ea991e812cad41ac4d5ef047b743c9968bc86
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/socket/package-tree.html
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:32 CEST 1999 -->
+<TITLE>
+: socket Class Hierarchy
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package socket
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies: </B><DD><A HREF="../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class socket.<A HREF="../socket/TelnetIO.html"><B>TelnetIO</B></A> (implements socket.<A HREF="../socket/StatusPeer.html">StatusPeer</A>)
+<LI TYPE="circle">class socket.<A HREF="../socket/TelnetWrapper.html"><B>TelnetWrapper</B></A><LI TYPE="circle">class java.lang.Throwable (implements java.io.Serializable)
+<UL>
+<LI TYPE="circle">class java.lang.Exception<UL>
+<LI TYPE="circle">class java.io.IOException<UL>
+<LI TYPE="circle">class socket.<A HREF="../socket/TimedOutException.html"><B>TimedOutException</B></A></UL>
+</UL>
+</UL>
+</UL>
+</UL>
+<H2>
+Interface Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">interface socket.<A HREF="../socket/StatusPeer.html"><B>StatusPeer</B></A></UL>
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <FONT ID="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="../help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../modules/package-tree.html"><B>PREV</B></A>&nbsp;
+&nbsp;NEXT</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-tree.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/Source/stylesheet.css b/web/root/telnet/Documentation/Source/stylesheet.css
new file mode 100644
index 0000000000000000000000000000000000000000..539689f8414b8ea28dfa954527aa59993b904108
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/stylesheet.css
@@ -0,0 +1,29 @@
+/* Javadoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults  */
+
+/* Page background color */
+body { background-color: #FFFFFF }
+
+/* Table colors */
+#TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
+#TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
+#TableRowColor         { background: #FFFFFF } /* White */
+
+/* Font used in left-hand frame lists */
+#FrameTitleFont   { font-size: normal; font-family: normal }
+#FrameHeadingFont { font-size: normal; font-family: normal }
+#FrameItemFont    { font-size: normal; font-family: normal }
+
+/* Example of smaller, sans-serif font in frames */
+/* #FrameItemFont  { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */
+
+/* Navigation bar fonts and colors */
+#NavBarCell1    { background-color:#EEEEFF;}/* Light mauve */
+#NavBarCell1Rev { background-color:#00008B;}/* Dark Blue */
+#NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
+#NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
+
+#NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+#NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+
diff --git a/web/root/telnet/Documentation/Source/telnet.html b/web/root/telnet/Documentation/Source/telnet.html
new file mode 100644
index 0000000000000000000000000000000000000000..1a3fcf180fbc0a92e6e1cdfa01035752ea03e03d
--- /dev/null
+++ b/web/root/telnet/Documentation/Source/telnet.html
@@ -0,0 +1,955 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Wed Jun 16 11:44:33 CEST 1999 -->
+<TITLE>
+: Class  telnet
+</TITLE>
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_top"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="proxy.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="telnet.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+Class  telnet</H2>
+<PRE>
+java.lang.Object
+  |
+  +--java.awt.Component
+        |
+        +--java.awt.Container
+              |
+              +--java.awt.Panel
+                    |
+                    +--java.applet.Applet
+                          |
+                          +--<B>telnet</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>telnet</B><DT>extends java.applet.Applet<DT>implements java.lang.Runnable, <A HREF="display/TerminalHost.html">TerminalHost</A>, <A HREF="socket/StatusPeer.html">StatusPeer</A></DL>
+
+<P>
+A telnet implementation that supports different terminal emulations.
+<P>
+<DL>
+<DT><B>Version: </B><DD>$Id$</DD>
+<DT><B>Author: </B><DD>Matthias L. Jugel, Marcus Meißner</DD>
+<DT><B>See Also: </B><DD><A HREF="serialized-form.html#telnet">Serialized Form</A></DL>
+<HR>
+
+<P>
+<!-- ======== INNER CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#address">address</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The host address to connect to.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#emulation">emulation</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Emulation type (default is vt320).</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.util.Vector</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#modules">modules</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dynamically loaded modules are stored here.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.util.Hashtable</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#params">params</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This Hashtable contains information retrievable by getParameter() in case
+ the program is run as an application and the AppletStub is missing.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#port">port</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The port number (default ist 23).</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#proxy">proxy</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The proxy ip address.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#proxyport">proxyport</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The proxy port number.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="display/Terminal.html">Terminal</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#term">term</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The terminal emulation (dynamically loaded).</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="socket/TelnetIO.html">TelnetIO</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#tio">tio</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The telnet io methods.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="fields_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Fields inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>BOTTOM_ALIGNMENT,  
+CENTER_ALIGNMENT,  
+LEFT_ALIGNMENT,  
+RIGHT_ALIGNMENT,  
+TOP_ALIGNMENT</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE><B><A HREF="telnet.html#telnet()">telnet</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#connect()">connect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect to the specified host and port but don't break existing 
+ connections.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#connect(java.lang.String)">connect</A></B>(java.lang.String&nbsp;host)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect to the specified host and port but don't break existing 
+ connections.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#connect(java.lang.String, int)">connect</A></B>(java.lang.String&nbsp;host,
+        int&nbsp;prt)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect to the specified host and port but don't break existing 
+ connections.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#disconnect()">disconnect</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disconnect from the remote host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#getAppletInfo()">getAppletInfo</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve the current version of the applet.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#getParameter(java.lang.String)">getParameter</A></B>(java.lang.String&nbsp;name)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;We override the Applet method getParameter() to be able to handle 
+ parameters even as application.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.String[][]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#getParameterInfo()">getParameterInfo</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve parameter tag information.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#init()">init</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize applet.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#main(java.lang.String[])">main</A></B>(java.lang.String[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The main function is called on startup of the application.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#notifyStatus(java.util.Vector)">notifyStatus</A></B>(java.util.Vector&nbsp;status)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method is called when telnet needs to be notified of status changes.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#run()">run</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try to read data from the sockets and put it on the terminal.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#send(java.lang.String)">send</A></B>(java.lang.String&nbsp;str)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Send a String to the remote host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#start()">start</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Upon start of the applet try to create a new connection.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#stop()">stop</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disconnect when the applet is stopped.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#writeToSocket(java.lang.String)">writeToSocket</A></B>(java.lang.String&nbsp;str)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Send a String to the remote Host.</TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="telnet.html#writeToUser(java.lang.String)">writeToUser</A></B>(java.lang.String&nbsp;str)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Send a String to the users terminal</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.applet.Applet"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.applet.Applet</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>destroy, 
+getAppletContext, 
+getAudioClip, 
+getAudioClip, 
+getCodeBase, 
+getDocumentBase, 
+getImage, 
+getImage, 
+getLocale, 
+isActive, 
+newAudioClip, 
+play, 
+play, 
+resize, 
+resize, 
+setStub, 
+showStatus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Panel"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Panel</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>addNotify</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Container"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Container</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>add, 
+add, 
+add, 
+add, 
+add, 
+addContainerListener, 
+addImpl, 
+countComponents, 
+deliverEvent, 
+doLayout, 
+findComponentAt, 
+findComponentAt, 
+getAlignmentX, 
+getAlignmentY, 
+getComponent, 
+getComponentAt, 
+getComponentAt, 
+getComponentCount, 
+getComponents, 
+getInsets, 
+getLayout, 
+getMaximumSize, 
+getMinimumSize, 
+getPreferredSize, 
+insets, 
+invalidate, 
+isAncestorOf, 
+layout, 
+list, 
+list, 
+locate, 
+minimumSize, 
+paint, 
+paintComponents, 
+paramString, 
+preferredSize, 
+print, 
+printComponents, 
+processContainerEvent, 
+processEvent, 
+remove, 
+remove, 
+removeAll, 
+removeContainerListener, 
+removeNotify, 
+setFont, 
+setLayout, 
+update, 
+validate, 
+validateTree</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.awt.Component"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.awt.Component</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>action, 
+add, 
+addComponentListener, 
+addFocusListener, 
+addInputMethodListener, 
+addKeyListener, 
+addMouseListener, 
+addMouseMotionListener, 
+addPropertyChangeListener, 
+addPropertyChangeListener, 
+bounds, 
+checkImage, 
+checkImage, 
+coalesceEvents, 
+contains, 
+contains, 
+createImage, 
+createImage, 
+disable, 
+disableEvents, 
+dispatchEvent, 
+enable, 
+enable, 
+enableEvents, 
+enableInputMethods, 
+firePropertyChange, 
+getBackground, 
+getBounds, 
+getBounds, 
+getColorModel, 
+getComponentOrientation, 
+getCursor, 
+getDropTarget, 
+getFont, 
+getFontMetrics, 
+getForeground, 
+getGraphics, 
+getHeight, 
+getInputContext, 
+getInputMethodRequests, 
+getLocation, 
+getLocation, 
+getLocationOnScreen, 
+getName, 
+getParent, 
+getPeer, 
+getSize, 
+getSize, 
+getToolkit, 
+getTreeLock, 
+getWidth, 
+getX, 
+getY, 
+gotFocus, 
+handleEvent, 
+hasFocus, 
+hide, 
+imageUpdate, 
+inside, 
+isDisplayable, 
+isDoubleBuffered, 
+isEnabled, 
+isFocusTraversable, 
+isLightweight, 
+isOpaque, 
+isShowing, 
+isValid, 
+isVisible, 
+keyDown, 
+keyUp, 
+list, 
+list, 
+list, 
+location, 
+lostFocus, 
+mouseDown, 
+mouseDrag, 
+mouseEnter, 
+mouseExit, 
+mouseMove, 
+mouseUp, 
+move, 
+nextFocus, 
+paintAll, 
+postEvent, 
+prepareImage, 
+prepareImage, 
+printAll, 
+processComponentEvent, 
+processFocusEvent, 
+processInputMethodEvent, 
+processKeyEvent, 
+processMouseEvent, 
+processMouseMotionEvent, 
+remove, 
+removeComponentListener, 
+removeFocusListener, 
+removeInputMethodListener, 
+removeKeyListener, 
+removeMouseListener, 
+removeMouseMotionListener, 
+removePropertyChangeListener, 
+removePropertyChangeListener, 
+repaint, 
+repaint, 
+repaint, 
+repaint, 
+requestFocus, 
+reshape, 
+setBackground, 
+setBounds, 
+setBounds, 
+setComponentOrientation, 
+setCursor, 
+setDropTarget, 
+setEnabled, 
+setForeground, 
+setLocale, 
+setLocation, 
+setLocation, 
+setName, 
+setSize, 
+setSize, 
+setVisible, 
+show, 
+show, 
+size, 
+toString, 
+transferFocus</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#EEEEFF" ID="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" ID="TableRowColor">
+<TD><CODE>clone, 
+equals, 
+finalize, 
+getClass, 
+hashCode, 
+notify, 
+notifyAll, 
+wait, 
+wait, 
+wait</CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="tio"><!-- --></A><H3>
+tio</H3>
+<PRE>
+protected <A HREF="socket/TelnetIO.html">TelnetIO</A> <B>tio</B></PRE>
+<DL>
+<DD>The telnet io methods.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="socket/TelnetIO.html"><CODE>TelnetIO</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="term"><!-- --></A><H3>
+term</H3>
+<PRE>
+protected <A HREF="display/Terminal.html">Terminal</A> <B>term</B></PRE>
+<DL>
+<DD>The terminal emulation (dynamically loaded).<DD><DL>
+<DT><B>See Also: </B><DD><CODE>emulation</CODE>, 
+<A HREF="display/Terminal.html"><CODE>Terminal</CODE></A>, 
+<A HREF="display/TerminalHost.html"><CODE>TerminalHost</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="address"><!-- --></A><H3>
+address</H3>
+<PRE>
+protected java.lang.String <B>address</B></PRE>
+<DL>
+<DD>The host address to connect to. This is retrieved from the PARAM tag
+ "address".</DL>
+<HR>
+
+<A NAME="port"><!-- --></A><H3>
+port</H3>
+<PRE>
+protected int <B>port</B></PRE>
+<DL>
+<DD>The port number (default ist 23). This can be specified as the PARAM tag
+ "port".</DL>
+<HR>
+
+<A NAME="proxy"><!-- --></A><H3>
+proxy</H3>
+<PRE>
+protected java.lang.String <B>proxy</B></PRE>
+<DL>
+<DD>The proxy ip address. If this variable is set telnet will try to connect
+ to this address and then send a string to tell the relay where the
+ target host is.<DD><DL>
+<DT><B>See Also: </B><DD><CODE>address</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="proxyport"><!-- --></A><H3>
+proxyport</H3>
+<PRE>
+protected int <B>proxyport</B></PRE>
+<DL>
+<DD>The proxy port number. This is the port where the relay is expected to
+ listen for incoming connections.<DD><DL>
+<DT><B>See Also: </B><DD><A HREF="proxy.html"><CODE>proxy</CODE></A>, 
+<CODE>port</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="emulation"><!-- --></A><H3>
+emulation</H3>
+<PRE>
+protected java.lang.String <B>emulation</B></PRE>
+<DL>
+<DD>Emulation type (default is vt320). This can be specified as the PARAM
+ tag "emulation".<DD><DL>
+<DT><B>See Also: </B><DD><CODE>term</CODE>, 
+<A HREF="display/Terminal.html"><CODE>Terminal</CODE></A>, 
+<A HREF="display/TerminalHost.html"><CODE>TerminalHost</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="modules"><!-- --></A><H3>
+modules</H3>
+<PRE>
+protected java.util.Vector <B>modules</B></PRE>
+<DL>
+<DD>Dynamically loaded modules are stored here.</DL>
+<HR>
+
+<A NAME="params"><!-- --></A><H3>
+params</H3>
+<PRE>
+public java.util.Hashtable <B>params</B></PRE>
+<DL>
+<DD>This Hashtable contains information retrievable by getParameter() in case
+ the program is run as an application and the AppletStub is missing.</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="telnet()"><!-- --></A><H3>
+telnet</H3>
+<PRE>
+public <B>telnet</B>()</PRE>
+<DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+<TR BGCOLOR="#CCCCFF" ID="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getAppletInfo()"><!-- --></A><H3>
+getAppletInfo</H3>
+<PRE>
+public java.lang.String <B>getAppletInfo</B>()</PRE>
+<DL>
+<DD>Retrieve the current version of the applet.<DD><DL>
+<DT><B>Returns:</B><DD>String a string with the version information.<DT><B>Overrides:</B><DD>getAppletInfo in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getParameterInfo()"><!-- --></A><H3>
+getParameterInfo</H3>
+<PRE>
+public java.lang.String[][] <B>getParameterInfo</B>()</PRE>
+<DL>
+<DD>Retrieve parameter tag information. This includes the tag information from
+ terminal and loaded modules.<DD><DL>
+<DT><B>Returns:</B><DD>String an array of array of string with tag information<DT><B>Overrides:</B><DD>getParameterInfo in class java.applet.Applet<DT><B>See Also: </B><DD><CODE>Applet.getParameterInfo()</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getParameter(java.lang.String)"><!-- --></A><H3>
+getParameter</H3>
+<PRE>
+public java.lang.String <B>getParameter</B>(java.lang.String&nbsp;name)</PRE>
+<DL>
+<DD>We override the Applet method getParameter() to be able to handle 
+ parameters even as application.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>name</CODE> - The name of the queried parameter.<DT><B>Returns:</B><DD>the value of the parameter<DT><B>Overrides:</B><DD>getParameter in class java.applet.Applet<DT><B>See Also: </B><DD><CODE>Applet.getParameter(java.lang.String)</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="main(java.lang.String[])"><!-- --></A><H3>
+main</H3>
+<PRE>
+public static void <B>main</B>(java.lang.String[]&nbsp;args)</PRE>
+<DL>
+<DD>The main function is called on startup of the application.<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="init()"><!-- --></A><H3>
+init</H3>
+<PRE>
+public void <B>init</B>()</PRE>
+<DL>
+<DD>Initialize applet. This method reads the PARAM tags "address",
+ "port" and "emulation". The emulation class is loaded dynamically.
+ It also loads modules given as parameter "module#<nr>".<DD><DL>
+<DT><B>Overrides:</B><DD>init in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="start()"><!-- --></A><H3>
+start</H3>
+<PRE>
+public void <B>start</B>()</PRE>
+<DL>
+<DD>Upon start of the applet try to create a new connection.<DD><DL>
+<DT><B>Overrides:</B><DD>start in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="stop()"><!-- --></A><H3>
+stop</H3>
+<PRE>
+public final void <B>stop</B>()</PRE>
+<DL>
+<DD>Disconnect when the applet is stopped.<DD><DL>
+<DT><B>Overrides:</B><DD>stop in class java.applet.Applet</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="run()"><!-- --></A><H3>
+run</H3>
+<PRE>
+public void <B>run</B>()</PRE>
+<DL>
+<DD>Try to read data from the sockets and put it on the terminal.
+ This is done until the thread dies or an error occurs.<DD><DL>
+<DT><B>Specified by: </B><DD>run in interface java.lang.Runnable</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect()"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public boolean <B>connect</B>()</PRE>
+<DL>
+<DD>Connect to the specified host and port but don't break existing 
+ connections. Connects to the host and port specified in the tags.<DD><DL>
+<DT><B>Returns:</B><DD>false if connection was unsuccessful</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public boolean <B>connect</B>(java.lang.String&nbsp;host)</PRE>
+<DL>
+<DD>Connect to the specified host and port but don't break existing 
+ connections. Uses the port specified in the tags or 23.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>host</CODE> - destination host address</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="connect(java.lang.String, int)"><!-- --></A><H3>
+connect</H3>
+<PRE>
+public boolean <B>connect</B>(java.lang.String&nbsp;host,
+                       int&nbsp;prt)</PRE>
+<DL>
+<DD>Connect to the specified host and port but don't break existing 
+ connections.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>host</CODE> - destination host address<DD><CODE>prt</CODE> - destination hosts port</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="disconnect()"><!-- --></A><H3>
+disconnect</H3>
+<PRE>
+public boolean <B>disconnect</B>()</PRE>
+<DL>
+<DD>Disconnect from the remote host.<DD><DL>
+<DT><B>Returns:</B><DD>false if there was a problem disconnecting.</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="send(java.lang.String)"><!-- --></A><H3>
+send</H3>
+<PRE>
+public boolean <B>send</B>(java.lang.String&nbsp;str)</PRE>
+<DL>
+<DD>Send a String to the remote host. Implements display.TerminalHost<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="display/TerminalHost.html#send(java.lang.String)">send</A> in interface <A HREF="display/TerminalHost.html">TerminalHost</A><DT><B>Parameters:</B><DD><CODE>s</CODE> - String to be sent<DT><B>Returns:</B><DD>true if we are connected<DT><B>See Also: </B><DD><A HREF="display/TerminalHost.html"><CODE>TerminalHost</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="writeToSocket(java.lang.String)"><!-- --></A><H3>
+writeToSocket</H3>
+<PRE>
+public boolean <B>writeToSocket</B>(java.lang.String&nbsp;str)</PRE>
+<DL>
+<DD>Send a String to the remote Host.<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>str</CODE> - String to be sent<DT><B>Returns:</B><DD>true if we are connected<DT><B>See Also: </B><DD><A HREF="modules/BSXModule.html"><CODE>BSXModule</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="writeToUser(java.lang.String)"><!-- --></A><H3>
+writeToUser</H3>
+<PRE>
+public void <B>writeToUser</B>(java.lang.String&nbsp;str)</PRE>
+<DL>
+<DD>Send a String to the users terminal<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>str</CODE> - String to be displayed<DT><B>Returns:</B><DD>void<DT><B>See Also: </B><DD><A HREF="modules/BSXModule.html"><CODE>BSXModule</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="notifyStatus(java.util.Vector)"><!-- --></A><H3>
+notifyStatus</H3>
+<PRE>
+public java.lang.Object <B>notifyStatus</B>(java.util.Vector&nbsp;status)</PRE>
+<DL>
+<DD>This method is called when telnet needs to be notified of status changes.<DD><DL>
+<DT><B>Specified by: </B><DD><A HREF="socket/StatusPeer.html#notifyStatus(java.util.Vector)">notifyStatus</A> in interface <A HREF="socket/StatusPeer.html">StatusPeer</A><DT><B>Parameters:</B><DD><CODE>status</CODE> - Vector of status information.<DT><B>Returns:</B><DD>an object of the information requested.<DT><B>See Also: </B><DD><A HREF="socket/StatusPeer.html"><CODE>StatusPeer</CODE></A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+<!-- ========== START OF NAVBAR ========== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" ID="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-summary.html"><FONT ID="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="package-summary.html"><FONT ID="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" ID="NavBarCell1Rev"> &nbsp;<FONT ID="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="overview-tree.html"><FONT ID="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="deprecated-list.html"><FONT ID="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="index-all.html"><FONT ID="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" ID="NavBarCell1">    <A HREF="help-doc.html"><FONT ID="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="proxy.html"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" ID="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="telnet.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: &nbsp;INNER&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" ID="NavBarCell3"><FONT SIZE="-2">
+DETAIL: &nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<!-- =========== END OF NAVBAR =========== -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/images/bin.gif b/web/root/telnet/Documentation/images/bin.gif
new file mode 100644
index 0000000000000000000000000000000000000000..57f865726866125d4318578574a52ebd455943f6
Binary files /dev/null and b/web/root/telnet/Documentation/images/bin.gif differ
diff --git a/web/root/telnet/Documentation/images/border.gif b/web/root/telnet/Documentation/images/border.gif
new file mode 100644
index 0000000000000000000000000000000000000000..af596665f7e367c40df12ce77197b5cccb367b76
Binary files /dev/null and b/web/root/telnet/Documentation/images/border.gif differ
diff --git a/web/root/telnet/Documentation/images/check.gif b/web/root/telnet/Documentation/images/check.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6dca2af7fd56c87de9e9cfcf0dd866fe0506f892
Binary files /dev/null and b/web/root/telnet/Documentation/images/check.gif differ
diff --git a/web/root/telnet/Documentation/images/checkS.gif b/web/root/telnet/Documentation/images/checkS.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c86ec6c9b9744567cf8d63d73d8263497e975abc
Binary files /dev/null and b/web/root/telnet/Documentation/images/checkS.gif differ
diff --git a/web/root/telnet/Documentation/images/doc.gif b/web/root/telnet/Documentation/images/doc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..238fdb14e1c5956f0d2a8adad207147bed7509f1
Binary files /dev/null and b/web/root/telnet/Documentation/images/doc.gif differ
diff --git a/web/root/telnet/Documentation/images/flash.gif b/web/root/telnet/Documentation/images/flash.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1942939e04fa4afb5e6b9298d323f0b74fc5e7a9
Binary files /dev/null and b/web/root/telnet/Documentation/images/flash.gif differ
diff --git a/web/root/telnet/Documentation/images/left.gif b/web/root/telnet/Documentation/images/left.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ba9bb0addc873a50162a66f16f964d7b94b36177
Binary files /dev/null and b/web/root/telnet/Documentation/images/left.gif differ
diff --git a/web/root/telnet/Documentation/images/mail.gif b/web/root/telnet/Documentation/images/mail.gif
new file mode 100644
index 0000000000000000000000000000000000000000..864ed206d575baa9e780086cf7f35ecd69d00624
Binary files /dev/null and b/web/root/telnet/Documentation/images/mail.gif differ
diff --git a/web/root/telnet/Documentation/images/star.gif b/web/root/telnet/Documentation/images/star.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b079be2c501f965e2afd106c2d979c43938a6616
Binary files /dev/null and b/web/root/telnet/Documentation/images/star.gif differ
diff --git a/web/root/telnet/Documentation/images/testit.gif b/web/root/telnet/Documentation/images/testit.gif
new file mode 100644
index 0000000000000000000000000000000000000000..51474b21d704de2a8421db05df59a94eb48a36f8
Binary files /dev/null and b/web/root/telnet/Documentation/images/testit.gif differ
diff --git a/web/root/telnet/Documentation/images/user.gif b/web/root/telnet/Documentation/images/user.gif
new file mode 100644
index 0000000000000000000000000000000000000000..12608388b86a9fdeaa4d92eb5b40606483f3604c
Binary files /dev/null and b/web/root/telnet/Documentation/images/user.gif differ
diff --git a/web/root/telnet/Documentation/index.html b/web/root/telnet/Documentation/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..e2c861089f5655e3e6f6c6d3699048b2a472789a
--- /dev/null
+++ b/web/root/telnet/Documentation/index.html
@@ -0,0 +1,696 @@
+<!doctype HTML public "-//W30//DTD W3 HTML 3.0//EN">
+<HTML>
+  <HEAD><TITLE>The Java(tm) Telnet Applet: Documentation</TITLE></HEAD>
+  <BODY BGCOLOR="#ffffff">
+    <A NAME="TOP"></A>
+    <H1>The <A HREF="http://java.sun.com/">Java<SUP>(tm)</SUP></A>
+      Telnet Applet: Documentation</H1>
+    &copy; 1996-98 <A HREF="mailto:leo@mud.de">Matthias L. Jugel</A>,
+    <A HREF="mailto:marcus@mud.de">Marcus Mei&szlig;ner</A> 
+    <HR>
+    <P> 
+      The package contains several parts of which the most important one is the
+      <B>Telnet Applet/Application</B>. Select from the list below what you
+      are interested in. If you only want to use the applet choose <A
+	HREF="#SetupTelnet">Telnet</A> from <B>Setup</B> and if you want to use the
+      <A HREF="Source/packages.html">packages</A> in your own programming, select the
+      appropriate from <B>Source Code</B>.
+    <H3 ALIGN=CENTER><A HREF="#Readme">READ THIS FIRST</A></H3>
+    <H3 ALIGN=CENTER><A HREF="#SetupDoc">Setup</A></H3>
+    <P ALIGN=CENTER>
+      <B>[
+	<A HREF="#SetupTelnet">Telnet</A> |
+	<A HREF="#SetupTerminal">Terminal Emulation</A> |
+	<A HREF="#SetupModules">Modules</A> 
+	]<BR>[
+	<A HREF="#SetupAppWrapper">Applet Wrapper</A> |
+	<A HREF="#SetupProxy">Proxy Server</A>
+	]</B>
+    <H3 ALIGN=CENTER><A HREF="#SourceDoc">Source Code</A></H3>
+    <P ALIGN=CENTER>
+      <B>[
+	<A HREF="Source/telnet.html">Telnet</A> |
+	<A HREF="#SourceTerminal">Terminal Emulation</A> |
+	<A HREF="#SourceModules">Modules</A>
+	]<BR>[
+	<A HREF="Source/appWrapper.html">Applet Wrapper</A> |
+	<A HREF="Source/proxy.html">Proxy Server</A>
+	]<BR>[
+	<A HREF="Source/packages.html">Packages</A> |
+	<A HREF="Source/AllNames.html">Field and Method Index</A> |
+	<A HREF="Source/tree.html">Class Tree</A>
+	]</B>
+    <P>
+      <A HREF="../index.html">
+	<IMG SRC="images/left.gif" BORDER=0 ALT="[BACK]"></A>
+      <B>Get the <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet">latest
+	  version</A> here!</B>
+    <HR>
+
+    <A NAME="Readme"></A>
+    <H1>READ THIS FIRST</H1>
+
+    We found that some people have no knowlegde whatsoever of java and its
+    restrictions. We have compiled a few questions and answers here as well
+    as some reasons why you should or should not use 
+    <B>The Java<SUP>(tm)</SUP> Telnet Applet</B>:
+
+    <DL>
+      <DT><B>Some web page told me I need telnet, is this it?</B>
+      <DD>Yes and No! The Applet is a fully featured Telnet and Terminal
+	  emulator, but usually you're better off using the program that
+	  comes with your system. Most of the UNIX based systems have very
+	  good terminal emulators (xterm) and alway have a telnet 
+	  application. Windows 95 comes with a telnet if you have the network
+	  stuff installed it's there: c:\windows\telnet.exe. It should be
+	  sufficient. If you want better terminal emulation and <I>colours</I>
+	  the better choice is <B>The Java<SUP>(tm)</SUP> Telnet Applet</B>!
+	  <P>
+      <DT><B>I cannot connect to some.where.com? It only says 
+          &quot;Trying some.where.com ...&quot;</B>
+      <DD>A Java applet is restricted in several ways. One of the restrictions
+	  is that it may <I>only</I> connect to the web server where it was
+	  downloaded from! So if you put the applet on <I>www.where.com</I> but
+	  set the &quot;address&quot; field to <I>some.where.com</I> you 
+	  won't get a connection. Read about our 
+	  <A HREF="#SetupProxy">relayd daemons</A>!
+          <P>
+      <DT><B>But I loaded the HTML file from my harddisk and it still does
+             not work!</B>
+      <DD>Netscape and Internet Explorer do not accept your hard disk as 
+          secure space. So they will prevent the applet from accessing any
+	  resource, such as the network. You may overcome that by adding the
+          directory where the applet is stored to your &quot;CLASSPATH&quot;
+	  environment variable <I>before</I> running the browser.
+	  <P>
+    </DL>
+    <HR>
+    <A NAME="SetupDoc"></A>
+    <H1>Setup Documentation</H1>
+    <A NAME="SetupTelnet"></A>
+    <H2>How to setup the Telnet Applet</H2>
+    Make sure, you got the
+    <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet">latest version</A>
+    of the Java<SUP>(tm)</SUP> Telnet Applet. Refer to the
+    <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet/index.download.html">
+      download page</A> on how to get it and how to
+    extract the files from the archive. After successfully extracting the complete
+    package you should have a directory <B>Telnet/</B> containing <B>*.html</B>,
+    <B>*.java</B> and <B>*.class</B> files as well as the directores
+    <B>Documentation/</B>, <B>display/</B>, <B>modules/</B>, <B>socket/</B> and
+    <B>tools</B>.<P>
+      To install the applet on your web page you need as least the following files
+      and directories. Make sure that all files and directories are <B>readable
+	by other users</B>!
+    <PRE>
+  index.test.html
+  telnet.class
+  appWrapper.class
+  display/
+  display/SoftFont.class
+  display/CharDisplay.class
+  display/Terminal.class
+  display/TerminalHost.class
+  display/vt320.class
+  socket/
+  socket/TelnetIO.class
+  socket/StatusPeer.class
+  modules/
+  modules/Module.class
+  modules/Script.class
+  modules/ButtonBar.class
+  modules/MudConnector.class
+    </PRE>
+    Now edit <B>index.test.html</B> to adapt it to your needs or look at the
+    example below! The file is documented and if you have questions about
+    the <I>Modules</I> refer to the
+    <A HREF="#SetupModules">Module Documentation</A> or look at the <A
+      HREF="Source/Package-modules.html">Source Code</A>. You will find, that not
+    <B>telnet.class</B> is loaded as applet, but <B>appWrapper.class</B> instead.
+    This is necessary to enable the <B>detach</B> feature!
+    <P>
+    <DL>
+      <DT><B><I>Important Note:</I></B>
+      <DD>We would appreciate to see <B>credits</B> on a page using the applet
+	which includes a link to the <I>
+	  <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet">applets home
+	    page</A></I> and names of the <I>authors</I> as mentioned on
+	<A HREF="#TOP">top</A> of this page. You may simply use our
+	<A HREF="../index.test.html">test page</A> and edit it to your needs.<BR>
+	In response we will include a link to your page on our
+	<I><A HREF="user.html">user page</A></I>, if you like.
+    </DL>
+    <P>
+      The telnet applet can be customized using the following parameters:
+    <PRE>
+    &lt;PARAM NAME=address    VALUE="tanis.first.gmd.de"&gt;
+    &lt;PARAM NAME=port       VALUE="23"&gt;
+    &lt;PARAM NAME=emulation  VALUE="vt320"&gt;
+
+    &lt;PARAM NAME=proxy      VALUE="www.first.gmd.de"&gt;
+    &lt;PARAM NAME=proxyport  VALUE="31415"&gt;
+    </PRE>
+    The <B><I>proxy</I></B> and <B><I>proxyport</I></B> parameters may be left
+    out. They are needed if your target host is NOT the same as your web server
+    and you are using the <A HREF="#mrelayd">relay daemon</A>.
+    <P>
+      <A NAME="Example_1"></A>
+    <H3>Example:</H3>
+    (all possible parameters)
+    <PRE>
+    &lt;APPLET CODE="<A HREF="Source/appWrapper.html">appWrapper.class</A>" WIDTH=600 HEIGHT=480&gt;
+
+    &lt;!-- appWrapper parameters --&gt;
+    &lt;PARAM NAME="applet"      VALUE="<A HREF="Source/telnet.html">telnet</A>"&gt;
+
+    &lt;!-- optional (WIDTH and HEIGHT should be changed!) --&gt;
+    &lt;PARAM NAME="startButton" VALUE="Connect to www.first.gmd.de!"&gt;
+    &lt;PARAM NAME="stopButton" VALUE="Shutdown telnet!"&gt;
+    &lt;PARAM NAME="frameTitle" VALUE="The Java Telnet Applet: WWW"&gt;
+
+    &lt;!-- applet parameters: address and port and emulation --&gt;
+    &lt;PARAM NAME="address"     VALUE="www.first.gmd.de"&gt;
+    &lt;PARAM NAME="port"        VALUE="23"&gt;
+    &lt;PARAM NAME="emulation"   VALUE="vt320"&gt;
+
+    &lt;!-- terminal emulation parameters (optional)--&gt;
+    &lt;PARAM NAME="VTscrollbar" VALUE="true"&gt;
+    &lt;PARAM NAME="VTresize"    VALUE="font"&gt;
+    &lt;PARAM NAME="VTfont"      VALUE="Courier"&gt;
+    &lt;PARAM NAME="VTfontsize"  VALUE="13"&gt;
+    &lt;PARAM NAME="VTid"        VALUE="vt220"&gt;
+    &lt;PARAM NAME="VTcharset"   VALUE="ibm"&gt;
+
+    &lt;!-- module parameters: #1 is a buttonbar (optional) --&gt;
+    &lt;PARAM NAME="module#1"    VALUE="<A HREF="#ButtonBar">ButtonBar</A>@North"&gt;
+    &lt;PARAM NAME="1#Button"    VALUE="connect|\$connect()"&gt;
+    &lt;PARAM NAME="2#Button"    VALUE="disconnect|\$disconnect()"&gt;
+    &lt;PARAM NAME="3#Button"    VALUE="Detach/Delete Window|\$detach()"&gt;
+    &lt;PARAM NAME="4#Button"    VALUE="Send:|\@send@\r\n"&gt;
+    &lt;PARAM NAME="5#Input"     VALUE="send#10|who"&gt;
+
+    &lt;!-- module parameter: #2 is a scripting module (optional) --&gt;
+    &lt;PARAM NAME="module#2"    VALUE="<A HREF="#Script">Script</A>"&gt;
+    &lt;PARAM NAME="script"      VALUE="login:|leo"&gt;
+
+    &lt;!-- make sure, non-java-capable browser get a message: --&gt;
+    &lt;B&gt;
+    Your Browser seems to have no <A HREF="http://java.sun.com/">Java</A>
+    support. Please get a new browser or enable Java to see this applet!
+    &lt;/B&gt;
+    &lt;/APPLET&gt;
+    </PRE>
+    <P>
+    <HR>
+    <A NAME="SetupTerminal"></A>
+    <H2>Setting up the Terminal Emulation</H2>
+    The Terminal Emulation is a very important part of the Telnet Applet, because
+    it enables you to use programs that make use of certain features of hardware
+    terminals like <B>VT100</B> or <B>ANSI</B>. Supplied with the package is an
+    almost <B>VT320 compliant</B> terminal emulation, that should include the two
+    mentioned earlier. This means that the applet can do colors, even if the
+    original <B>VT320</B> terminal cannot!<P>
+      The applet supports the <B><I>special graphical character set</I></B> of VT
+      terminals. The new implementation supports all graphical characters with a
+      small drawback. The more graphical characters on the screen the slower is the
+      display. We will remove the current implementation when full UNICODE support
+      is available from all browsers (full JDK 1.2 compatibility).
+    <P>
+      To configure the terminal emulation look at the list of parameters below:<BR>
+      <I>Note:</I> Default values are typeset in <I>italics</I> and other possible
+      values in <B>bold</B>.
+    <DL>
+      <DT><TT><B>&lt;PARAM NAME="localecho" VALUE="<I>auto</I>"&gt;</B></TT>
+      <DD>Sets the mode the local echo should be handled. If using auto,
+        or if this parameter is not present, the applet autodetects localecho
+        mode using telnet option negotiation. If set to <I>no</I>, nothing
+        will be echoed, ever. Any other value enables every character to be 
+	echoed.
+      <DT><TT><B>&lt;PARAM NAME="VTcolumns" VALUE="<I>80</I>"&gt;</B></TT>
+      <DD>Sets the columns of the terminal initially. If the parameter
+	VTresize is set to <B>screen</B> this may change, else it is fixed.
+      <DT><B><TT>&lt;PARAM NAME="VTrows" VALUE="<I>24</I>"&gt;</TT></B>
+      <DD>Sets the rows of the terminal initially. If the parameter
+	value of VTresize <B>screen</B> this may change!
+      <DT><B><TT>&lt;PARAM NAME="VTfont" VALUE="<I>Courier</I>"&gt;</TT></B>
+      <DD>Sets the font to be used for the terminal. It is recommended to
+	use <I>Courier</I> or at least a fixed width font.
+      <DT><B><TT>&lt;PARAM NAME="VTfontsize" VALUE="<I>14</I>"&gt;</TT></B>
+      <DD>Sets the font size for the terminal. If the parameter 
+	value of VTresize is set to <B>font</B> this may change!
+      <DT><B><TT>&lt;PARAM NAME="VTresize" VALUE="<I>font</I>"&gt;</TT></B>
+      <DD>This parameter determines what the terminal should do if the window
+	is resized. The default setting <I><B>font</B></I> will result in 
+	resizing the font until is matches the window best. Other possible 
+	values are <B>none</B> or <B>screen</B>. <B>none</B> will let nothing
+	happen and <B>screen</B> will let the display try to change the
+	amount of rows and columns to match the window best.
+      <DT><B><TT>&lt;PARAM NAME="VTscrollbar" VALUE="<I>false</I>"&gt;</TT></B>
+      <DD>Setting this parameter to <B>true</B> will add a scrollbar west to
+	the terminal. Other possible values include <B>left</B> to put the
+	scrollbar on the left side of the terminal and <B>right</B> to put it
+	explicitely to the right side.
+      <DT><B><TT>&lt;PARAM NAME="VTid" VALUE="<I>vt320</I>"&gt;</TT></B>
+      <DD>This parameter will override the terminal id <I>vt320</I>. It may
+	be used to determine special terminal abilities of VT Terminals.
+      <DT><B><TT>&lt;PARAM NAME="VTbuffer" VALUE="<I>xx</I>"&gt;</TT></B>
+      <DD>Initially this parameter is the same as the VTrows parameter. It
+	cannot be less than the amount of rows on the display. It determines
+	the available scrollback buffer.
+      <DT><B><TT>&lt;PARAM NAME="VTcharset" VALUE="<I>none</I>"&gt</TT></B>
+      <DD>Setting this parameter to <B>ibm</B> will enable mapping of ibm
+	characters (as used in PC BBS systems) to UNICODE characters. Note 
+	that those special characters probably won't show on UNIX systems
+	due to lack in X11 UNICODE support.
+      <DT><B><TT>&lt;PARAM NAME="VTvms" VALUE="<I>false</I>"&gt</TT></B>
+      <DD>Setting this parameter to <B>true</B> will change the Backspace key
+        into a delete key, cause the numeric keypad keys to emit VT100
+        codes when Ctrl is pressed, and make other VMS-important keyboard
+        definitions.
+      <DT><B><TT>&lt;PARAM NAME="F<I>nr</I>" VALUE="<I>string</I>"&gt</TT></B>
+      <DD>Function keys from <I>F1</I> to <I>F20</I> are programmable. You can
+        install any possible string including special characters, such as 
+        <TABLE BORDER>
+	<TR><TD><TT>\e</TT></TD><TD>Escape</TD><TD></TD>
+	    <TD><TT>\b</TT></TD><TD>Backspace</TD><TD></TD>
+	    <TD><TT>\n</TT></TD><TD>Newline</TD><TD></TD>
+	    <TD><TT>\r</TT></TD><TD>Return</TD>
+	    <TD><TT>\xxxx</TT></TD><TD>Character xxxx (decimal)</TD>
+        </TABLE>
+    </DL>
+    <P>
+      Please look at the <A HREF="#Example_1">example above</A>.
+    <P>
+    <HR>
+    <A NAME="SetupModules"></A>
+    <H2>Setting up Modules</H2>
+    Another feature of the Java<SUP>(tm)</SUP> Telnet Applet is the ability to
+    dynamically load <B>modules</B>. A module is a java class that is loaded
+    after the applet has been initialized and may be used to <I>enhance</I> the
+    user interface or to background work in some way.<P>
+      To load a module a special parameter has to be added to the applet PARAM tags:
+    <P>
+      <TT><B>&lt;PARAM NAME=module#<I>number</I> VALUE="<I>modulename</I>@<I>direction</I>"&gt;</B>
+      </TT>
+    <UL>
+      <LI><B><I>number</I></B> is a sequence number, used by the applet to
+	determine the modules. Numbers must be adjacent or modules may not
+	be loaded.
+      <LI><B><I>modulename</I></B> is the name of the modules to be
+	loaded. Modules already in the package are described below.
+      <LI><B>@<I>direction</I></B> is the position of the applet in relation to
+	the window. Possible values are: <B>North, South, East, West</B>. The
+	module will then be placed accordingly. It is <I>not</I> possible to
+	place two modules at the same position! <I>The positional parameter may
+	  be left out and the module will then be placed <B>North</B></I>.
+    </UL>
+    <P>
+
+      At the moment the package features three modules:
+    <DL>
+      <DT><A HREF="#ButtonBar"><B>ButtonBar</B></A>
+      <DD>The ButtonBar is a modules to enhance the user interface. Using
+	PARAM tags <B>buttons</B> and <B>input fields</B> can be added to
+	send text to the remote host or to <B>detach</B> the applet.<P>
+      <DT><A HREF="#Script"><B>Script</B></A>
+      <DD>Sometimes it is useful to have simple script abilities. This module
+	<B>executes a script</B> based on text received from the remote host.
+	<P>
+      <DT><A HREF="#MudConnector"><B>MudConnector</B></A>
+      <DD>This module is a special program for the <A
+	  HREF="http://www.mudconnect.com">Mud Connector</A> by Andrew Cowan. It
+	loads a list of muds and displays information like host and port.
+    </DL>
+    <P>
+      <A NAME="ButtonBar"></A>
+    <H3>The ButtonBar</H3>
+    The ButtonBar may be used to add <A HREF="#buttons">buttons</A> to the applet
+    that execute functions or simply send a specified text to the remote host.
+    In addition it is possible to specify <A HREF="#fields">input
+      fields</A> as external input means.<P>
+      To load the module include the following tag into the <B>.html</B> file
+      (example):<P>
+      <TT><B>&lt;PARAM NAME=module#<I>1</I> VALUE="<I>ButtonBar</I>"&gt;</B>
+      </TT><P>
+      Below is a description of possible PARAM tags and a description of supported
+      functions:
+    <DL>
+      <DT><A NAME="buttons"></A><B>Buttons:</B>
+      <DD><TT>&lt;PARAM NAME=<B><I>number</I></B>#Button VALUE=&quot;<B><I>buttontext</I></B>|<B><I>buttonaction</I></B>&quot;&gt;</TT>
+      <DD><B><I>number</I></B> is the sequence number and determines the place
+	of the button on the row.
+	<P>
+      <DD><B><I>buttontext</I></B> is a string displayed on the button.
+	<P>
+      <DD><A NAME="buttonaction"><B><I>buttonaction</I></B></A> may be one
+	of the following functions or strings<BR>
+	<FONT SIZE=-1>(<I>Note:</I> the backslash character
+	  in front of the dollar sign is mandatory!)</FONT>
+	<UL>
+	  <LI><TT><I>simple text</I></TT>
+	    to be sent to the remote host. Newline and/or carriage return
+	    characters may be added in C syntax <B>\n</B> and <B>\r</B>.
+	    To support unimplemented function keys the <B>\e</B> escape
+	    character may be useful. The <B>\b</B> backspace character is
+	    also supported.
+	    The text may contain <A HREF="#fieldreference"><B><I>field 
+		  reference(s)</I></B></A>.<BR>
+	    <P>
+	  <LI><TT>\$connect(<B><I>host</I></B>[,<B><I>port</I></B>])</TT> 
+	    tries to initiate a connection to the <B><I>host</I></B>
+	    at the <B><I>port</I></B>, if given. The standard port is
+	    23. <B><I>host</I></B> and <B><I>port</I></B> may be hostname
+	    and number or <A HREF="#fieldreference"><B><I>field
+		  reference(s)</I></B></A>. If a connection already exists
+	    nothing will happen.<BR>
+	    <FONT SIZE=-1>(<I>Note:</I> It is not allowed to have
+	      spaces anywhere inside the parenthesis!)</FONT>
+	    <P>
+	  <LI><TT>\$disconnect()</TT>
+	    terminates the current connection, but if there was no
+	    connection nothing will happen.
+	    <P>
+	  <LI><A NAME="detach"><TT>\$detach()</TT></A>
+	    detaches the applet from the web browser window and
+	    creates a new frame externally. This may be used to allow
+	    users to use the applet while browsing the web with the
+	    same browser window.<BR>
+	    <FONT SIZE=-1>(<I>Note:</I> You need to load the applet via the
+	      <A HREF="#SetupAppWrapper">Applet Wrapper</A> or
+	      it will not work properly!)</FONT>
+	</UL>
+	<P>
+      <DD><A NAME="Example_2"><B>Examples:</B></A><BR>
+	<FONT SIZE=-1>(<I>Note:</I> It makes sense if you look at the
+	  examples for <A HREF="#Example_3">input fields</A> below.)</FONT>
+	<PRE>
+       &lt;PARAM NAME=1#Button VALUE="HELP!|help\r\n"&gt;
+       &lt;PARAM NAME=2#Button VALUE="HELP:|help \@help@\r\n"&gt;
+       &lt;PARAM NAME=4#Button VALUE="simple|\$connect(localhost)"&gt;
+       &lt;PARAM NAME=5#Button VALUE="complete|\$connect(www,4711)"&gt;
+       &lt;PARAM NAME=6#Button VALUE="connect|\$connect(\@address@)"&gt;
+       &lt;PARAM NAME=8#Button VALUE="connect to port|\$connect(\@address@,\@port@)"&gt;
+       &lt;PARAM NAME=10#Button VALUE="window|\$detach()"&gt;
+	</PRE>
+	<P>
+	  <A NAME="fields"></A>
+      <DT><B>Input fields</B>
+      <DD><TT>&lt;PARAM NAME=<B><I>number</I></B>#Input VALUE=&quot;<B><I>fieldname</I></B>[#<I><B>length</B></I>]|<B><I>initial text</I></B>[|<B><I>action</I></B>]&quot;&gt;</TT>
+      <DD><B><I>number</I></B> is the sequence number and determines the place
+	of the field on the row.
+	<P>
+      <DD><A NAME="fieldreference"><B><I>fieldname</I></B></A> is a
+	symbolic name to reference the input field. A reference may be used in 
+	<A HREF="#buttonaction"><B><I>button actions</I></B></A> and
+	is constructed as follows:
+	<TT>\@<B><I>fieldname</I></B>@</TT>
+	The <B>\@fieldname@</B> macro will be replaced by the string entered in
+	the text field.
+	<P>
+      <DD><B><I>length</I></B> is the length of the input field in numbers of
+	characters.
+	<P>
+      <DD><B><I>initial text</I></B> is the text to be placed into the input
+	field on startup
+	<P>
+      <DD><B><I>action</I></B> may be used similar to a 
+	<A HREF="#buttonaction"><B><I>button action</I></B></A>. This action 
+	will be used if the users presses Return in the inputfield. Leave
+	empty if you only want to use a button to send the text!
+	<P>
+      <DD><A NAME="Example_3"><B>Examples:</B></A><BR>
+	<FONT SIZE=-1>(<I>Note:</I> It makes sense if you look at the
+	  examples for <A HREF="#Example_2">buttons</A> before.)</FONT>
+	<PRE>
+	  &lt;PARAM NAME=3#Input VALUE="help#10|"&gt;
+	  &lt;PARAM NAME=7#Input VALUE="address|www.first.gmd.de"&gt;
+	  &lt;PARAM NAME=9#Input VALUE="port#5|4711"&gt;
+	</PRE>
+	<P>
+    </DL>
+    <A NAME="Script"></A>
+    <H3>The Script Module</H3>
+    The script module gives a very simple implementation of an <I>input
+      triggered</I> script executor. This means it sends text to the remote host
+    when the received text matches a <I>pattern</I> that can be programmed. It
+    executes each <I>pair of pattern and text</I> only once and stops working
+    after all patterns have been matched. It will start working again upon a
+    new connection.
+    <P>
+      To load the module include the following tag into the <B>.html</B> file
+      (example):<P>
+      <TT><B>&lt;PARAM NAME=module#<I>1</I> VALUE="<I>Script</I>"&gt;</B>
+      </TT><P>
+      Below is a description of possible PARAM tags and a description of script:
+    <DL>
+      <DT><B>Scripts:</B>
+      <DD><TT>&lt;PARAM NAME=script VALUE=&quot;<B><I>pattern</I></B>|<B><I>text</I></B>|<B><I>...</I></B>&quot;&gt;</TT>
+      <DD>A script contains of pairs of <I>pattern</I> and <I>text</I> strings.
+	If the pattern is matched against the output from the remote host,
+	the corresponding text will be sent. Each pattern will match only
+	<B>once</B> per connected session.
+	Thus it is possible to program an autologin as follows:<BR>
+	<TT><B>"login:|leo|Password:|mypassword|leo@www|ls"</B></TT>
+	Newlines will be added automatically to the string sent! At the
+	moment the order of the pattern and text pairs is <I>not</I> relevant.
+	<P>
+        It is possible to prompt the user for input if a match occurs. If the
+        corresponding <I>text</I> is a string enclosed in braces ([] or {}) a
+        dialog window is opened with <I>text</I> as prompt. A special case 
+        is an empty prompt in which case the <I>pattern</I> will be shown as 
+        prompt. &quot;[Your name:]&quot; would open a dialog window with the
+        text &quot;Your name&quot; as prompt. Curly braces have a special
+        meaning; any user input will be shown as &quot;*&quot; which makes
+        it possible to program password prompts. Example: 
+        &quot;{Your password:}&quot;.<P>
+        A special match like: &quot;login:|[]&quot; can be used to open a
+        dialog and display &quot;login:&quot; as prompt. This works for
+        &quot;{}&quot; as well.
+    </DL>
+    <P>
+      <A NAME="MudConnector"></A>
+    <H3>MudConnector</H3>
+    This module is a special edition for the <A
+      HREF="http://www.mudconnect.com/">Mud Connector</A>. It features a list of
+    MUDs and a few buttons to connect, disconnect and get infos about the MUDs.
+    A very nice example for a specialized module.
+    To load the module include the following tag into the <B>.html</B> file
+    (example):<P>
+      <TT><B>&lt;PARAM NAME=module#<I>1</I> VALUE="<I>MudConnector</I>"&gt;</B>
+      </TT>
+      The MudConnector expects the following PARAM tags:
+    <DL>
+      <DT><B>Mudlist URL:</B>
+      <DD><TT>&lt;PARAM NAME=mudlist VALUE=&quot;<B><I>URL</I></B>&quot;&gt;</TT>
+      <DD>The URL should be a file containing line by line the <I>MUD name</I>, the
+	<I>Mud address</I> and the <I>MUD port</I>, separated by tabulators.
+	The first line in the file should be the number of MUDs in the file.
+	<P>
+      <DD><B>Example:</B><BR>
+	<TT>&lt;PARAM NAME=mudlist VALUE="http://www.mud.de/~leo/mudlist.data"&gt;</TT>
+	<P>
+    </DL>
+    <P>
+    <HR>
+    <A NAME="SetupAppWrapper"></A>
+    <H2>The Applet Wrapper Setup</H2>
+    The applet wrapper is an applet that does nothing else than loading the, for
+    example, telnet applet. To understand why this is necessary you have to look
+    at the experiences we have made.<P>
+      Simply using the telnet applet in the following manner:<P>
+      <TT>&lt;APPLET CODE="telnet.class" WIDTH=600 HEIGHT=480&gt;</TT>
+      and using the <A HREF="#detach">detach</A> function stops the applet after
+      you have detached the applet and want to browse the web again. It seems that
+      the Web browser stops all threads connected to the applet if you leave the
+      page where the applet is located and thus it doesn't even update its display
+      anymore.<P>
+      We have found out that this is not true for applets loaded within the applet
+      on the page (e.g. the appWrapper). Look at the following description on how
+      to setup the appWrapper. It will probably work with any given applet out on
+      the web!
+    <P>
+      <PRE>
+	&lt;APPLET CODE="appWrapper.class" WIDTH=600 HEIGHT=480&gt;
+	&lt;PARAM NAME=applet VALUE="<I>telnet</I>&gt;
+
+	&lt;!-- optional (WIDTH and HEIGHT should be changed!) --&gt;
+	&lt;PARAM NAME=startButton VALUE="<I>text</I>"&gt;
+	&lt;PARAM NAME=stopButton VALUE="<I>text</I>"&gt;
+	&lt;PARAM NAME=frameTitle VALUE="<I>text</I>"&gt;
+	&lt;!-- all other telnet applet parameters go here --&gt;
+	&lt;/APPLET&gt;
+      </PRE>
+      The <B>appWrapper</B> knows only about the PARAM tag <B>applet</B>, which is
+      the applet to be loaded. In this case it must be in the same directory as the
+      <B>appWrapper.class</B>. Refer to the <A HREF="#Example_1">telnet example</A>
+      above for the telnet parameters.<P>
+      If a <B>startButton</B> is specified the applet won't start automatically,
+      but instead the appWrapper will display a button with the <I>text</I> on
+      it. The <B>stopButton</B> defines the text that appears on the button when
+      the applet is loaded and running and <B>frameTitle</B> specifies the frame
+      title text of the window the applet runs in.
+    <P>
+    <HR>
+    <A NAME="SetupProxy"></A>
+    <H2>Setting up the proxy server</H2>
+    There are two proxy servers provided with the telnet applet. The first one
+    is written in java and does support connections to <B>one</B> target host only
+    and the second one is written in C and supports different targets (called
+    relay daemon).<P>
+    <H4 ALIGN=CENTER>
+      [<A HREF="#javaproxy">Java Proxy</A> |
+      <A HREF="#relayd">Simple Relay Daemon</A> |
+      <A HREF="#mrelayd">Relay Daemon</A>]
+    </H4>
+    <P>
+      <A NAME="javaproxy"></A>
+    <H3>The Java Proxy Server</H3>
+    The proxy server is a small java program
+    to overcome the security restrictions of java capable web browsers.<P>
+      The proxy is used to redirect a connection to a given
+      host. Usually an applet can only connect to the web server it has
+      been loaded from. Installing the proxy on your web server allows the
+      applet to connect to a host you would like to connect to.<P>
+    <DL>
+      <DT><B>How to run the proxy application?</B>
+      <DD>To run the proxy you require the following:
+	<OL>
+	  <LI>A java interpreter (usually included in the JDK)
+	  <LI>A compiled version of the proxy 
+	    (<A HREF="tools/proxy.class">proxy.class</A>)
+	</OL><P>
+	  On the <I>WWW-Server command line</I> run the proxy server as follows:
+	  <TT>java proxy 9999 remotehostname 23
+	  </TT>
+	  This lets the proxy listen on port 9999 and it redirects
+	  all connections to the host "remotehostname" at port 23. You
+	  can leave the port parameter out if it is 23 (telnet port).
+	<P>
+	  The proxy should start with something like the output below:
+	  <TT>
+	    proxy: destination host is remotehostname at port 23
+	    proxy: listening on port 9999
+	  </TT>
+	  Upon successful connection the output should produce something
+	  like this:
+	  <TT>
+	    proxy: accepted connection from augra.first.gmd.de
+	    proxy: connecting www.first.gmd.de &lt;-&gt; remotehostname
+	  </TT>
+      <DT><B>How to shut down the proxy?</B>
+      <DD>To shut down the proxy press ^C (Ctrl+C or Strg+C on a german
+	keyboard) if you have startet it normally. More advanced users
+	will run the proxy like 
+	<TT>java proxy 9999 remotehost 23 >&amp; errorlog &amp;</TT>
+	to put it into the background. The "errorlog" file should then
+	contain any messages. You can kill that process by looking for
+	the process id (ps | grep proxy) and issuing the kill 
+	&lt;processid&gt; command (this applies to UNIX only).
+	<P>
+      <DT><B>I get an error message like "class proxy not found"!</B>
+      <DD>You may have to set the CLASSPATH environment variable to
+        point to the current directory or to the directory where
+	proxy.class is located.
+    </DL>
+    <P>
+      <A NAME="relayd"></A>
+    <H3>The Simple Relay Daemon</H3>
+    The <I>simple</I> relay daemon works just like the
+    <A HREF="#javaproxy">proxy</A> above, but is a C version. It allows
+    connections only to a specified host and port which is preferrable for
+    security reasons. You can run the program (after compiling it) with the
+    following command line:
+    <TT>
+      relayd serverport targethost targetport
+      or just
+      relayd serverport targethost
+    </TT>
+    It will then listen on the <I>serverport</I> of the machine you started it and
+    connect to the <I>targethost</I>. The standard <I>targetport</I> is 23.
+    <P>
+      <A NAME="mrelayd"></A>
+    <H3>The Relay Daemon</H3>
+    The relay daemon is a program written by Marcus Mei&szlig;ner to support
+    different target hosts. It relays the connections from the applet to a
+    host that must be given to the relay daemon after connecting.<P>
+      The daemon expects a string
+      <TT>relay <I>address port</I></TT>
+      It must be run on the web server of the applet.
+      The relay daemon is not included in compiled form, because we would have to
+      support a number of platforms. However, you can write to us if you need a
+      special compiled version for your hardware platform.<P>
+      You should include the following tags to tell <A
+	HREF="#SetupTelnet">telnet</A> that it is supposed to use the prox server
+    <PRE>
+    &lt;PARAM NAME=proxy      VALUE="www.first.gmd.de"&gt;
+    &lt;PARAM NAME=proxyport  VALUE="31415"&gt;
+    </PRE>
+    <HR>
+    <A NAME="SourceDoc"></A>
+    <H1>Source Code Documentation</H1>
+    The Source Code of <B>The Java<SUP>(tm)</SUP> Telnet Applet</B> is available
+    under the terms of the <A HREF="http://www.fsf.org/copyleft/gpl.html"><B>GNU
+	General Public License</B></A> as documented in the file <A
+      HREF="../COPYING">COPYING</A>. In case you would like to use the packages as
+    libraries please apply the <A HREF="http://www.fsf.org/copyleft/lgpl.html"><B>
+	GNU Library General Public License</B></A> as documented in the file <A
+      HREF="../COPYING.LIB">COPYING.LIB</A>.<P>
+      Select from the structure below, what you would like to see. Each file
+      contains a <B>Version:</B> field determining its current status and version.
+      If you are not sure to have the most current version, please
+      <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet/index.download.html">
+	look here</A>.<P>
+      If you are unsure, whether you've got the newest version, compare your
+      copy of the file <A HREF="../REVISION"><B>REVISION</B></A> and this
+      <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet/REVISION">
+	<B>REVISION</B></A>, which is a direct link to the
+      <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet/">home page</A>.
+      The latest changes are documented in the file
+      <A HREF="../CHANGES"><B>CHANGES</B></A>.
+    <UL>
+      <LI><A HREF="Source/appWrapper.html">appWrapper.java</A>
+      <LI><A HREF="Source/telnet.html">telnet.java</A>
+	<UL>
+	  <LI><A HREF="Source/Package-socket.html">Socket Package</A>
+	    <UL>	  
+	      <LI><A HREF="Source/socket.TelnetIO.html">socket/TelnetIO.java</A>
+	      <LI><A HREF="Source/socket.StatusPeer.html">socket/StatusPeer.java</A>
+	    </UL>
+	  <LI><A NAME="SourceTerminal"></A>
+	    <A HREF="Source/Package-display.html">Display Package</A>
+	    <UL>
+	      <LI><A HREF="Source/display.CharDisplay.html">display/CharDisplay.java</A>
+	      <LI><A HREF="Source/display.SoftFont.html">display/SoftFont.java</A>
+	      <LI><A HREF="Source/display.Terminal.html">display/Terminal.java</A>
+	      <LI><A HREF="Source/display.TerminalHost.html">display/TerminalHost.java</A>
+	      <LI><A HREF="Source/display.vt320.html">display/vt320.java</A>
+	    </UL>
+	  <LI><A NAME="SourceModules"></A>
+	    <A HREF="Source/Package-modules.html">Module Package</A>
+	    <UL>
+	      <LI><A HREF="Source/modules.Module.html">modules/Module.java</A>
+	      <LI><A HREF="Source/modules.ButtonBar.html">modules/ButtonBar.java</A>
+	      <LI><A HREF="Source/modules.Script.html">modules/Script.java</A>
+	      <LI><A HREF="Source/modules.MudConnector.html">modules/MudConnector.java</A>
+	    </UL>
+	</UL>
+      <LI><A HREF="Source/IOtest.html">IOtest.java</A>
+      <LI><A HREF="Source/CharDisplayTest.html">CharDisplayTest.html</A>
+      <LI>Tools
+	<UL>
+	  <LI><A HREF="Source/proxy.html">tools/proxy</A>
+	  <LI><A HREF="Source/redirector.html">tools/redirector</A> (proxy.java)
+	  <LI><A HREF="../tools/relayd.c">tools/relayd.c</A> (simple proxy)
+	  <LI><A HREF="../tools/mrelayd.c">tools/mrelayd.c</A> (enhanced proxy)
+	</UL>
+    </UL>
+    <HR>
+    <A HREF="../index.html">
+      <IMG ALIGN=LEFT SRC="images/left.gif" BORDER=0 ALT="[BACK]"></A>
+    <B>Get the <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet">latest
+	version</A> here!</B> <BR>
+    <!-- html-ts start -->
+    Last modified: Wed Jul 23 14:55:15 1997 by Matthias L. Jugel
+    <!-- html-ts end -->
+  </BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/user.html b/web/root/telnet/Documentation/user.html
new file mode 100644
index 0000000000000000000000000000000000000000..404b750814c2ce242b5f838a4ef992baed938296
--- /dev/null
+++ b/web/root/telnet/Documentation/user.html
@@ -0,0 +1,288 @@
+<!doctype HTML public "-//W30//DTD W3 HTML 3.0//EN">
+<HTML>
+  <HEAD><TITLE>The Java(tm) Telnet Applet: User Pages</TITLE></HEAD>
+  <BODY BGCOLOR="#ffffff">
+    <H1>The <A HREF="http://java.sun.com/">Java<SUP>(tm)</SUP></A>
+      Telnet Applet: User Pages</H1>
+    <P ALIGN=LEFT>
+      &copy; 1996-98 <A HREF="mailto:leo@first.gmd.de">Matthias L. 
+	Jugel</A>, <A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">
+	Marcus Mei&szlig;ner</A> 
+    <HR>
+    <P>
+      To show you that this applet is actually <I>useful</I>, we have created 
+      this page of users. All those pages below have some sort of service, 
+      provided through <A HREF="whatis.telnet.html">telnet</A> and use the 
+      applet to make it easier to access their sites. This may either be some 
+      <I>text-based virtual reality</I> or a <I>chat line</I>. Even more 
+      promising is the usage for <I>library catalogues</I> or <I>online 
+	information systems</I>. While looking around on the net we found that 
+      a lot of users put the applet on their private page to access their 
+      local accounts via the web.<P>
+      <A HREF="http://www.snymor.edu/~drewwe/">Bill Drew</A>, Systems 
+      Librarian, SUNY College of Agriculture and Technology, wrote an
+      <A HREF="http://www.ariadne.ac.uk/issue8/java-telnet/intro.html">
+	<B>Article</B></A> about using the applet to access his libraries OPAC
+      system and a German Internet Newsletter 
+      <A HREF="http://www.intern.de/7_97_3.htm"><B>INTERNET Intern</B></A>
+      (german) found it useful.<P>
+      We are <I>happy to be referred</I> by the 
+      <A HREF="http://library.usask.ca/hytelnet"><B>HYTELNET</B></A> resource
+      collection of <A HREF="whatis.telnet.html">telnet</A>-accessible 
+      <I>library services</I> and <A HREF="http://www.mudconnect.com/">
+	<B>The Mud Connector</B></A>, the most comprehensive list of 
+      <I>text-based virtual realities</I> on the web. The Applet is also 
+      mentioned on the <A HREF="http://www.cs.utk.edu/~shuford/terminal/pc_emulation.html#internet"><B>Video Terminal Informations</B></A> page.
+      This is the right place to look for <I>native</I> terminal emulation 
+      programs.<P>
+      <B>The <A HREF="http://java.sun.com/">Java<SUP>(tm)</SUP></A> Telnet 
+	Applet</B> is <A HREF="http://www.gnu.ai.mit.edu/software/java/gnu-recommended-software.html#Applets">recommended GNU Software</A>.
+    <P>
+      All Resources, alphabetically sorted:
+    <P>
+    <DL>
+      <DT><B><I><BIG>S</BIG>ERVICES</I></B><HR>
+    <DD><DL>
+	<DT><B>Information Provider</B>
+	<DD><A HREF="http://library.usask.ca/hytelnet">HYTELNET</A>
+	  (referring page)
+	<DD><A HREF="http://www.mudconnect.com/">The Mud Connector</A>
+	  (<A HREF="http://www.mudconnect.com/java/Telnet/index.cgi">
+	    <I>telnet</I></A>)
+	  <P></DL>
+      <DD><DL>
+	  <DT><B>Libraries:</B>
+	  <DD><A HREF="http://opac.uni-erlangen.de/">University of Erlangen/OPAC</A>
+	    (<A HREF="http://opac.uni-erlangen.de/Telnet/telnet.html">
+	      <I>telnet (german)</I></A>)
+	  <DD><A HREF="http://jerome.cs.unm.edu/">ISTEC Libraries</A>
+	    (<A HREF="http://jerome.cs.unm.edu/Telnet/welcome.html">
+	      <I>telnet</I></A>)
+	  <DD><A HREF="http://www.ub.ku-eichstaett.de/">Katholische Universit&auml;tsbibliothek Eichst&auml;tt</A> - german
+	    (<A HREF="http://www.ub.ku-eichstaett.de/Telnet/jvtopac02.html"><I>telnet</I></A>)
+	  <DD><A HREF="http://www.lib.kth.se/">Royal Institute of Technology Library, Stockholm, Sweden</A>
+	    (<A HREF="http://www.lib.kth.se/telnet/telnete.html"><I>telnet</I></A>),
+	    (<A HREF="http://www.lib.kth.se/telnet/mattelnete.html"><I>telnet to Mathematics Library</I></A>)
+
+	  <DD><A HREF="http://www.falcon.edu/catalog/">Falcon Catalog</A>
+	    (<A HREF="http://www.falcon.edu/catalog/JavaTelnet/"><I>telnet</I></A>)
+	  <DD><A HREF="http://library.princeton.edu/">Princeton University
+	      Library</A>
+	    (<A HREF="http://library.princeton.edu/catalogs_and_databases/online_catalog.html"><I>telnet</I></A>)
+	  <DD><A HREF="http://www.buc.unican.es/">BIBLIOTECA de Universidad de Cantabria</A> (spanish)
+	    (<A HREF="http://www.buc.unican.es/capel2.htm"><I>telnet</I></A>)
+	  <DD><A HREF="http://snymoraa.cs.snymor.edu/pages/library/">SUNY
+	      Morrisville College Library</A>
+	    (<A
+	      HREF="http://snymoraa.snymor.edu/pages/library/telnet/netopac.htmlx">
+	      <I>telnet</I></A>)
+	    <P></DL>
+	<DD><DL>
+	    <DT><B>Remote System Access:</B>
+	    <DD><A HREF="http://www.crpa.it/agrishar/bbs">AgriShare BBS</A>
+	      (<A HREF="http://www.crpa.it/agrishar/bbs/Telnet/">
+	      <I>telnet</I></A>)
+	    <DD><A HREF="http://cereal.mv.com/">Cereal BBS</A>
+	      (<A HREF="http://cereal.mv.com/javatelnet/telnet/tel.html">
+		<I>telnet</I></A>)
+	    <DD><A HREF="http://www.cu-muc.de/">Connection Universe</A>
+	      (<A HREF="http://www.cu-muc.de/chat/"><I>telnet</I></A>)
+
+	    <DD><A HREF="http://www.deltronix.com/">Deltronix Online</A>
+	      (<A HREF="http://www.deltronix.com/public/telnet_deltronix.html"><I>telnet</I></A>) - Online Games, Message areas, Web hosting, Since 1988
+	    <DD><A HREF="http://dtk.campus.luth.se/">DTK homepage</A> - swedish
+	      (<A HREF="http://dtk.campus.luth.se/telnet/"><I>telnet</I></A>)
+	    <DD><A HREF="http://www.edenbbs.com">Eden BBS</A>
+	      (<A HREF="http://www.webprecision.com/telnet/edengate.htm">
+		<I>telnet</I></A>)  
+	    <DD><A HREF="http://bbs.exo.com/">Exo BBS</A>
+	      (<A HREF="http://bbs.exo.com/telnet.html"><I>telnet</I></A>)
+	    <DD><A HREF="http://shell.enteract.com/">EnterAct</A>
+	      (<A HREF="http://shell.enteract.com/~horvath/Telnet/"><I>telnet</I></A>)
+	    <DD><A HREF="http://infectionflux.myriad.net/">infection flux</A>
+	      (<A HREF="http://infectionflux.myriad.net/~tony/Telnet/index.html"><I>
+		  telnet</I></A>)
+	    <DD><A HREF="http://www.inconnect.com/">INTERNET CONNECT</A>
+	      (<A HREF="http://www.inconnect.com/telnet.html"><I>telnet</I></A>)
+	    <DD><A HREF="http://206.251.72.99/">ITEX Online</A>
+	      (<A HREF="http://206.251.72.99/java/Telnet/telnet_itex.net.html"><I>
+		  telnet</I></A>)
+	    <DD><A HREF="http://jungle.olivet.edu/">Jungle BBS</A>
+	      (<A HREF="http://jungle.olivet.edu/telnet/"><I>telnet</I></A>)
+	    <DD><A HREF="http://home.kiss.de/">KISS</A> - Kaiserslautern Internet
+	      Solutions Service GmbH
+	      (<A HREF="http://home.kiss.de/Telnet/login.html"><I>telnet</I></A>)
+	    <DD><A HREF="http://www.nyx.net/">Nyx.net</A> - A public access UNIX
+	      System
+	      (<A HREF="http://nyx.nyx.net:8002/"><I>telnet</I></A>)
+	    <DD><A HREF="http://pointblank.com/">Point Blank BBS</A>
+	      (<A HREF="http://pointblank.com/"><I>telnet</I></A>)
+	    <DD><A HREF="http://remcen.ehhs.cmich.edu/">REMCentral</A>
+	      (<A HREF="http://remcen.ehhs.cmich.edu/telnet.html"><I>telnet</I></A>)
+	    <DD><A HREF="http://www.southex.net/">SouthEX Interactive</A>
+	      (<A HREF="http://www.southex.net/logon.htm"><I>telnet</I></A>)
+	    <DD><A HREF="http://www.thegate.net/">The Gate BBS</A>
+	      (<A HREF="http://www.thegate.net/"><I>telnet</I></A>)
+	    <DD><A HREF="http://TheMatrix.com/">The Matrix.com</A>
+	      (<A HREF="http://TheMatrix.com/telnet.html"><I>telnet</I></A>)
+	    <DD><A HREF="http://www.tiga.com.au/">TIGA - Total Interactive Gaming 
+		Australia</A> (<A HREF="http://www.tiga.com.au/telnet/jtelnet.htm">
+		<I>telnet</I></A>)
+	    <DD><A HREF="http://w3.uokhsc.edu/">The University of Oklahoma Health
+		Sciences Center</A>
+	      (<A HREF="http://www.uokhsc.edu/home/service/telnet/"><I>telnet</I></A>)
+	    <DD><A HREF="http://uncnsrd.mt-kisco.ny.us/">UNCENSORED! BBS</A>
+	      (<A HREF="http://uncnsrd.mt-kisco.ny.us/Telnet/"><I>telnet</I></A>)
+	    <DD><A HREF="http://undergnd.metrobbs.com/">Metropolis UNDERGROUND (<i>defect</i>)</A>
+	      (<A HREF="http://undergnd.metrobbs.com/"><I>telnet</I></A>)
+	      <P></DL>
+	  <DT><B><I><BIG>R</BIG>ECREATIONAL</I></B><HR>
+	  <DD><DL>
+	      <DT><B>Text-based Virtual Reality (MUD):</B>
+	      <DD><A HREF="http://abyss.nucleus.com/">The Abyss</A>
+		(<A HREF="http://abyss.nucleus.com/telnet.html"><I>telnet</I></A>)
+	      <DD><A HREF="http://www.arctic.org/">ArcticMud</A>
+		(<A HREF="http://www.arctic.org/help/java_telnet.html">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://www.niweb.com/pgregg/">Crossed Swords</A>
+		(<A HREF="http://www.niweb.com/pgregg/telnetxswords.html">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://fmmikek.ftech.net/cuckoo/">the cuckoo's nest</A>
+		(<A HREF="http://fmmikek.ftech.net/cuckoo/Telnet/"><I>telnet</I></A>)
+	      <DD><A HREF="http://hell.wh8.tu-dresden.de/~delusion/">Dimension *X*</A>
+		(<A HREF="http://hell.wh8.tu-dresden.de/~delusion/connect.html">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://mud.skool.com/">Dimension *X*</A>
+		(<A HREF="http://mud.skool.com/telnet/">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://www.erols.com/moodyg/">Dragon Bane</A>
+		(<A HREF="http://moodyg.erols.com/Telnet/drgnbn.html">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://dragon.fmi.uni-passau.de/">Dragon MUD</A>
+		(<A HREF="http://dragon.fmi.uni-passau.de/Telnet/telnet.html">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://www.empire1.com/emperor/empire.html">Empire MUD</A>
+		(<A HREF="http://www.empire1.com/emperor/Empire-MUD/EmpireMUD.html"> <I>telnet</I></A>)
+<!-- ist zwar da, connected aber nicht
+	      <DD><A HREF="http://mud.dwango.com/~mud/">eQuoria</A>
+		(<A HREF="http://mud.dwango.com/~mud/side.html"> <I>telnet</I></A>)
+-->
+	      <DD><A HREF="http://ff.mud.de">FinalFrontier</A> - german  
+		(<A HREF="http://ff.mud.de/play.html"> <I>telnet</I></A>)
+	      <DD><A HREF="http://www.insomnia-mud.com/~insomnia/">Insomnia-MUD</A>
+		(<A HREF="http://www.insomnia-mud.com/~insomnia/Telnet/mud.html"> <I>telnet</I></A>)
+	      <DD><A HREF="http://bw2.baub.bwk.tue.nl/">JoranMud/Fatal Dimensions</A>
+		(<A HREF="http://bw2.baub.bwk.tue.nl/Telnet/joranmud.html"> <I>telnet</I></A>)
+	      <DD><A HREF="http://www.ishar.com/">Ishar</A> 
+		(<A HREF="http://www.ishar.com/telnet/"><I>telnet</I></A>)
+<!-- scheint nicht mehr zu gehen
+	      <DD><A HREF="http://www.lr2.com/">Lost Rivers 2</A>
+		(<A HREF="http://www.graphweb.com/lr/java/connect.htm">
+		  <I>telnet</I></A>)
+ -->
+<!-- dito
+	      <DD><A HREF="http://sdphul.ucsd.edu/antan/">The Marches of Antan</A>
+		(<A HREF="http://sdphul.ucsd.edu/antan/telnet/"><I>telnet</I></A>)
+ -->
+<!-- dito
+	      <DD><A HREF="http://medievia.netaxs.com:8080/">Medievia</A>
+		(<A HREF="http://medievia.netaxs.com:8080/java/Telnet/javaconnect.html">
+		  <I>telnet</I></A>)
+ -->
+<!-- dito
+	      <DD><A HREF="http://terminator.pathcom.com/~miked/ms/">The Midnight
+		  Sanctuary</A>
+		(<A HREF="http://mud.imperium.net/~mudmstr/Telnet/play_sanctuary.html">
+		  <I>telnet</I></A>)
+ -->
+	      <DD><A HREF="http://mg.mud.de/">MorgenGrauen</A> - german
+		(<A HREF="http://mg.mud.de/online/"> <I>telnet</I></A>)
+	      <DD><A HREF="http://www.mudweiser.mudservices.com/">MUDweiser</A>
+		(<A HREF="http://www.mudweiser.mudservices.com/Telnet/"> <I>telnet</I></A>)
+	      <DD><A HREF="http://mud.lysator.liu.se/Telnet/">NannyMUD</A>
+		(<A HREF="http://mud.lysator.liu.se/java/Telnet/"> <I>telnet</I></A>)
+	      <DD><A HREF="http://www.reddragon.org/">Red Dragon LPmud</A>
+		(<A HREF="http://www.reddragon.org/Telnet/app.html"><I>telnet</I></A>)
+	      <DD><A HREF="http://www.df.lth.se/~tommy/robotech/index.html">Robotech MUSH</A>
+		(<A HREF="http://robotech.df.lth.se/~robotech/Telnet/index.test.html"><I>telnet</I></A>)
+	      <DD><A HREF="http://www.tsr.org/">An Age Of Legends: The Shadow Realms</A>
+		(<A HREF="http://www.tsr.org/Telnet/play.html">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://www.suvangi.com/">MUD Suvangi</A>
+		(<A HREF="http://www.suvangi.com/java/Telnet/telnet.html">
+		  <I>telnet</I></A>)
+	      <DD><A HREF="http://supermud3.com/">SuperMUD 3</A>
+	       (<A HREF="http://www.supermud3.com/game/java/index.html"><I>telnet</I></A>)
+	      
+	      <DD><A HREF="http://tapp.mud.de:8080/">TAPPMud</A>
+		(<A HREF="http://tapp.mud.de:8080/mud.html"><I>telnet</I></A>)
+	      <DD><A HREF="http://tragickingdom.ml.org">Tragic Kingdom</A>
+		(<A HREF="http://tragickingdom.ml.org/chat/"><I>telnet</I></A>)
+	      <DD><A HREF="http://terrafirma.terra.mud.org/">TerraFirmA</A>
+		(<A HREF="http://terrafirma.terra.mud.org/java/"><I>telnet</I></A>)
+	      <DD><A HREF="http://tecfa.unige.ch/moo/">TECFEA Moo</A>
+		(<A HREF="http://tecfa.unige.ch/moo/clients/jmud/telnet-tecfa.html">
+		  <I>telnet</I></A>) <B>it definitely needs update!</B>
+	      <DD><A HREF="http://mudhole.ehche.ac.uk/~tnt/">TNT</A>
+		(<A HREF="http://mudhole.ehche.ac.uk/~tnt/java.html"><I>telnet</I></A>)
+	      <DD><A HREF="http://UNItopia.uni-stuttgart.de/">UNItopia</A> - german
+		(<A HREF="http://UNItopia.uni-stuttgart.de/telnet/"><I>telnet</I></A>)
+	      <DD><A HREF="http://wilma.rz.uni-leipzig.de/mud/">Wunderland</A> - german
+		(<A HREF="http://wilma.rz.uni-leipzig.de/mud/telnet.html">
+		  <I>telnet</I></A>)
+	    </DL><P>
+	      <DD><DL>
+		  <DT><B>Chats & Talkers:</B>
+		  <DD><A HREF="http://apollos.ttu.ee/">Banalim</A>
+		    (<A HREF="http://apollos.ttu.ee/valitsus/Telnet/"><I>telnet</I></A>)
+		  <DD><A HREF="http://cafe.guam.net/">Cafe Guam</A>
+		    (<A HREF="http://http://cafe.guam.net/cafe2000/"><I>Cafe 2000</I></A>)
+<!-- down
+		  <DD><A HREF="http://crime.stack.nl/~rjkap/java.html">Capsi Chat</A>
+		    (<A HREF="http://crime.stack.nl/~rjkap/java.html"><I>telnet</I></A>)
+ -->
+		  <DD><A HREF="http://www.talker.com/xena/">Xena: Chakrams & Scrolls</A>
+		    (<A HREF="http://www.talker.com/xena/java/"><I>telnet</I></A>)
+		  <DD><A HREF="http://www.talkers.org/cn/">Cirrus Nebula</A>
+		    (<A HREF="http://www.talkers.org/cn/telnet.html"><I>telnet</I></A>)
+<!--
+		  <DD><A HREF="http://funcity.newaygo.mi.us/~hsh/">Home Sweet Home</A>
+		    (<A HREF="http://funcity.newaygo.mi.us/~hsh/chat/index.html">
+		      <I>telnet</I></A>)
+ -->
+<!--
+		  <DD><A HREF="http://www.cs.ut.ee/~helger/muumi/">Moominvalley talker</A>
+		    (<A HREF="http://www.cs.ut.ee/~helger/muumi/connect/">
+		      <I>telnet</I></A>)
+ -->
+		  <DD><A HREF="http://amaterasu.math.orst.edu:8080/~sharpej/information/backyard.html">The Backyard</A>
+		    (<A HREF="http://amaterasu.math.orst.edu:8080/~sharpej/information/telnet.html"><I>telnet</I></A>)
+<!--
+		  <DD><A HREF="http://www.zait.uni-bremen.de/Esperanto/VEK/">VEKejo
+		      (Esperanto)</A>
+		    (<A HREF="http://www.zait.uni-bremen.de/Esperanto/VEK/telnet.html">
+		      <I>telnet</I></A>)
+ -->
+		  <DD><A HREF="http://uberworld.ml.org/">UberWorld</A>
+		    (<A HREF="http://uberworld.ml.org/telnet.html">
+		      <I>telnet</I></A>)
+		  <DD><A HREF="http://kunpux.cogsci.kun.nl/~splotch/">Splotch (some non Turing test)</A>
+		    (<A HREF="http://kunpux.cogsci.kun.nl/~splotch/start-java-telnet.html">
+		      <I>telnet</I></A>)
+		  <DD><A HREF="http://talkers.skl.com/~bourbons/">Bourbon Street</A>
+		    (<A HREF="http://talkers.skl.com/~bourbons/class/java.html">
+		      <I>telnet</I></A>)
+		    <P></DL>
+	      </DL>
+		<P>
+		<HR>
+		<A HREF="../index.html">
+		  <IMG ALIGN=LEFT SRC="images/left.gif" BORDER=0 ALT="[BACK]"></A>
+		<B>Get the 
+		  <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet">latest
+		    version</A> here!</B> <BR>
+		<!-- html-ts start -->
+		Last modified: Wed Jul 23 15:00:43 1997 by Matthias L. Jugel
+		<!-- html-ts end -->
+  </BODY>
+</HTML>
diff --git a/web/root/telnet/Documentation/whatis.telnet.html b/web/root/telnet/Documentation/whatis.telnet.html
new file mode 100644
index 0000000000000000000000000000000000000000..ddc38c82193a5e173c23fb853ebd8c4f6923b597
--- /dev/null
+++ b/web/root/telnet/Documentation/whatis.telnet.html
@@ -0,0 +1,31 @@
+<!doctype HTML public "-//W30//DTD W3 HTML 3.0//EN">
+<HTML>
+<HEAD><TITLE>The Java(tm) Telnet Applet: What is TELNET?</TITLE></HEAD>
+<BODY BGCOLOR="#ffffff">
+<H1>The <A HREF="http://java.sun.com/">Java<SUP>(tm)</SUP></A>
+    Telnet Applet: What is TELNET?</H1>
+<P ALIGN=LEFT>
+&copy; 1996-98 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>,
+<A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus Mei&szlig;ner</A> 
+<HR>
+<P>
+Telnet allows you to login to another <I>Internet location</I> to gain
+access to <B>databases</B>, <B>library catalogs</B>, and <B>interactive
+environments</B>. It works like a terminal connected to your computer,
+only that that computer may be far away.<P>
+If you want to connect directly to a remote computer you need to know a
+<I>valid login ID</I> usually given to you by the provider of the service. 
+<P>
+To get a list of telnet service providers, please have a look at our list of
+<A HREF="user.html"><B>Applet Users</B></A>.
+<P>
+<HR>
+<A HREF="../index.html">
+<IMG ALIGN=LEFT SRC="images/left.gif" BORDER=0 ALT="[BACK]"></A>
+<B>Get the <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet">latest
+version</A> here!</B> <BR>
+<!-- html-ts start -->
+Last modified: Thu Mar 13 12:29:58 1997 by Matthias L. Jugel
+<!-- html-ts end -->
+</BODY>
+</HTML>
diff --git a/web/root/telnet/INSTALL b/web/root/telnet/INSTALL
new file mode 100644
index 0000000000000000000000000000000000000000..e34907fcb3aa734e4066f887d80a7f4756f5c6b4
--- /dev/null
+++ b/web/root/telnet/INSTALL
@@ -0,0 +1,55 @@
+** The Java(tm) Telnet Applet **
+
+-------------------------------------------------------------
+If you want to use the classes only do the following:
+
+* UNIX:
+	gzip -cd telnet.tgz | tar xf - \*.class
+
+* DOS/Windows:
+	pkunzip -d telnet.zip
+	* Maybe you can unzip it by just clicking on the
+	  package or Netscape knows how to handle .zip.
+
+This will extract the classes and create the required 
+directory structure (/ is \ on DOS/Windows):
+
+	telnet.class
+	socket/TelnetIO.class
+	socket/StatusPeer.class
+	display/CharDisplay.class
+	display/Terminal.class
+	display/TerminalHost.class
+	display/vt320.class
+	modules/ButtonBar.class
+	modules/Script.class
+
+-------------------------------------------------------------
+In case you like to compile the sources yourself extract
+everything and type the following:
+
+	make realclean
+	make telnet.class
+
+The Makefile will compile all classes recursively even though
+the java compiler would do this by itself when running 
+"java telnet.java".
+
+Just typing "make" will print you all available make targets:
+
+	make test         - compile applet and run appletviewer
+	make telnet       - compile standalone and run telnet
+	make doc          - create documentation
+	make clean        - delete backup files
+	make realclean    - make clean and delete .class files
+
+-------------------------------------------------------------
+
+Hint: Always remember that the applet can only connect to the
+      server it has been loaded from! You will get a security
+      exception when trying to connect to some other host.
+
+      If you load your applet locally via the file:// URL
+      don't forget to set the CLASSPATH environment variable
+      to the directory, where the telnet.class resides _before_
+      you start your appletviewer or web browser!
diff --git a/web/root/telnet/IOtest.class b/web/root/telnet/IOtest.class
new file mode 100644
index 0000000000000000000000000000000000000000..7e90843c7e059e3751d0d85810b5533e4a26992b
Binary files /dev/null and b/web/root/telnet/IOtest.class differ
diff --git a/web/root/telnet/IOtest.java b/web/root/telnet/IOtest.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd833bb49d5dfd328e19beb22388c19ce9d174a2
--- /dev/null
+++ b/web/root/telnet/IOtest.java
@@ -0,0 +1,61 @@
+/* IOtest.java -- An example how to use the TelnetIO class
+ * --
+ * Author: Matthias L. Jugel
+ *
+ * Usage: compile with javac IOtest.java
+ *        run program with java IOtest
+ *
+ * This is not an applet, but the idea might be used in one. 
+ */
+
+import java.util.Vector;
+import java.io.*;
+import socket.*;
+
+/**
+ * IOtest -- a test class for telnet i/o
+ * --
+ * @version	$Id$
+ * @author	Matthias L. Jugel
+ */
+class IOtest {
+
+  // create a new telnet io instance
+  static TelnetIO tio = new TelnetIO();
+
+  // skip any received data until the prompt appears
+  private static void wait(String prompt)
+  {
+    String tmp = "";
+    do {
+      try { tmp = new String(tio.receive(), 0); }
+      catch(IOException e) { e.printStackTrace(); }
+      System.out.println(tmp);
+    } while(tmp.indexOf(prompt) == -1);
+  }
+
+  // send a string to the remote host, since TelnetIO needs a byte buffer
+  // we have to convert the string first
+  private static void send(String str)
+  {
+    byte[] buf = new byte[str.length()];
+    str.getBytes(0, str.length(), buf, 0);
+    try { tio.send(buf); } catch(IOException e) {}
+  }
+
+  // this function is called when running the class with java IOtest
+  // looks very much like a modem login script ;-)
+  public static void main(String args[])
+  {
+    try {
+      tio.connect("localhost");
+      wait("login:");
+      send("<YOUR LOGIN NAME>\r");
+      wait("Password:");
+      send("<YOUR PASSWORD>\r");
+      wait("<YOUR SHELL PROMPT>");
+      send("touch /tmp/THIS_WAS_AN_APPLET\r");
+      tio.disconnect();
+    } catch(IOException e) { e.printStackTrace(); }
+  }
+}
diff --git a/web/root/telnet/Makefile b/web/root/telnet/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..deccc6825f3738841c49727fa59b60a727aec536
--- /dev/null
+++ b/web/root/telnet/Makefile
@@ -0,0 +1,178 @@
+#
+# This file is part of "The Java Telnet Applet".
+#
+# This is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# "The Java Telnet Applet" is distributed in the hope that it will be 
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with The JAVA Telnet Applet; see the file COPYING.  If not, write to 
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+# $Id$
+
+OPT	= 
+DEBUG	= -g -deprecation
+JAVA	= java
+JAVAC	= javac
+JAVADOC = javadoc
+APPV	= appletviewer
+
+.SUFFIXES: .java .class .html
+
+.java.class:
+	$(JAVAC) $(OPT) $(DEBUG) $<
+
+.class.html:	
+	$(APPLV) $@
+
+HELP:
+	@echo 'To compile "The Java Telnet Applet" do one of the following:'
+	@echo '------------------------------------------------------------'
+	@echo 'make all          - compile all files to classes'
+	@echo 'make test         - compile applet and run appletviewer'
+	@echo 'make telnet       - compile standalone and run telnet'
+	@echo 'make chartest     - compile character display test and run'
+	@echo 'make proxy        - compile proxy server'
+	@echo 'make doc          - create documentation'
+	@echo 'make clean        - delete backup files'
+	@echo 'make realclean    - make clean and delete .class files'
+
+all: appWrapper.class telnet.class modules tools
+	@echo All classes created.
+
+test: appWrapper.class telnet.class
+	$(APPV) index.test.html
+
+telnet:	appWrapper.class telnet.class
+	$(JAVA) telnet localhost	
+
+chartest: CharDisplayTest.class
+	$(APPV) CharDisplay.html
+
+doc: 
+	$(JAVADOC) -d Documentation/Source -author -version \
+		display socket modules \
+	        telnet.java appWrapper.java \
+                tools/proxy.java CharDisplayTest.java IOtest.java
+
+tar:	
+	rm -f ../telnet.tgz ../telnet.zip
+	(cd ..; tar cf - Telnet | gzip - > telnet.tgz)
+	(cd ..; zip -r telnet.zip Telnet)
+
+bin-tar: all
+	rm -f ../classes.tgz ../classes.zip
+	(cd ..; tar cf - Telnet/*.class Telnet/*/*.class \
+                          Telnet/README Telnet/INSTALL Telnet/COPYING \
+		| gzip - > classes.tgz)
+	(zip -r ../classes.zip *.class */*.class README INSTALL COPYING)
+
+revision: 
+	grep @version *.java */*.java|awk '{split($$6,rev,".");printf("%-26.26s %2.2s.%-2.2s (%s)\n",$$1,rev[1],rev[2],$$7);}' > REVISION
+	rcs2log *.java */*.java > CHANGES
+	sed -e"s/package:.*$$/package: `date +%c`/" index.html > index.html.x
+	mv index.html.x index.html
+
+dist:	realclean all doc tar bin-tar
+	@echo DONE.
+
+clean:	
+	rm -f *~ */*~
+
+realclean:	clean
+	rm -f *.class */*.class
+	(cd tools; make clean)
+
+# dependencies
+
+appWrapper.class: \
+	appWrapper.java \
+	frame.java
+
+telnet.class: \
+	telnet.java \
+	display \
+	socket \
+	modules 
+
+# display classes and terminal emulation
+
+display: \
+	display/vt320.class
+
+display/vt320.class: \
+	display/vt320.java \
+	display/CharDisplay.java \
+	display/TerminalHost.java \
+	display/Terminal.java
+
+display/CharDisplay.java: \
+	display/SoftFont.java
+
+# socket io classes
+socket: \
+	socket/TelnetIO.class \
+	socket/TelnetWrapper.class
+
+socket/TelnetIO.class: \
+	socket/TelnetIO.java \
+	socket/StatusPeer.java
+
+# dynamical loaded modules
+modules: modules/ButtonBar.class \
+         modules/Script.class \
+         modules/TextLabel.class \
+         modules/MudConnector.class \
+	 modules/BSXModule.class
+
+modules/ButtonBar.class: \
+	modules/ButtonBar.java \
+	modules/Module.java \
+	frame.java
+
+modules/Script.class: \
+	modules/Script.java \
+	modules/Module.java
+
+modules/MudConnector.class: \
+	modules/MudConnector.java \
+	modules/Module.java
+
+modules/BSXModule.class: \
+	modules/bsx/BSXDisplay.java \
+	modules/bsx/BSXGraphic.java \
+	modules/bsx/BSXInputStream.java \
+	modules/bsx/BSXObject.java \
+	modules/bsx/BSXPolygon.java \
+	modules/bsx/BSXScene.java
+
+# tools
+tools: \
+	tools/proxy.class \
+	CharDisplayTest.class \
+	IOtest.class \
+	tools/mrelayd \
+	tools/relayd
+
+tools/proxy.class: \
+	tools/proxy.java
+
+CharDisplayTest.class: \
+	CharDisplayTest.java \
+	display/CharDisplay.java
+
+IOtest.class: \
+	IOtest.java \
+	socket/TelnetIO.java
+
+socket/TelnetWrapper.class: \
+	socket/TelnetWrapper.java \
+	socket/TelnetIO.java
diff --git a/web/root/telnet/README b/web/root/telnet/README
new file mode 100644
index 0000000000000000000000000000000000000000..58f23de91dbcad2b5fe96af78cd18fc536049cf4
--- /dev/null
+++ b/web/root/telnet/README
@@ -0,0 +1,55 @@
+The Java Telnet Applet
+
+Authors: Matthias L. Jugel (leo@first.gmd.de)
+	 Marcus Meißner (msmeissn@cip.informatik.uni-erlangen.de)
+
+This applet is the result of our attempt to make a useful java application
+and to provide better access to the world of internet through the almost
+everywhere available Web browser.
+
+We hope you find this piece of software as useful as we do. The source code
+is publicly available under the GPL.
+
+If you encounter any problems, bugs or else don't hesitate to contact us.
+
+	http://www.first.gmd.de/persons/leo/java/Telnet
+
+will always have the newest version.
+
+This distibution should contain the following files and directories:
+
+README 			  - this file
+REVISION 		  - contains version information about .java files
+CHANGES                   - all changes are logged here
+INSTALL 		  - how to install the applet
+COPYING 		  - GNU General Public Licence
+COPYING.LIB 		  - GNU Library General Public Licence
+BUGS 			  - known bugs
+Makefile 		  - to create .class files and documentation
+
+telnet.java		  - the telnet applet/application
+socket/TelnetIO.java 	  - all telnet negotiation handling
+socket/StatusPeer.java 	  - a status peer interface
+display/Terminal.java 	  - an abstract terminal class
+display/TerminalHost.java - a virtual terminal host interface
+display/CharDisplay.java  - a general purpose character display
+display/vt320.java	  - a VT320/ANSI emulation class using CharDisplay
+modules/ButtonBar.java	  - a programmable button bar
+modules/Script.java	  - a simple script module
+
+The package contains also all precompiled classes!
+
+tools/IOtest.java 	  - an example program which works like a 
+			    script executor
+tools/TelnetWrapper.java  - another example program provided by
+			    George Ruban
+tools/CharDisplayTest.java- a test class for display/CharDisplay.java
+
+tools/proxy.java 	  - a simple proxy server
+
+*.html 			  - various test files
+examples/*.html           - example files for different usage
+
+Documentation/ 		  - documentation of the JAVA source code
+CVS/			  - revision control, contains the history of 
+			    the source code
diff --git a/web/root/telnet/REVISION b/web/root/telnet/REVISION
new file mode 100644
index 0000000000000000000000000000000000000000..1be1ae1ddb2cea878481de0d0fa8e673b8e4844c
--- /dev/null
+++ b/web/root/telnet/REVISION
@@ -0,0 +1,20 @@
+CharDisplayTest.java:       1.1  (1997/03/05)
+IOtest.java:                1.1  (1997/03/05)
+appWrapper.java:            1.9  (1997/07/24)
+telnet.java:                1.21 (1999/03/04)
+display/CharDisplay.java:   1.29 (1999/03/20)
+display/Terminal.java:      1.1  (1997/03/05)
+display/TerminalHost.java:  1.1  (1997/03/05)
+display/vt320.java:         1.60 (1999/03/20)
+modules/ButtonBar.java:     1.23 (1999/04/09)
+modules/Module.java:        1.3  (1997/03/24)
+modules/MudConnector.java:  1.3  (1999/04/09)
+modules/Script.java:        1.6  (1997/11/03)
+modules/TextLabel.java:     1.1  (1997/07/09)
+socket/StatusPeer.java:     1.1  (1997/03/05)
+socket/TelnetIO.java:       1.10 (1998/02/09)
+socket/TelnetIO.java:      Ge.   (Ruban)
+socket/TelnetWrapper.java:  -.   (added)
+socket/TelnetWrapper.java:  -.   (added)
+socket/TimedOutException.j */.   ()
+tools/proxy.java:           1.4  (1997/05/27)
diff --git a/web/root/telnet/TODO b/web/root/telnet/TODO
new file mode 100644
index 0000000000000000000000000000000000000000..3c5da65f35516537ed601396f23a7ba94c16e2b8
--- /dev/null
+++ b/web/root/telnet/TODO
@@ -0,0 +1,22 @@
+The Java(tm) Telnet Applet 
+
+-- TODO LIST --
+
+May, 27, 1997
+
+	* connection timeout
+
+tools/proxy.java
+	* additional log file
+
+March, 14, 1997
+
+
+display/vt320.java
+	* should add an edit line when using line mode
+	* vttest compliance
+	* 80/132 columns switching to resize the window instead of the font
+
+display/CharDisplay.java
+	* Needs to be refined. The Font resizing in one method and the usage
+	  of addNotify() is recommendet.
diff --git a/web/root/telnet/appWrapper.class b/web/root/telnet/appWrapper.class
new file mode 100644
index 0000000000000000000000000000000000000000..300b1586daa780dd5e506a6f0796a77e89859bb2
Binary files /dev/null and b/web/root/telnet/appWrapper.class differ
diff --git a/web/root/telnet/appWrapper.java b/web/root/telnet/appWrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..1813ac043234f7d118d5d30e747f60d5f596eabb
--- /dev/null
+++ b/web/root/telnet/appWrapper.java
@@ -0,0 +1,256 @@
+/**
+ * appWrapper -- applet/application wrapper
+ * --
+ * $Id$
+ * $timestamp: Thu Jul 24 13:08:23 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+import java.applet.Applet;
+import java.applet.AppletStub;
+
+import java.awt.Frame;
+import java.awt.Event;
+import java.awt.Panel;
+import java.awt.Button;
+import java.awt.BorderLayout;
+import java.awt.Graphics;
+import java.awt.Color;
+import java.awt.FontMetrics;
+
+/**
+ * The appWrapper is thought to make the applet itself independent from
+ * the original context. This is necessary to be able to detach the applet
+ * from the web browsers window without disconnecting it from events.
+ * Note: This applet should work with any applet without changes.
+ *
+ * <DL>
+ * <DT><B><PRE>&lt;PARAM NAME=&quot;applet&quot; VALUE=&quot;<I>applet</I>&quot;&gt;</PRE></B>
+ * <DD>Defines the applet to be loaded by the appWrapper. State the applet 
+ *     class name without &quot;.class&quot;!<P>
+ * <DT><B><PRE>&lt;PARAM NAME=&quot;startButton&quot; VALUE=&quot;<I>text</I>&quot;&gt;</PRE></B>
+ * <DD>If this parameter is set the applet is not loaded until the user presses
+ *     the button. This decreases first time download delay. The <I>text</I>
+ *     given as value to the parameter is shown on the button. While loading
+ *     the applet the message "Loading ..." is shown on the button.<P>
+ * <DT><B><PRE>&lt;PARAM NAME=&quot;stopButton&quot; VALUE=&quot;<I>text</I>&quot;&gt;</PRE></B>
+ * <DD>This parameter defines the button text when the applet is loaded. When 
+ *     pressing the button while the applet is running this causes the applet
+ *     window to be destroyed and the applet is stopped.<P>
+ * <DT><B><PRE>&lt;PARAM NAME=&quot;frameTitle&quot; VALUE=&quot;<I>text</I>&quot;&gt;</PRE></B>
+ * <DD>The <I>frameTitle</I> is the text that is shown in the title bar of the
+ *     applet window.<P>
+ * </DL>
+ * @version $Id$
+ * @author  Matthias L. Jugel
+ */
+public class appWrapper extends Applet implements AppletStub, Runnable
+{
+  Thread loader = null;
+  
+  String appletName = null;
+  Applet applet = null;
+
+  Button startButton = null;
+  String startLabel, stopLabel, frameTitle;
+
+  frame f;
+  
+  /**
+   * Applet initialization. We load the class giving in parameter "applet"
+   * and set the stub corresponding to ours. Thus we are able to give
+   * it access to the parameters and any applet specific context.
+   */
+  public void init() {
+
+    // get the applet parameter
+    if((appletName = getParameter("applet")) == null) {
+      showStatus("appWrapper: missing applet parameter, nothing loaded");
+      System.err.println("appWrapper: missing applet parameter");
+      return;
+    }
+
+    setLayout(new BorderLayout());
+
+    // get the button and title parameters
+    if((startLabel = getParameter("startButton")) == null)
+      run();
+    else {
+      startButton = new Button(getParameter("startButton"));
+      add("Center", startButton);
+      if((stopLabel = getParameter("stopButton")) == null)
+        stopLabel = "STOP!";
+      if((frameTitle = getParameter("frameTitle")) == null)
+        frameTitle = "The Java Telnet Applet";
+    }
+    
+  }
+  
+  /**
+   * Load the applet finally. When using a button this creates a new frame
+   * to put the applet in.
+   */
+  public void run() {
+    if(applet == null) try {
+      applet = (Applet)Class.forName(getParameter("applet")).newInstance();
+      applet.setStub(this);
+    } catch(Exception e) {
+      System.err.println("appWrapper: could not load "+appletName);
+      e.printStackTrace();
+      return;
+    } else {
+      System.err.println("appWrapper: applet already loaded");
+      return;
+    }
+
+    if(startButton == null) {
+      add("Center", applet);
+      applet.init();
+    } else {
+      f = new frame(frameTitle);
+      f.setLayout(new BorderLayout());
+      f.add("Center", applet);
+      applet.init();
+      f.resize(applet.minimumSize());
+      f.pack();
+      f.show();
+    }
+    applet.start();
+
+    if(startButton != null)
+      startButton.setLabel(stopLabel);
+    
+    // stop loader thread
+    while(loader != null) {
+      if(f == null || !f.isVisible()) {
+        startButton.setLabel(startLabel);
+        loader.stop();
+        loader = null;
+      }
+      try { loader.sleep(5000); }
+      catch(InterruptedException e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  /**
+   * This method is called when the applet want's to be resized.
+   * @param width the width of the applet
+   * @param height the height of the applet
+   */
+  public void appletResize(int width, int height) {
+    System.err.println("appWrapper: appletResize()");
+    if(applet != null) applet.resize(width, height);
+  }
+
+  /**
+   * Give information about the applet.
+   */
+  public String getAppletInfo()
+  {
+    String info = "appWrapper: $Id$\n";
+    if(applet != null)
+      info += applet.getAppletInfo();
+    return info;
+  }
+  
+  /**
+   * Give information about the appWrapper and the applet loaded.
+   */
+  public String[][] getParameterInfo()
+  {
+    String info[][];
+    String wrapper[][] = {
+      {"applet",   "String",   "appWrapper: Applet to load"},
+    };
+    if(applet != null) {
+      String tmp[][] = applet.getParameterInfo();
+      info = new String[tmp.length + 1][3];
+      System.arraycopy(tmp, 0, info, 1, tmp.length);
+    }
+    else info = new String[1][3];
+    System.arraycopy(wrapper, 0, info, 0, 1);
+      
+    return info;
+  }
+
+  /**
+   * Write a message to the applet area.
+   */
+  public void paint(Graphics g) 
+  {
+    String message;
+    if(applet != null) 
+      message = "Click to reattach the Applet!";
+    else message = "The was no applet load (maybe an error)!";
+
+    
+    int width = size().width / 2 - 
+      (getFontMetrics(getFont())).stringWidth(message) / 2;
+    int height = size().height / 2;
+    
+    g.setColor(Color.red);
+    g.drawString(message, width, height);
+  }
+  
+  /**
+   * reshape the applet and ourself
+   */
+  public void reshape(int x, int y, int w, int h)
+  {
+    if(applet != null) applet.reshape(x, y, w, h);
+    super.reshape(x, y, w, h);
+  }
+
+  /**
+   * Handle button events. When pressed it either creates the new applet
+   * window or destoys it.
+   */
+  public boolean handleEvent(Event evt) 
+  {
+    if(evt.target == startButton && evt.id == Event.ACTION_EVENT) {
+      if(applet == null) {
+        startButton.setLabel("Loading ...");
+        (loader = new Thread(this)).start();
+      } else {
+        if(applet.getParent() instanceof Frame) {
+          Frame frame = (Frame)applet.getParent();
+          frame.hide();
+          frame.dispose();
+        }
+        applet.stop();
+        applet.destroy();
+        applet = null;
+        startButton.setLabel(startLabel);
+      }
+      return true;
+    }
+    if(evt.id == Event.MOUSE_UP && applet.getParent() instanceof Frame) {
+      Frame frame = (Frame)applet.getParent();
+      frame.hide();
+      frame.dispose();
+      add("Center", applet);
+      validate();
+      layout();
+      return true;
+    }
+    return false;
+  }
+}
diff --git a/web/root/telnet/classes.zip b/web/root/telnet/classes.zip
new file mode 100644
index 0000000000000000000000000000000000000000..cb379d8a09a6b3f757679bfe247d1a8feb60d6c8
Binary files /dev/null and b/web/root/telnet/classes.zip differ
diff --git a/web/root/telnet/display/CharDisplay.class b/web/root/telnet/display/CharDisplay.class
new file mode 100644
index 0000000000000000000000000000000000000000..47aabd9bde8b23ca4852daa70e37411bfe9791c5
Binary files /dev/null and b/web/root/telnet/display/CharDisplay.class differ
diff --git a/web/root/telnet/display/CharDisplay.java b/web/root/telnet/display/CharDisplay.java
new file mode 100644
index 0000000000000000000000000000000000000000..f954b4e884c41fa2f3cdab83d3ea2522d792fa2a
--- /dev/null
+++ b/web/root/telnet/display/CharDisplay.java
@@ -0,0 +1,1297 @@
+/**
+ * CharDisplay -- a simple character display
+ * --
+ * $Id$
+ * $timestamp: Thu Jul 24 15:19:18 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package display;
+
+import java.awt.Graphics;
+import java.awt.Panel;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Point;
+import java.awt.Insets;
+import java.awt.Event;
+import java.awt.TextArea;
+import java.awt.Label;
+import java.awt.Frame;
+import java.awt.Scrollbar;
+import java.awt.Rectangle;
+
+/**
+ * A simple character display.
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ */
+public class CharDisplay extends Panel
+{
+  /**
+   * If you need the runtime version, just ask this variable.
+   */
+  public String version = "$Revision$ $Date$";
+  /**
+   * Enable debug messages. This is final static to prevent unused
+   * code to be compiled.
+   */
+  public final static int debug = 0;
+  
+  private Dimension size;      /* rows and columns */
+  private Insets insets;      /* size of the border */
+  private boolean raised;      /* indicator if the border is raised */
+
+  private char charArray[][];      /* contains the characters */
+  private int charAttributes[][];    /* contains character attrs */
+  private int bufSize, maxBufSize;    /* buffer sizes */
+
+  private int windowBase;      /* where the start displaying */
+  private int screenBase;      /* the actual screen start */
+  private int topMargin;      /* top scroll margon */
+  private int bottomMargin;      /* bottom scroll margon */
+  private Scrollbar scrollBar;  /* the scroll bar */
+  private String scrBarPos;      /* the scroll bar position */
+
+  private Font normalFont;      /* normal font */
+  private FontMetrics fm;      /* current font metrics */
+  private int charWidth;      /* current width of a char */
+  private int charHeight;      /* current height of a char */
+  private int charDescent;      /* base line descent */
+  private int resizeStrategy;      /* current resizing strategy */
+
+  private int cursorX, cursorY;      /* current cursor position */
+  private Point selectBegin, selectEnd;  /* selection coordinates */
+  private TextArea selection;
+  private Frame selectFrame;
+
+  private display.SoftFont  sf = new display.SoftFont();
+
+  private boolean screenLocked = false;    /* screen needs to be locked */
+                                                /* because of paint requests */
+                                                /* during other operations */
+  private boolean update[];
+  
+  public Color notbold(Color colr)
+  {
+    return new Color(Math.max((int) (colr.getRed() *.85), 0),
+		Math.max((int) (colr.getGreen() * .85), 0),
+		Math.max((int) (colr.getBlue() * .85), 0));
+  }
+
+  private Color color[] = { notbold(Color.black),
+                            notbold(Color.red),
+                            notbold(Color.green),
+                            notbold(Color.yellow),
+                            notbold(Color.blue),
+                            notbold(Color.magenta),
+                            notbold(Color.cyan),
+                            notbold(Color.white),
+  };
+  private final static int COLOR_FG_STD = 7;
+  private final static int COLOR_FG_BOLD = 3;
+  private final static int COLOR_BG_STD = 0;
+  private final static int COLOR        = 0x7f8;
+  private final static int COLOR_FG     = 0x78;
+  private final static int COLOR_BG     = 0x780;
+
+  /**
+   * Scroll up when inserting a line.
+   */
+  public final static boolean SCROLL_UP   = false;
+  /**
+   * Scroll down when inserting a line.
+   */
+  public final static boolean SCROLL_DOWN = true;
+
+  /**
+   * Do nothing when the container is resized.
+   */
+  public final static int RESIZE_NONE  = 0;
+  /**
+   * Resize the width and height of the characterscreen.
+   */
+  public final static int RESIZE_SCREEN  = 1;
+  /**
+   * Resize the font to the new screensize.
+   */
+  public final static int RESIZE_FONT  = 2;
+  
+  /**
+   * Make character normal.
+   */ 
+  public final static int NORMAL  = 0x00;
+  /**
+   * Make character bold.
+   */ 
+  public final static int BOLD    = 0x01;
+  /**
+   * Underline character.
+   */ 
+  public final static int UNDERLINE  = 0x02;
+  /**
+   * Invert character.
+   */ 
+  public final static int INVERT  = 0x04;
+
+  private void InitializeCharDisplay(int width, int height, 
+                                     String fontname, int fsize)
+  {
+    System.err.println("CharDisplay: screen size: ["+width+","+height+"]");
+    normalFont = new Font(fontname, Font.BOLD, fsize);
+    setFont(normalFont);
+    fm = getFontMetrics(normalFont);
+    if(fm != null)
+    {
+      charWidth = fm.charWidth('@');
+      charHeight = fm.getHeight();
+      charDescent = fm.getDescent();
+    }
+
+    resizeStrategy = RESIZE_FONT;
+    size = new Dimension(width, height);
+    charArray = new char[size.height][size.width];
+    charAttributes = new int[size.height][size.width];
+    bufSize = size.height;
+    maxBufSize = 2 * size.height;
+
+    windowBase = 0;
+    screenBase = 0;
+    topMargin = 0;
+    bottomMargin = size.height - 1;
+
+    update = new boolean[size.height + 1];
+    for(int i = 1; i <= size.height; i++) update[i] = true;
+
+    selectBegin = new Point(0,0);
+    selectEnd = new Point(0,0);
+
+    setLayout(null);
+  }
+  
+  /**
+   * Create a character display with size 80x24 and Font "Courier", size 12.
+   */
+  public CharDisplay()
+  {
+    InitializeCharDisplay(80, 24, "Courier", 12);
+  }
+
+  /**
+   * Create a character display with specific size, Font is "Courier", size 12.
+   */
+  public CharDisplay(int width, int height)
+  {
+    InitializeCharDisplay(width, height, "Courier", 12);
+  }
+
+  /**
+   * Create a character display with 80x24 and specific font and font size.
+   */
+  public CharDisplay(String fname, int fsize)
+  {
+    InitializeCharDisplay(80, 24, fname, fsize);
+  }
+
+  /**
+   * Create a character display with specific size, font and font size.
+   */
+  public CharDisplay(int width, int height, String fname, int fsize)
+  {
+    InitializeCharDisplay(width, height, fname, fsize);
+  }
+  
+  /**
+   * Put a character on the screen with normal font and outline.
+   * The character previously on that position will be overwritten.
+   * You need to call redraw() to update the screen.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @param ch the character to show on the screen
+   * @see #insertChar
+   * @see #deleteChar
+   * @see #redraw
+   */
+  public void putChar(int c, int l, char ch)
+  {
+    putChar(c, l, ch, NORMAL);
+  }
+
+  /**
+   * Put a character on the screen with specific font and outline.
+   * The character previously on that position will be overwritten.
+   * You need to call redraw() to update the screen.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @param ch the character to show on the screen
+   * @param attributes the character attributes
+   * @see #BOLD
+   * @see #UNDERLINE
+   * @see #INVERT
+   * @see #NORMAL
+   * @see #insertChar
+   * @see #deleteChar
+   * @see #redraw
+   */  
+
+  public void putChar(int c, int l, char ch, int attributes)
+  {
+    c = checkBounds(c, 0, size.width - 1);
+    l = checkBounds(l, 0, size.height - 1);
+    charArray[screenBase + l][c] = ch;
+    charAttributes[screenBase + l][c] = attributes;
+    markLine(l, 1);
+  }
+
+  /**
+   * Get the character at the specified position.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @see #putChar
+   */
+  public char getChar(int c, int l)
+  {
+    c = checkBounds(c, 0, size.width - 1);
+    l = checkBounds(l, 0, size.height - 1);
+    return charArray[l][c];
+  }
+
+  /**
+   * Get the attributes for the specified position.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @see #putChar
+   */
+  public int getAttributes(int c, int l)
+  {
+    c = checkBounds(c, 0, size.width - 1);
+    l = checkBounds(l, 0, size.height - 1);
+    return charAttributes[l][c];
+  }
+
+  /**
+   * Insert a character at a specific position on the screen.
+   * All character right to from this position will be moved one to the right.
+   * You need to call redraw() to update the screen.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @param ch the character to insert
+   * @param attributes the character attributes
+   * @see #BOLD
+   * @see #UNDERLINE
+   * @see #INVERT
+   * @see #NORMAL
+   * @see #putChar
+   * @see #deleteChar
+   * @see #redraw
+   */
+  public void insertChar(int c, int l, char ch, int attributes)
+  {
+    c = checkBounds(c, 0, size.width - 1);
+    l = checkBounds(l, 0, size.height - 1);
+    System.arraycopy(charArray[screenBase + l], c, 
+         charArray[screenBase + l], c + 1, size.width - c - 1);
+    System.arraycopy(charAttributes[screenBase + l], c, 
+         charAttributes[screenBase + l], c + 1, size.width - c - 1);
+    putChar(c, l, ch, attributes);
+  }
+
+  /**
+   * Delete a character at a given position on the screen.
+   * All characters right to the position will be moved one to the left.
+   * You need to call redraw() to update the screen.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @see #putChar
+   * @see #insertChar
+   * @see #redraw
+   */
+  public void deleteChar(int c, int l)
+  {
+    c = checkBounds(c, 0, size.width - 1);
+    l = checkBounds(l, 0, size.height - 1);
+    if(c < size.width - 1)
+    {
+      System.arraycopy(charArray[screenBase + l], c + 1,
+           charArray[screenBase + l], c, size.width - c - 1);
+      System.arraycopy(charAttributes[screenBase + l], c + 1,
+           charAttributes[screenBase + l], c, size.width - c - 1);
+    }
+    putChar(size.width - 1, l, (char)0);
+  }
+
+  /**
+   * Put a String at a specific position. Any characters previously on that 
+   * position will be overwritten. You need to call redraw() for screen update.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @param s the string to be shown on the screen
+   * @see #BOLD
+   * @see #UNDERLINE
+   * @see #INVERT
+   * @see #NORMAL
+   * @see #putChar
+   * @see #insertLine
+   * @see #deleteLine
+   * @see #redraw
+   */  
+  public void putString(int c, int l, String s)
+  {
+    putString(c, l, s, NORMAL);
+  }
+  
+  /**
+   * Put a String at a specific position giving all characters the same
+   * attributes. Any characters previously on that position will be 
+   * overwritten. You need to call redraw() to update the screen.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (line)
+   * @param s the string to be shown on the screen
+   * @param attributes character attributes
+   * @see #BOLD
+   * @see #UNDERLINE
+   * @see #INVERT
+   * @see #NORMAL
+   * @see #putChar
+   * @see #insertLine
+   * @see #deleteLine
+   * @see #redraw
+   */
+  public void putString(int c, int l, String s, int attributes)
+  {
+    for(int i = 0; i < s.length() && c + i < size.width; i++)
+      putChar(c + i, l, s.charAt(i), attributes);
+  }
+
+  /**
+   * Insert a blank line at a specific position.
+   * The current line and all previous lines are scrolled one line up. The
+   * top line is lost. You need to call redraw() to update the screen.
+   * @param l the y-coordinate to insert the line
+   * @see #deleteLine
+   * @see #redraw
+   */
+  public void insertLine(int l)
+  {
+    insertLine(l, 1, SCROLL_UP);
+  }
+
+  /**
+   * Insert blank lines at a specific position.
+   * You need to call redraw() to update the screen
+   * @param l the y-coordinate to insert the line
+   * @param n amount of lines to be inserted
+   * @see #deleteLine
+   * @see #redraw
+   */
+  public void insertLine(int l, int n)
+  {
+    insertLine(l, n, SCROLL_UP);
+  }  
+
+  /**
+   * Insert a blank line at a specific position. Scroll text according to
+   * the argument.
+   * You need to call redraw() to update the screen
+   * @param l the y-coordinate to insert the line
+   * @param scrollDown scroll down
+   * @see #deleteLine
+   * @see #SCROLL_UP
+   * @see #SCROLL_DOWN
+   * @see #redraw
+   */
+  public void insertLine(int l, boolean scrollDown)
+  {
+    insertLine(l, 1, scrollDown);
+  }  
+
+  /**
+   * Insert blank lines at a specific position.
+   * The current line and all previous lines are scrolled one line up. The
+   * top line is lost. You need to call redraw() to update the screen.
+   * @param l the y-coordinate to insert the line
+   * @param n number of lines to be inserted
+   * @param scrollDown scroll down
+   * @see #deleteLine
+   * @see #SCROLL_UP
+   * @see #SCROLL_DOWN
+   * @see #redraw
+   */
+  public synchronized void insertLine(int l, int n, boolean scrollDown)
+  {
+    screenLocked = true;
+
+    l = checkBounds(l, 0, size.height - 1);
+
+    char cbuf[][] = null;
+    int abuf[][] = null;
+    int offset = 0;
+    int oldBase = screenBase;
+    int top = (l < topMargin ? 
+               0 : (l > bottomMargin ?
+                    (bottomMargin + 1 < size.height ?
+                     bottomMargin + 1 : size.height - 1) : topMargin));
+    int bottom = (l > bottomMargin ?
+                  size.height - 1 : (l < topMargin ? 
+                                     (topMargin > 0 ?
+                                      topMargin - 1 : 0) : bottomMargin));
+    
+    
+    if(scrollDown) {
+      if(n > (bottom - top)) n = (bottom - top);
+      cbuf = new char[bottom - l - (n - 1)][size.width];
+      abuf = new int[bottom - l - (n - 1)][size.width];
+      
+      System.arraycopy(charArray, oldBase + l, cbuf, 0, bottom - l - (n - 1));
+      System.arraycopy(charAttributes, oldBase + l, 
+		       abuf, 0, bottom - l - (n - 1));
+      System.arraycopy(cbuf, 0, charArray, oldBase + l + n, 
+		       bottom - l - (n - 1));
+      System.arraycopy(abuf, 0, charAttributes, oldBase + l + n, 
+		       bottom - l - (n - 1));
+      cbuf = charArray;
+      abuf = charAttributes;
+    } else try {
+      if(n > (bottom - top) + 1) n = (bottom - top) + 1;
+      if(bufSize < maxBufSize) {
+        if(bufSize + n > maxBufSize) {
+          offset = n - (maxBufSize - bufSize);
+          bufSize = maxBufSize;
+          screenBase = maxBufSize - size.height - 1;
+          windowBase = screenBase;
+        } else {
+          screenBase += n;
+          windowBase += n;
+          bufSize += n;
+        }
+        cbuf = new char[bufSize][size.width];
+        abuf = new int[bufSize][size.width];
+      } else {
+        offset = n;
+        cbuf = charArray;
+        abuf = charAttributes;
+      }
+      /*
+       * copy anything from the top of the buffer (+offset) to the new top
+       * up to the screenBase.
+       */
+      if(oldBase > 0)
+      {
+        System.arraycopy(charArray, offset, 
+                         cbuf, 0, 
+                         oldBase - offset);
+        System.arraycopy(charAttributes, offset, 
+                         abuf, 0, 
+                         oldBase - offset);
+      }
+      /*
+       * copy anything from the top of the screen (screenBase) up to the
+       * topMargin to the new screen
+       */
+      if(top > 0)
+      {
+        System.arraycopy(charArray, oldBase, 
+                         cbuf, screenBase, 
+                         top);
+        System.arraycopy(charAttributes, oldBase, 
+                         abuf, screenBase, 
+                         top);
+      }
+      /* 
+       * copy anything from the topMargin up to the amount of lines inserted
+       * to the gap left over between scrollback buffer and screenBase
+       */
+      if(oldBase > 0) {
+	System.arraycopy(charArray, oldBase + top, 
+			 cbuf, oldBase - offset,
+			 n);
+	System.arraycopy(charAttributes, oldBase + top, 
+			 abuf, oldBase - offset,
+			 n);
+      }
+      /*
+       * copy anything from topMargin + n up to the line linserted to the
+       * topMargin
+       */
+      System.arraycopy(charArray, oldBase + top + n,
+                       cbuf, screenBase + top,
+                       l - top - (n - 1));
+      System.arraycopy(charAttributes, oldBase + top + n,
+                       abuf, screenBase + top,
+                       l - top - (n - 1));
+      /*
+       * copy the all lines next to the inserted to the new buffer
+       */
+      if(l < size.height - 1)
+      {
+        System.arraycopy(charArray, oldBase + l + 1,
+                         cbuf, screenBase + l + 1,
+                         (size.height - 1) - l);
+        System.arraycopy(charAttributes, oldBase + l + 1,
+                         abuf, screenBase + l + 1,
+                         (size.height - 1) - l);
+      }
+    } catch(ArrayIndexOutOfBoundsException e) {
+      System.err.println("*** Error while scrolling up:");
+      System.err.println("--- BEGIN STACKTRACE ---");
+      e.printStackTrace();
+      System.err.println("--- END STACKTRACE ---");
+      System.err.println("bufSize="+bufSize+", maxBufSize="+maxBufSize);
+      System.err.println("top="+top+", bottom="+bottom);
+      System.err.println("n="+n+", l="+l);
+      System.err.println("screenBase="+screenBase+", windowBase="+windowBase);
+      System.err.println("oldBase="+oldBase);
+      System.err.println("size.width="+size.width+", size.height="+size.height);
+      System.err.println("abuf.length="+abuf.length+", cbuf.length="+cbuf.length);
+      System.err.println("*** done dumping debug information");
+    }
+    
+    for(int i = 0; i < n; i++)
+    {
+      cbuf[(screenBase + l) + (scrollDown ? i : -i) ] = new char[size.width];
+      abuf[(screenBase + l) + (scrollDown ? i : -i) ] = new int[size.width];
+    }
+
+    charArray = cbuf;
+    charAttributes = abuf;
+    
+    if(scrollDown)
+      markLine(l, bottom - l + 1);
+    else
+      markLine(top, l - top + 1);
+
+    if(scrollBar != null)
+      scrollBar.setValues(windowBase, size.height, 0, bufSize);
+    
+    screenLocked = false;
+  }
+  
+  /**
+   * Delete a line at a specific position. Subsequent lines will be scrolled 
+   * up to fill the space and a blank line is inserted at the end of the 
+   * screen.
+   * @param l the y-coordinate to insert the line
+   * @see #deleteLine
+   */
+  public void deleteLine(int l)
+  {
+    l = checkBounds(l, 0, size.height - 1);
+
+    int bottom = (l>bottomMargin?size.height-1:
+		  (l<topMargin?topMargin:bottomMargin+1));
+    System.arraycopy(charArray, screenBase + l + 1,
+                     charArray, screenBase + l, bottom - l -1 );
+    System.arraycopy(charAttributes, screenBase + l + 1,
+                     charAttributes, screenBase + l, bottom - l -1);
+    charArray[screenBase + bottom - 1] = new char[size.width];
+    charAttributes[screenBase + bottom - 1] = new int[size.width];
+    markLine(l, bottom - l);
+  }
+
+
+  /**
+   * Delete a rectangular portion of the screen.
+   * You need to call redraw() to update the screen.
+   * @param c x-coordinate (column)
+   * @param l y-coordinate (row)
+   * @param w with of the area in characters
+   * @param h height of the area in characters
+   * @see #deleteChar
+   * @see #deleteLine
+   * @see redraw
+   */
+  public void deleteArea(int c, int l, int w, int h)
+  {
+    c = checkBounds(c, 0, size.width - 1);
+    l = checkBounds(l, 0, size.height - 1);
+
+    char cbuf[] = new char[w];
+    int abuf[] = new int[w];
+    
+    for(int i = 0; i < h && l + i < size.height; i++)
+    {
+      System.arraycopy(cbuf, 0, charArray[screenBase + l + i], c, w);
+      System.arraycopy(abuf, 0, charAttributes[screenBase + l + i], c, w);
+    }
+    markLine(l, h);
+  }
+
+  /**
+   * Puts the cursor at the specified position.
+   * @param c column
+   * @param l line
+   */
+  public void setCursorPos(int c, int l)
+  {
+    c = checkBounds(c, 0, size.width - 1);
+    l = checkBounds(l, 0, size.height - 1);
+    markLine(cursorY, 1);
+    cursorX = (c < size.width ? c : size.width);
+    cursorY = (l < size.height ? l : size.height);
+    markLine(l, 1);
+  }
+
+  /**
+   * Get the current cursor position.
+   * @see java.awt.Dimension
+   */
+  public Dimension getCursorPos()
+  {
+    return new Dimension(cursorX, cursorY);
+  }
+
+  /**
+   * Set the top scroll margin for the screen. If the current bottom margin
+   * is smaller it will become the top margin and the line will become the
+   * bottom margin.
+   * @param l line that is the margin
+   */
+  public void setTopMargin(int l)
+  {
+    if(l > bottomMargin) 
+    {
+      topMargin = bottomMargin;
+      bottomMargin = l;
+    }
+    else
+      topMargin = l;
+    if(topMargin < 0) topMargin = 0;
+    if(bottomMargin > size.height - 1) bottomMargin = size.height - 1;
+  }
+
+  /**
+   * Get the top scroll margin.
+   */
+  public int getTopMargin()
+  {
+    return topMargin;
+  }
+
+  /**
+   * Set the bottom scroll margin for the screen. If the current top margin
+   * is bigger it will become the bottom margin and the line will become the
+   * top margin.
+   * @param l line that is the margin
+   */
+  public void setBottomMargin(int l)
+  {
+    if(l < topMargin) 
+    {
+      bottomMargin = topMargin;
+      topMargin = l;
+    }
+    else
+      bottomMargin = l;
+    if(topMargin < 0) topMargin = 0;
+    if(bottomMargin > size.height - 1) bottomMargin = size.height - 1;
+  }
+
+  /**
+   * Get the bottom scroll margin.
+   */
+  public int getBottomMargin()
+  {
+    return bottomMargin;
+  }
+    
+  /**
+   * Set scrollback buffer size.
+   * @param amount new size of the buffer
+   */
+  public void setBufferSize(int amount)
+  {
+    screenLocked = true;
+
+    if(amount < size.height) amount = size.height;
+    if(amount < maxBufSize)
+    {
+      char cbuf[][] = new char[amount][size.width];
+      int abuf[][] = new int[amount][size.width];
+      System.arraycopy(charArray, bufSize - amount, cbuf, 0, amount);
+      System.arraycopy(charAttributes, bufSize - amount, abuf, 0, amount);
+      charArray = cbuf;
+      charAttributes = abuf;
+    }
+    maxBufSize = amount;
+ 
+    screenLocked = false;
+
+    repaint();
+  }
+
+  /**
+   * Retrieve current scrollback buffer size.
+   * @see #setBufferSize
+   */
+  public int getBufferSize()
+  {
+    return bufSize;
+  }
+
+  /**
+   * Retrieve maximum buffer Size.
+   * @see #getBufferSize
+   */
+  public int getMaxBufferSize()
+  {
+    return maxBufSize;
+  }
+
+  /**
+   * Set the current window base. This allows to view the scrollback buffer.
+   * @param line the line where the screen window starts
+   * @see setBufferSize
+   * @see getBufferSize
+   */
+  public void setWindowBase(int line)
+  {
+    if(line > screenBase) line = screenBase;
+    else if(line < 0) line = 0;
+    windowBase = line;
+    repaint();
+  }
+
+  /**
+   * Get the current window base.
+   * @see setWindowBase
+   */
+  public int getWindowBase()
+  {
+    return windowBase;
+  }
+
+  /**
+   * Change the size of the screen. This will include adjustment of the 
+   * scrollback buffer.
+   * @param columns width of the screen
+   * @param columns height of the screen
+   */
+  public void setWindowSize(int width, int height)
+  {
+    char cbuf[][];
+    int abuf[][];
+    int bsize = bufSize;
+
+    if(width < 1 || height < 1) return;
+
+    screenLocked = true;
+    
+    super.update(getGraphics());
+    
+    if(height > maxBufSize) 
+      maxBufSize = height;
+    if(height > bufSize)
+    {
+      bufSize = height;
+      screenBase = 0;
+      windowBase = 0;
+    }
+
+    cbuf = new char[bufSize][width];
+    abuf = new int[bufSize][width];
+    
+    for(int i = 0; i < bsize && i < bufSize; i++)
+    {
+      System.arraycopy(charArray[i], 0, cbuf[i], 0, 
+           width < size.width ? width : size.width);
+      System.arraycopy(charAttributes[i], 0, abuf[i], 0, 
+           width < size.width ? width : size.width);
+    }
+    charArray = cbuf;
+    charAttributes = abuf;
+    size = new Dimension(width, height);
+    topMargin = 0;
+    bottomMargin = height - 1;
+    update = new boolean[height + 1];
+    for(int i = 0; i <= height; i++) update[i] = true;
+    screenLocked = false;
+  }
+
+  /**
+   * Set the strategy when window is resized.
+   * RESIZE_FONT is default.
+   * @param strategy the strategy
+   * @see #RESIZE_NONE
+   * @see #RESIZE_FONT
+   * @see #RESIZE_SCREEN
+   */
+  public void setResizeStrategy(int strategy)
+  {
+    resizeStrategy = strategy;
+  }
+  
+  /**
+   * Get amount of rows on the screen.
+   */
+  public int getRows() { return size.height; }
+
+  /**
+   * Get amount of columns on the screen.
+   */
+  public int getColumns() { return size.width; }
+
+  /**
+   * Set the border thickness and the border type.
+   * @param thickness border thickness in pixels, zero means no border
+   * @param raised a boolean indicating a raised or embossed border
+   */
+  public void setBorder(int thickness, boolean raised)
+  {
+    if(thickness == 0) insets = null;
+    else insets = new Insets(thickness+1, thickness+1, 
+                             thickness+1, thickness+1);
+    this.raised = raised;
+  }
+
+  /**
+   * Set the scrollbar position. valid values are "East" or "West".
+   * @param position the position of the scrollbar
+   */
+  public void setScrollbar(String position)
+  {
+    add(scrollBar = new Scrollbar());
+    scrollBar.setValues(windowBase, size.height, 0, bufSize - size.height);
+    scrBarPos = position;
+  }
+  
+  /**
+   * Mark lines to be updated with redraw().
+   * @param l starting line
+   * @param n amount of lines to be updated
+   * @see #redraw
+   */
+  public void markLine(int l, int n)
+  {
+    l = checkBounds(l, 0, size.height - 1);
+    for(int i = 0; i < n && l + i < size.height; i++) 
+      update[l + i + 1] = true;
+  }
+  
+  /**
+   * Redraw marked lines.
+   * @see #markLine
+   */
+  public void redraw()
+  {
+    update[0] = true;
+    repaint();
+  }
+
+  /**
+   * Update the display. to reduce flashing we have overridden this method.
+   */
+  public void update(Graphics g)
+  {
+    paint(g);
+  }
+  
+  /**
+   * Paint the current screen. All painting is done here. Only lines that have
+   * changed will be redrawn!
+   */
+  public synchronized void paint(Graphics g)
+  {
+    if(screenLocked) return;
+    int xoffset = (super.size().width - size.width * charWidth - 
+                   (scrollBar != null ? 15 : 0)) / 2;
+    int yoffset = (super.size().height - size.height * charHeight) / 2;
+
+    Color fg = color[COLOR_FG_STD];
+    Color bg = color[COLOR_BG_STD];
+
+    if(scrollBar != null && scrBarPos.equals("West")) xoffset += 15;
+    
+    g.setFont(normalFont);
+
+    for(int l = 0; l < size.height; l++)
+    {
+      if(update[0] && !update[l + 1]) continue;
+      update[l + 1] = false;
+      for(int c = 0; c < size.width; c++)
+      {
+        int addr = 0;
+        int currAttr = charAttributes[windowBase + l][c];
+
+        fg = color[COLOR_FG_STD];
+    	bg = color[COLOR_BG_STD];
+
+	// Special handling of BOLD for terminals used on 5ESS 
+        if(((currAttr & BOLD) != 0)   &&
+	   ((currAttr & COLOR_FG) == 0) &&
+	   ((currAttr & COLOR_BG) == 0)   )
+	{
+	  fg = color[COLOR_FG_BOLD];
+	}
+
+        if ((currAttr & COLOR_FG) != 0) {
+          fg = color[((currAttr & COLOR_FG) >> 3)-1];
+        }
+        if ((currAttr & COLOR_BG) != 0) {
+          bg = color[((currAttr & COLOR_BG) >> 7)-1];
+        }
+
+        if((currAttr & BOLD) != 0) {
+          if(fg.equals(Color.black))
+            fg = Color.gray;
+          else {
+	    fg = fg.brighter();
+	    bg = bg.brighter();
+	  }
+        }
+        if((currAttr & INVERT) != 0) { Color swapc = bg; bg=fg;fg=swapc; }
+
+        if (sf.inSoftFont(charArray[windowBase + l][c])) {
+          g.setColor(bg);	
+          g.fillRect(c * charWidth + xoffset, l * charHeight + yoffset, 
+		     charWidth, charHeight);
+          g.setColor(fg);	
+          sf.drawChar(g,charArray[windowBase + l][c],xoffset+c*charWidth,
+		      l*charHeight+yoffset, charWidth, charHeight);
+          if((currAttr & UNDERLINE) != 0)
+            g.drawLine(c * charWidth + xoffset,
+                     (l+1) * charHeight - charDescent / 2 + yoffset,
+                     c * charWidth + charWidth + xoffset, 
+                     (l+1) * charHeight - charDescent / 2 + yoffset);
+          continue;
+        }
+        
+	// determine the maximum of characters we can print in one go
+        while(c + addr < size.width && 
+              charAttributes[windowBase + l][c + addr] == currAttr &&
+              !sf.inSoftFont(charArray[windowBase + l ][c+addr])
+        ) {
+          if(charArray[windowBase + l][c + addr] < ' ')
+            charArray[windowBase + l][c + addr] = ' ';
+          addr++;
+        }
+        
+        // clear the part of the screen we want to change (fill rectangle)
+        g.setColor(bg);
+        g.fillRect(c * charWidth + xoffset, l * charHeight + yoffset,
+                   addr * charWidth, charHeight);
+
+        g.setColor(fg);
+        
+	// draw the characters
+        g.drawChars(charArray[windowBase + l], c, addr, 
+                    c * charWidth + xoffset, 
+                    (l+1) * charHeight - charDescent + yoffset);
+
+        if((currAttr & UNDERLINE) != 0)
+          g.drawLine(c * charWidth + xoffset,
+                     (l+1) * charHeight - charDescent / 2 + yoffset,
+                     c * charWidth + addr * charWidth + xoffset, 
+                     (l+1) * charHeight - charDescent / 2 + yoffset);
+        
+        c += addr - 1;
+      }
+    }
+
+    // draw cursor
+    if(screenBase + cursorY >= windowBase && 
+       screenBase + cursorY < windowBase + size.height)
+    {
+      g.setColor(color[COLOR_FG_STD]);
+      g.setXORMode(color[COLOR_BG_STD]);
+      g.fillRect( cursorX * charWidth + xoffset, 
+                 (cursorY + screenBase - windowBase) * charHeight + yoffset,
+                 charWidth, charHeight);
+      g.setPaintMode();
+    }
+
+    if(windowBase <= selectBegin.y || windowBase <= selectEnd.y) {
+      int beginLine = selectBegin.y - windowBase;
+      int endLine = selectEnd.y - selectBegin.y;
+      if(beginLine < 0) {
+        endLine += beginLine;
+        beginLine = 0;
+      }
+      if(endLine > size.height) endLine = size.height - beginLine;
+       
+      g.setXORMode(color[COLOR_BG_STD]);
+      g.fillRect(selectBegin.x * charWidth + xoffset,
+                 beginLine * charHeight + yoffset,
+                 (endLine == 0 ? (selectEnd.x - selectBegin.x) : 
+                  (size.width - selectBegin.x)) 
+                 * charWidth,
+                 charHeight);
+      if(endLine > 1)
+        g.fillRect(0 + xoffset, 
+                   (beginLine + 1) * charHeight + yoffset, 
+                   size.width * charWidth, 
+                   (endLine - 1) * charHeight);
+      if(endLine > 0)
+        g.fillRect(0 + xoffset, 
+                   (beginLine + endLine) * charHeight + yoffset,
+                   selectEnd.x * charWidth, 
+                   charHeight);
+      g.setPaintMode();
+    }
+
+    if(insets != null) {
+      g.setColor(getBackground());
+      xoffset--; yoffset--;
+      for(int i = insets.top - 1; i >= 0; i--)
+        g.draw3DRect(xoffset - i, yoffset - i,
+                     charWidth * size.width + 1 + i * 2, 
+                     charHeight * size.height + 1 + i * 2,
+                     raised);
+    }
+
+    update[0] = false;
+  }
+
+  private int checkBounds(int value, int lower, int upper)
+  {
+    if(value < lower) return lower;
+    if(value > upper) return upper;
+    return value;
+  }
+
+  /**
+   * Reshape character display according to resize strategy.
+   * @see #setResizeStrategy
+   */
+  public void reshape(int x, int y, int w, int h)
+  {
+    if(debug > 0)
+      System.err.println("CharDisplay: reshape("+x+","+y+","+w+","+h+")");
+
+    int xborder = 0, yborder = 0;
+    
+    if(insets != null) {
+      w -= (xborder = insets.left + insets.right);
+      h -= (yborder = insets.top + insets.bottom);
+    }
+    if(scrollBar != null) { w -= 15;}
+
+    Font tmpFont = normalFont;
+    String fontName = normalFont.getName();
+    fm = getFontMetrics(normalFont);
+    if(fm != null)
+    {
+      charWidth = fm.charWidth('@');
+      charHeight = fm.getHeight();
+    }
+    
+    switch(resizeStrategy)
+    {
+    case RESIZE_SCREEN:
+      setWindowSize(w / charWidth, size.height = h / charHeight);
+      break;
+    case RESIZE_FONT:
+      int height = h / size.height;
+      int width = w / size.width;
+      
+      fm = getFontMetrics(normalFont = new Font(fontName, Font.PLAIN, 
+                                                charHeight));
+      
+      // adapt current font size (from small up to best fit)
+      if(fm.getHeight() < height || fm.charWidth('@') < width)
+        do {
+          fm = getFontMetrics(normalFont = new Font(fontName, Font.PLAIN, 
+                                                    ++charHeight));
+        } while(fm.getHeight() < height || 
+                fm.charWidth('@') < width); 
+      
+      // now check if we got a font that is too large
+      if(fm.getHeight() > height || fm.charWidth('@') > width)
+        do {
+          fm = getFontMetrics(normalFont = new Font(fontName, Font.PLAIN, 
+                                                    --charHeight));
+        } while(charHeight > 1 && 
+                (fm.getHeight() > height || 
+                 fm.charWidth('@') > width));
+      
+      if(charHeight <= 1) 
+      {
+        System.err.println("CharDisplay: error during resize, resetting");
+        normalFont = tmpFont;
+        System.err.println("CharDisplay: disabling font/screen resize");
+        resizeStrategy = RESIZE_NONE;
+      }
+
+      setFont(normalFont);
+      fm = getFontMetrics(normalFont);
+      charWidth = fm.charWidth('@');
+      charHeight = fm.getHeight();
+      charDescent = fm.getDescent();
+      break;
+    case RESIZE_NONE:
+    default:
+      break;
+    }
+    if(debug > 0)
+    {
+      System.err.println("CharDisplay: charWidth="+charWidth+", "+
+                         "charHeight="+charHeight+", "+
+                         "charDescent="+charDescent);
+      System.err.println("CharDisplay: "+normalFont+", "+fm);
+    }
+    super.reshape(x, y, 
+                  w + xborder + (scrollBar != null ? 15 : 0), 
+                  h + yborder);
+    
+    if(scrollBar != null) {
+      int xoffset = (super.size().width - size.width * charWidth - 15) / 2;
+      int yoffset = (super.size().height - size.height * charHeight) / 2;
+      if(scrBarPos.equals("West"))
+        scrollBar.reshape(xoffset - (xborder / 2), yoffset - yborder / 2,
+                          15, size.height * charHeight + yborder);
+      else
+        scrollBar.reshape(xoffset + (xborder / 2) + size.width * charWidth, 
+                          yoffset - yborder / 2, 15, 
+                          size.height * charHeight + yborder);
+    }
+  }
+
+  /**
+   * Return the real size in points of the character display.
+   * @return Dimension the dimension of the display
+   * @see java.awt.Dimension
+   */
+  public Dimension size()
+  {
+    int xborder = 0, yborder = 0;
+    if(insets != null) {
+      xborder = insets.left + insets.right;
+      yborder = insets.top + insets.bottom;
+    }
+    if(scrollBar != null) xborder += 15;
+    
+    return new Dimension(size.width * charWidth + xborder, 
+                         size.height * charHeight + yborder);
+  }
+
+  /**
+   * Return the preferred Size of the character display.
+   * This turns out to be the actual size.
+   * @return Dimension dimension of the display
+   * @see size
+   */
+  public Dimension preferredSize() 
+  {
+    return size();
+  }
+
+  /**
+   * The insets of the character display define the border.
+   * @return Insets border thickness in pixels
+   */
+  public Insets insets() 
+  {
+    return insets == null ? super.insets() : insets;
+  }
+
+  /**
+   * Handle mouse events for copy & paste
+   * @param evt the event that occured
+   * @return boolean true if action was taken
+   * @see java.awt.Event
+   */
+  public boolean handleEvent(Event evt) 
+  {
+    // handle scrollbar events
+    if(evt != null && evt.target == scrollBar && evt.arg != null) {
+      int val = ((Integer)evt.arg).intValue();
+      setWindowBase(val);
+      return true;
+    }
+
+    if(evt.id == Event.MOUSE_DOWN || evt.id == Event.MOUSE_UP ||
+       evt.id == Event.MOUSE_DRAG) {
+      int xoffset = (super.size().width - size.width * charWidth) / 2;
+      int yoffset = (super.size().height - size.height * charHeight) / 2;
+      switch(evt.id) {
+      case Event.MOUSE_DOWN:
+        selectBegin.x = (evt.x - xoffset) / charWidth;
+        selectBegin.y = (evt.y - yoffset) / charHeight + windowBase;
+        selectEnd.x = selectBegin.x;
+        selectEnd.y = selectBegin.y;
+        if(selectFrame != null) selectFrame.hide();
+        break;
+      case Event.MOUSE_UP:
+      case Event.MOUSE_DRAG:
+        int x = (evt.x - xoffset) / charWidth;
+        int y = (evt.y - yoffset) / charHeight + windowBase;
+        int oldx = selectEnd.x, oldy = selectEnd.y;
+
+        if((x < selectBegin.x && y < selectBegin.y) &&
+           (x < selectEnd.x && y < selectEnd.y)) {
+          selectBegin.x = x;
+          selectBegin.y = y;
+        } else {
+          selectEnd.x = x;
+          selectEnd.y = y;
+        }
+
+        if(evt.id == Event.MOUSE_UP) {
+          if(selectBegin.x == selectEnd.x &&
+             selectBegin.y == selectEnd.y) {
+            repaint();
+            return true;
+          }
+          String tmp = "";
+	  // fix end.x and end.y, they can get over the border
+	  if (selectEnd.x < 0) selectEnd.x = 0;
+	  if (selectEnd.y < 0) selectEnd.y = 0;
+	  if (selectEnd.y >= charArray.length) {
+		selectEnd.y = charArray.length-1;
+	  }
+	  if (selectEnd.x >= charArray[0].length) {
+		selectEnd.x = charArray[0].length-1;
+	  }
+          for(int l = selectBegin.y; l <= selectEnd.y; l++)
+            if(l == selectBegin.y) 
+              tmp = (new String(charArray[l])).substring(selectBegin.x) + "\n";
+            else if(l == selectEnd.y) 
+              tmp += (new String(charArray[l])).substring(0, selectEnd.x);
+            else tmp += new String(charArray[l]) + "\n";
+          if(selectFrame == null) {
+
+	    /* for jdk-1.1
+	    String s=(String) ((StringSelection)this.getToolkit().
+			       getSystemClipboard().
+			       getContents(this)).
+	      getTransferData(DataFlavor.stringFlavor);
+	    System.out.println(s);
+	    */
+            selectFrame = new Frame("Pasteboard");
+            selection = new TextArea();
+            selection.setFont(normalFont);
+            selectFrame.add("Center", selection);
+            selectFrame.add("South", new Label("Click on the terminal window"+
+                                               " to hide!"));
+            selectFrame.pack();
+          }
+          selection.setText(tmp);
+          selectFrame.show();
+          selection.selectAll();
+          repaint();
+        } else
+          if(oldx != x || oldy != y) repaint();
+        break;
+      }
+      return true;
+    }
+    return false;
+  }
+}
diff --git a/web/root/telnet/display/SoftFont.class b/web/root/telnet/display/SoftFont.class
new file mode 100644
index 0000000000000000000000000000000000000000..327e2572416d75f327814f185071c176d60282d3
Binary files /dev/null and b/web/root/telnet/display/SoftFont.class differ
diff --git a/web/root/telnet/display/SoftFont.java b/web/root/telnet/display/SoftFont.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7460afc98d95fd884615135234c31733c567a7d
--- /dev/null
+++ b/web/root/telnet/display/SoftFont.java
@@ -0,0 +1,1005 @@
+/*
+ * SoftFont -- a unicode softfont displayer
+ * --
+ * $Id$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+package display;
+
+import java.awt.*;
+import java.util.*;
+/**********************************************/
+/*                                            */
+/*       Font file generated by cpi2fnt       */
+/*                                            */
+/**********************************************/
+
+public class SoftFont {
+	final static private char	SF_BITMAP = 0;
+	final static private char	SF_FILLRECT = 1;
+
+
+	final static private char	SF_CHAR	= 0;
+	final static private char	SF_WIDTH= 1;
+	final static private char	SF_HEIGHT= 2;
+	final static private char	SF_TYPE  = 3;
+	final static private char	SF_DATA  = 4;
+	java.util.Hashtable font;
+	/** 
+	 * softfont characterdata
+	 */
+	private static char[][] fontdata = {
+	
+	{0x01,8,8,SF_BITMAP, /* 1 0x01 '^A' */
+	0x7e, /* 01111110 */
+	0x81, /* 10000001 */
+	0xa5, /* 10100101 */
+	0x81, /* 10000001 */
+	0xbd, /* 10111101 */
+	0x99, /* 10011001 */
+	0x81, /* 10000001 */
+	0x7e, /* 01111110 */
+	},{ 0x02,8,8,SF_BITMAP,/* 2 0x02 '^B' */
+	0x7e, /* 01111110 */
+	0xff, /* 11111111 */
+	0xdb, /* 11011011 */
+	0xff, /* 11111111 */
+	0xc3, /* 11000011 */
+	0xe7, /* 11100111 */
+	0xff, /* 11111111 */
+	0x7e, /* 01111110 */
+	},{ 0x03,8,8,SF_BITMAP,/* 3 0x03 '^C' */
+	0x6c, /* 01101100 */
+	0xfe, /* 11111110 */
+	0xfe, /* 11111110 */
+	0xfe, /* 11111110 */
+	0x7c, /* 01111100 */
+	0x38, /* 00111000 */
+	0x10, /* 00010000 */
+	0x00, /* 00000000 */
+	},{ 0x04,8,8,SF_BITMAP,/* 4 0x04 '^D' */
+	0x10, /* 00010000 */
+	0x38, /* 00111000 */
+	0x7c, /* 01111100 */
+	0xfe, /* 11111110 */
+	0x7c, /* 01111100 */
+	0x38, /* 00111000 */
+	0x10, /* 00010000 */
+	0x00, /* 00000000 */
+	},{ 0x05,8,8,SF_BITMAP,/* 5 0x05 '^E' */
+	0x38, /* 00111000 */
+	0x7c, /* 01111100 */
+	0x38, /* 00111000 */
+	0xfe, /* 11111110 */
+	0xfe, /* 11111110 */
+	0xd6, /* 11010110 */
+	0x10, /* 00010000 */
+	0x38, /* 00111000 */
+	},{ 0x06,8,8,SF_BITMAP,/* 6 0x06 '^F' */
+	0x10, /* 00010000 */
+	0x38, /* 00111000 */
+	0x7c, /* 01111100 */
+	0xfe, /* 11111110 */
+	0xfe, /* 11111110 */
+	0x7c, /* 01111100 */
+	0x10, /* 00010000 */
+	0x38, /* 00111000 */
+	},{ 0x2666,8,8,SF_BITMAP,/* 9830 0x2666 BLACK DIAMOND */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x18, /* 00011000 */
+	0x3c, /* 00111100 */
+	0x3c, /* 00111100 */
+	0x18, /* 00011000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x07,8,8,SF_BITMAP,/* 7 0x07 '^G' */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x18, /* 00011000 */
+	0x3c, /* 00111100 */
+	0x3c, /* 00111100 */
+	0x18, /* 00011000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x08,8,8,SF_BITMAP,/* 8 0x08 '^H' */
+	0xff, /* 11111111 */
+	0xff, /* 11111111 */
+	0xe7, /* 11100111 */
+	0xc3, /* 11000011 */
+	0xc3, /* 11000011 */
+	0xe7, /* 11100111 */
+	0xff, /* 11111111 */
+	0xff, /* 11111111 */
+	},{ 0x09,8,8,SF_BITMAP,/* 9 0x09 '^I' */
+	0x00, /* 00000000 */
+	0x3c, /* 00111100 */
+	0x66, /* 01100110 */
+	0x42, /* 01000010 */
+	0x42, /* 01000010 */
+	0x66, /* 01100110 */
+	0x3c, /* 00111100 */
+	0x00, /* 00000000 */
+	},{ 0x0a,8,8,SF_BITMAP,/* 10 0x0a '^J' */
+	0xff, /* 11111111 */
+	0xc3, /* 11000011 */
+	0x99, /* 10011001 */
+	0xbd, /* 10111101 */
+	0xbd, /* 10111101 */
+	0x99, /* 10011001 */
+	0xc3, /* 11000011 */
+	0xff, /* 11111111 */
+	},{ 0x0b,8,8,SF_BITMAP,/* 11 0x0b '^K' */
+	0x0f, /* 00001111 */
+	0x07, /* 00000111 */
+	0x0f, /* 00001111 */
+	0x7d, /* 01111101 */
+	0xcc, /* 11001100 */
+	0xcc, /* 11001100 */
+	0xcc, /* 11001100 */
+	0x78, /* 01111000 */
+	},{ 0x0c,8,8,SF_BITMAP,/* 12 0x0c '^L' */
+	0x3c, /* 00111100 */
+	0x66, /* 01100110 */
+	0x66, /* 01100110 */
+	0x66, /* 01100110 */
+	0x3c, /* 00111100 */
+	0x18, /* 00011000 */
+	0x7e, /* 01111110 */
+	0x18, /* 00011000 */
+	},{ 0x0d,8,8,SF_BITMAP,/* 13 0x0d '^M' */
+	0x3f, /* 00111111 */
+	0x33, /* 00110011 */
+	0x3f, /* 00111111 */
+	0x30, /* 00110000 */
+	0x30, /* 00110000 */
+	0x70, /* 01110000 */
+	0xf0, /* 11110000 */
+	0xe0, /* 11100000 */
+	},{ 0x0e,8,8,SF_BITMAP,/* 14 0x0e '^N' */
+	0x7f, /* 01111111 */
+	0x63, /* 01100011 */
+	0x7f, /* 01111111 */
+	0x63, /* 01100011 */
+	0x63, /* 01100011 */
+	0x67, /* 01100111 */
+	0xe6, /* 11100110 */
+	0xc0, /* 11000000 */
+	},{ 0x0f,8,8,SF_BITMAP,/* 15 0x0f '^O' */
+	0x18, /* 00011000 */
+	0xdb, /* 11011011 */
+	0x3c, /* 00111100 */
+	0xe7, /* 11100111 */
+	0xe7, /* 11100111 */
+	0x3c, /* 00111100 */
+	0xdb, /* 11011011 */
+	0x18, /* 00011000 */
+	},{ 0x10,8,8,SF_BITMAP,/* 16 0x10 '^P' */
+	0x80, /* 10000000 */
+	0xe0, /* 11100000 */
+	0xf8, /* 11111000 */
+	0xfe, /* 11111110 */
+	0xf8, /* 11111000 */
+	0xe0, /* 11100000 */
+	0x80, /* 10000000 */
+	0x00, /* 00000000 */
+	},{ 0x11,8,8,SF_BITMAP,/* 17 0x11 '^Q' */
+	0x02, /* 00000010 */
+	0x0e, /* 00001110 */
+	0x3e, /* 00111110 */
+	0xfe, /* 11111110 */
+	0x3e, /* 00111110 */
+	0x0e, /* 00001110 */
+	0x02, /* 00000010 */
+	0x00, /* 00000000 */
+	},{ 0x12,8,8,SF_BITMAP,/* 18 0x12 '^R' */
+	0x18, /* 00011000 */
+	0x3c, /* 00111100 */
+	0x7e, /* 01111110 */
+	0x18, /* 00011000 */
+	0x18, /* 00011000 */
+	0x7e, /* 01111110 */
+	0x3c, /* 00111100 */
+	0x18, /* 00011000 */
+	},{ 0x13,8,8,SF_BITMAP,/* 19 0x13 '^S' */
+	0x66, /* 01100110 */
+	0x66, /* 01100110 */
+	0x66, /* 01100110 */
+	0x66, /* 01100110 */
+	0x66, /* 01100110 */
+	0x00, /* 00000000 */
+	0x66, /* 01100110 */
+	0x00, /* 00000000 */
+	},{ 0x14,8,8,SF_BITMAP,/* 20 0x14 '^T' */
+	0x7f, /* 01111111 */
+	0xdb, /* 11011011 */
+	0xdb, /* 11011011 */
+	0x7b, /* 01111011 */
+	0x1b, /* 00011011 */
+	0x1b, /* 00011011 */
+	0x1b, /* 00011011 */
+	0x00, /* 00000000 */
+	},{ 0x15,8,8,SF_BITMAP,/* 21 0x15 '^U' */
+	0x3e, /* 00111110 */
+	0x61, /* 01100001 */
+	0x3c, /* 00111100 */
+	0x66, /* 01100110 */
+	0x66, /* 01100110 */
+	0x3c, /* 00111100 */
+	0x86, /* 10000110 */
+	0x7c, /* 01111100 */
+	},{ 0x16,8,8,SF_BITMAP,/* 22 0x16 '^V' */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x7e, /* 01111110 */
+	0x7e, /* 01111110 */
+	0x7e, /* 01111110 */
+	0x00, /* 00000000 */
+	},{ 0x17,8,8,SF_BITMAP,/* 23 0x17 '^W' */
+	0x18, /* 00011000 */
+	0x3c, /* 00111100 */
+	0x7e, /* 01111110 */
+	0x18, /* 00011000 */
+	0x7e, /* 01111110 */
+	0x3c, /* 00111100 */
+	0x18, /* 00011000 */
+	0xff, /* 11111111 */
+	},{ 0x18,8,8,SF_BITMAP,/* 24 0x18 '^X' */
+	0x18, /* 00011000 */
+	0x3c, /* 00111100 */
+	0x7e, /* 01111110 */
+	0x18, /* 00011000 */
+	0x18, /* 00011000 */
+	0x18, /* 00011000 */
+	0x18, /* 00011000 */
+	0x00, /* 00000000 */
+	},{ 0x19,8,8,SF_BITMAP,/* 25 0x19 '^Y' */
+	0x18, /* 00011000 */
+	0x18, /* 00011000 */
+	0x18, /* 00011000 */
+	0x18, /* 00011000 */
+	0x7e, /* 01111110 */
+	0x3c, /* 00111100 */
+	0x18, /* 00011000 */
+	0x00, /* 00000000 */
+	},{ 0x1a,8,8,SF_BITMAP,/* 26 0x1a '^Z' */
+	0x00, /* 00000000 */
+	0x18, /* 00011000 */
+	0x0c, /* 00001100 */
+	0xfe, /* 11111110 */
+	0x0c, /* 00001100 */
+	0x18, /* 00011000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x1b,8,8,SF_BITMAP,/* 27 0x1b '^[' */
+	0x00, /* 00000000 */
+	0x30, /* 00110000 */
+	0x60, /* 01100000 */
+	0xfe, /* 11111110 */
+	0x60, /* 01100000 */
+	0x30, /* 00110000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x1c,8,8,SF_BITMAP,/* 28 0x1c '^\' */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0xc0, /* 11000000 */
+	0xc0, /* 11000000 */
+	0xc0, /* 11000000 */
+	0xfe, /* 11111110 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x1d,8,8,SF_BITMAP,/* 29 0x1d '^]' */
+	0x00, /* 00000000 */
+	0x24, /* 00100100 */
+	0x66, /* 01100110 */
+	0xff, /* 11111111 */
+	0x66, /* 01100110 */
+	0x24, /* 00100100 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x1e,8,8,SF_BITMAP,/* 30 0x1e '^^' */
+	0x00, /* 00000000 */
+	0x18, /* 00011000 */
+	0x3c, /* 00111100 */
+	0x7e, /* 01111110 */
+	0xff, /* 11111111 */
+	0xff, /* 11111111 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x1f,8,8,SF_BITMAP,/* 31 0x1f '^_' */
+	0x00, /* 00000000 */
+	0xff, /* 11111111 */
+	0xff, /* 11111111 */
+	0x7e, /* 01111110 */
+	0x3c, /* 00111100 */
+	0x18, /* 00011000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x7f,8,8,SF_BITMAP,/* 127 0x7f '' */
+	0x00, /* 00000000 */
+	0x10, /* 00010000 */
+	0x38, /* 00111000 */
+	0x6c, /* 01101100 */
+	0xc6, /* 11000110 */
+	0xc6, /* 11000110 */
+	0xfe, /* 11111110 */
+	0x00, /* 00000000 */
+	},{ 0x2591,8,8,SF_BITMAP,/* LIGHT SHADE */
+	0x22, /* 00100010 */
+	0x88, /* 10001000 */
+	0x22, /* 00100010 */
+	0x88, /* 10001000 */
+	0x22, /* 00100010 */
+	0x88, /* 10001000 */
+	0x22, /* 00100010 */
+	0x88, /* 10001000 */
+	},{ 0x2592,8,8,SF_BITMAP,/* MEDIUM SHADE */
+	0x55, /* 01010101 */
+	0xaa, /* 10101010 */
+	0x55, /* 01010101 */
+	0xaa, /* 10101010 */
+	0x55, /* 01010101 */
+	0xaa, /* 10101010 */
+	0x55, /* 01010101 */
+	0xaa, /* 10101010 */
+	},{ 0x2593,8,8,SF_BITMAP,/* DARK SHADE */
+	0x77, /* 01110111 */
+	0xdd, /* 11011101 */
+	0x77, /* 01110111 */
+	0xdd, /* 11011101 */
+	0x77, /* 01110111 */
+	0xdd, /* 11011101 */
+	0x77, /* 01110111 */
+	0xdd, /* 11011101 */
+	},{ 0x221a,8,8,SF_BITMAP,/* SQUARE ROOT */
+	0x78, /* 01111000 */
+	0x0c, /* 00001100 */
+	0x18, /* 00011000 */
+	0x30, /* 00110000 */
+	0x7c, /* 01111100 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	},{ 0x2320,8,8,SF_BITMAP,/* UPPER INTERVAL*/
+        0x0e, /* 00001110 */
+        0x1b, /* 00011011 */
+        0x1b, /* 00011011 */
+        0x18, /* 00011000 */
+        0x18, /* 00011000 */
+        0x18, /* 00011000 */
+        0x18, /* 00011000 */
+        0x18, /* 00011000 */
+	},{ 0x25a0,8,8,SF_FILLRECT,/* BLACK SQUARE */
+		0x2244,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00111100 */
+		/* 00111100 */
+		/* 00111100 */
+		/* 00111100 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2502,8,8,SF_FILLRECT,/*BOX DRAWINGS LIGHT VERTICAL*/
+		0x3028,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2524,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT VERTICAL AND LEFT */
+		0x3028,
+		0x0431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2561,8,8,SF_FILLRECT,/*BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE*/
+		0x3028,
+		0x0231,
+		0x0431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111000 */
+		/* 00011000 */
+		/* 11111000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2562,8,8,SF_FILLRECT,/* BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE */
+		0x2028,
+		0x5028,
+		0x0421,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 11110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2556,8,8,SF_FILLRECT,/* BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE */
+		0x0471,
+		0x2523,
+		0x5523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2555,8,8,SF_FILLRECT,/* BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE */
+		0x3226,
+		0x0231,
+		0x0431,
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111000 */
+		/* 00011000 */
+		/* 11111000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2563,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE VERTICAL AND LEFT*/
+		0x2022,
+		0x0221,
+		0x0421,
+		0x2424,
+		0x5028,
+		/* 00110110 */
+		/* 00110110 */
+		/* 11110110 */
+		/* 00000110 */
+		/* 11110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2551,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE VERTICAL */
+		0x2028,
+		0x5028,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2557,8,8,SF_FILLRECT,/*  BOX DRAWINGS DOUBLE DOWN AND LEFT */
+		0x0271,
+		0x5325,
+		0x0441,
+		0x2523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111110 */
+		/* 00000110 */
+		/* 11110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x255d,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE UP AND LEFT */
+		0x2022,
+		0x0241,
+		0x5025,
+		0x0451,
+		/* 00110110 */
+		/* 00110110 */
+		/* 11110110 */
+		/* 00000110 */
+		/* 11111110 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x255c,8,8,SF_FILLRECT,/* BOX DRAWINGS UP DOUBLE AND LEFT SINGLE */
+		0x2024,
+		0x5024,
+		0x0471,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 11111110 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x255b,8,8,SF_FILLRECT,/* BOX DRAWINGS UP SINGLE AND LEFT DOUBLE */
+		0x3025,
+		0x0231,
+		0x0431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111000 */
+		/* 00011000 */
+		/* 11111000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2510,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT DOWN AND LEFT */
+		0x0451,
+		0x3523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2514,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT UP AND RIGHT */
+		0x3025,
+		0x5431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2534,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT UP AND HORIZONTAL */
+		0x3024,
+		0x0481,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x252c,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
+		0x0481,
+		0x3523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x251c,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
+		0x3028,
+		0x5431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2500,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT HORIZONTAL */
+		0x0481,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x253c,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
+		0x3028,
+		0x0481,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x255e,8,8,SF_FILLRECT,/* BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE */
+		0x3028,
+		0x5231,
+		0x5431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011111 */
+		/* 00011000 */
+		/* 00011111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x255f,8,8,SF_FILLRECT,/* BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE */
+		0x2028,
+		0x5028,
+		0x7411,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x255a,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE UP AND RIGHT */
+		0x2025,
+		0x5023,
+		0x7211,
+		0x4441,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110111 */
+		/* 00110000 */
+		/* 00111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2554,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE DOWN AND RIGHT */
+		0x2261,
+		0x2325,
+		0x5424,
+		0x7411,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00111111 */
+		/* 00110000 */
+		/* 00110111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2569,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE UP AND HORIZONTAL */
+		0x2022,
+		0x0241,
+		0x5022,
+		0x5231,
+		0x0481,
+		/* 00110110 */
+		/* 00110110 */
+		/* 11110111 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2566,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL */
+		0x0281,
+		0x0441,
+		0x2523,
+		0x5431,
+		0x5523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 11110111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2560,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE VERTICAL AND RIGHT */
+		0x2028,
+		0x5022,
+		0x5231,
+		0x5431,
+		0x5623,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110111 */
+		/* 00110000 */
+		/* 00110111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2550,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE HORIZONTAL */
+		0x0281,
+		0x0481,
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x256c,8,8,SF_FILLRECT,/* BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL */
+		0x2022,
+		0x0241,
+		0x5022,
+		0x5231,
+		0x0441,
+		0x2523,
+		0x5431,
+		0x5523,
+		/* 00110110 */
+		/* 00110110 */
+		/* 11110111 */
+		/* 00000000 */
+		/* 11110111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2567,8,8,SF_FILLRECT,/* BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE */
+		0x3022,
+		0x0281,
+		0x0481,
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2568,8,8,SF_FILLRECT,/* BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE */
+		0x2024,
+		0x5024,
+		0x0481,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2564,8,8,SF_FILLRECT,/* BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE */
+		0x0281,
+		0x0481,
+		0x3523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2565,8,8,SF_FILLRECT,/* BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE */
+		0x0481,
+		0x2523,
+		0x5523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x2559,8,8,SF_FILLRECT,/* BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE */
+		0x2024,
+		0x5024,
+		0x2461,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2558,8,8,SF_FILLRECT,/* BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE */
+		0x3025,
+		0x5231,
+		0x5431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011111 */
+		/* 00011000 */
+		/* 00011111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x2552,8,8,SF_FILLRECT,/* BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE */
+		0x3226,
+		0x5231,
+		0x5431,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00011111 */
+		/* 00011000 */
+		/* 00011111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2553,8,8,SF_FILLRECT,/* BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE */
+		0x2461,
+		0x2523,
+		0x5523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00111111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x256b,8,8,SF_FILLRECT,/* BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE */
+		0x2028,
+		0x5028,
+		0x0481,
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 11111111 */
+		/* 00110110 */
+		/* 00110110 */
+		/* 00110110 */
+	},{ 0x256a,8,8,SF_FILLRECT,/* BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE */
+		0x3028,
+		0x0281,
+		0x0481,
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111111 */
+		/* 00011000 */
+		/* 11111111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2518,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT UP AND LEFT */
+		0x3025,
+		0x0431,
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 11111000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	},{ 0x250c,8,8,SF_FILLRECT,/* BOX DRAWINGS LIGHT DOWN AND RIGHT */
+		0x3451,
+		0x3523,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00011111 */
+		/* 00011000 */
+		/* 00011000 */
+		/* 00011000 */
+	},{ 0x2588,8,8,SF_FILLRECT,/* FULL BLOCK */
+		0x0088,
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+	},{ 0x2584,8,8,SF_FILLRECT,/* LOWER HALF BLOCK */
+		0x0484,
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+	},{ 0x258c,8,8,SF_FILLRECT,/* LEFT HALF BLOCK */
+		0x0048,
+		/* 11110000 */
+		/* 11110000 */
+		/* 11110000 */
+		/* 11110000 */
+		/* 11110000 */
+		/* 11110000 */
+		/* 11110000 */
+		/* 11110000 */
+	},{ 0x2590,8,8,SF_FILLRECT,/* RIGHT HALF BLOCK */
+		0x4048,
+		/* 00001111 */
+		/* 00001111 */
+		/* 00001111 */
+		/* 00001111 */
+		/* 00001111 */
+		/* 00001111 */
+		/* 00001111 */
+		/* 00001111 */
+	},{ 0x2580,8,8,SF_FILLRECT,/* UPPER HALF BLOCK */
+		0x0084,
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 11111111 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+		/* 00000000 */
+	}};
+
+	public SoftFont() {
+		font = new java.util.Hashtable();
+		for (int i=0;i<fontdata.length;i++)
+			font.put(new Integer(fontdata[i][0]),new Integer(i));
+
+	}
+
+	public boolean inSoftFont(char c) {
+		boolean insoftfont;
+
+		insoftfont = (null!=font.get(new Integer(c)));
+		if (!insoftfont && (int)c>=0x100) {
+			System.out.println("Character "+((int)c)+" not in softfont");
+		}
+		return insoftfont;
+	}
+
+	public void drawChar(Graphics g,char c,int x,int y,int cw,int ch) {
+		double	dw,dh;
+		Object	Ientry;
+		int	w,h,entry,i,fontwidth,fontheight;
+		
+		Ientry = font.get(new Integer(c));
+		if (Ientry == null)
+			return;
+		entry = ((Integer)Ientry).intValue();
+		fontwidth = fontdata[entry][SF_WIDTH];
+		fontheight = fontdata[entry][SF_HEIGHT];
+
+		dw = cw*1.0/fontwidth;
+		dh = ch*1.0/fontheight;
+
+		switch (fontdata[entry][SF_TYPE]) {
+		case SF_BITMAP:
+			for (h=0;h<fontheight;h++) {
+				for (w=0;w<fontwidth;w++) {
+					//FIXME: 8 bit max currently...
+					if (0!=(fontdata[entry][h+SF_DATA] & (1<<(7-w)))) {
+						g.fillRect(
+							x+(int)(w*dw),
+							y+(int)(h*dh),
+							((int)((w+1)*dw))-(int)(w*dw),
+							((int)((h+1)*dh))-(int)(h*dh)
+						);
+					}
+				}
+			}
+			break;
+		case SF_FILLRECT:
+			i=SF_DATA;
+			while (i<fontdata[entry].length) {
+				int	xw,xh;
+
+				w=(fontdata[entry][i]&0xF000)>>12;
+				h=(fontdata[entry][i]&0x0F00)>>8;
+				xw = (fontdata[entry][i]&0x00F0)>>4;
+				xh = (fontdata[entry][i]&0x000F);
+				g.fillRect(
+					x+(int)(w*dw),
+					y+(int)(h*dh),
+					((int)((w+xw)*dw))-(int)(w*dw),
+					((int)((h+xh)*dh))-(int)(h*dh)
+				);
+				i++;
+			}
+			break;
+		default:
+			break;
+		}
+	}
+}
diff --git a/web/root/telnet/display/Terminal.class b/web/root/telnet/display/Terminal.class
new file mode 100644
index 0000000000000000000000000000000000000000..306194a18f27bca5ea14723f54b056893f459902
Binary files /dev/null and b/web/root/telnet/display/Terminal.class differ
diff --git a/web/root/telnet/display/Terminal.java b/web/root/telnet/display/Terminal.java
new file mode 100644
index 0000000000000000000000000000000000000000..f32c5647da863815650743544b49fcabbe72b025
--- /dev/null
+++ b/web/root/telnet/display/Terminal.java
@@ -0,0 +1,70 @@
+/*
+ * Terminal -- Terminal emulation (abstract class)
+ * --
+ * $Id$
+ * $timestamp: Wed Mar  5 11:27:13 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package display;
+
+import java.awt.Panel;
+import java.awt.Dimension;
+
+/**
+ * Terminal is an abstract emulation class.
+ * It contains a character display.
+ *
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ */
+public abstract class Terminal extends Panel
+{
+	/**
+	 * Get the specific parameter info for the emulation.
+	 * @see java.applet.Applet
+	 */
+	public abstract String[][] getParameterInfo();
+  
+	/**
+	 * Put a character on the screen. The method has to see if it is
+	 * a special character that needs to be handles special.
+	 * @param c the character
+	 * @see #putString
+	 */
+	public abstract void putChar(char c);
+	
+	/**
+	 * Put a character on the screen. The method has to parse the string
+	 * may handle special characters.
+	 * @param s the string
+	 * @see #putString
+	 */
+	public abstract void putString(String s);
+
+	/**
+	 * Return the current size of the terminal in characters.
+	 */
+	public abstract Dimension getSize();
+  
+	/**
+	 * Return actual terminal type identifier.
+	 */
+	public abstract String getTerminalType();
+}
diff --git a/web/root/telnet/display/TerminalHost.class b/web/root/telnet/display/TerminalHost.class
new file mode 100644
index 0000000000000000000000000000000000000000..5fb34238c0b8d2e1d9ed6b08ea0b9bd0fc818542
Binary files /dev/null and b/web/root/telnet/display/TerminalHost.class differ
diff --git a/web/root/telnet/display/TerminalHost.java b/web/root/telnet/display/TerminalHost.java
new file mode 100644
index 0000000000000000000000000000000000000000..717418f8cedbbb2363f49ba284da713fb6d1f2f4
--- /dev/null
+++ b/web/root/telnet/display/TerminalHost.java
@@ -0,0 +1,43 @@
+/*
+ * TerminalHost -- this interface defines the remote end of the connection
+ *                 from our Terminal to the Host (virtual).
+ * --
+ * $Id$
+ * $timestamp: Wed Mar  5 12:01:31 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package display;
+
+/**
+ * TerminalHost is an interface for the remote (virtual) end of our connection
+ * to the host computer we are connected to.
+ * @version $Id$
+ * @author Matthias L Jugel, Marcus Meißner
+ */
+public interface TerminalHost
+{
+	/**
+	 * Send a string to the host and return if it was received successfully.
+	 * @param s the string to send
+	 * @return True for successful receivement.
+	 */
+	public boolean send(String s);
+}
+
diff --git a/web/root/telnet/display/vt320.class b/web/root/telnet/display/vt320.class
new file mode 100644
index 0000000000000000000000000000000000000000..5d79a2317fee39aa55adf789cf254de489a8b026
Binary files /dev/null and b/web/root/telnet/display/vt320.class differ
diff --git a/web/root/telnet/display/vt320.java b/web/root/telnet/display/vt320.java
new file mode 100644
index 0000000000000000000000000000000000000000..48233be796c945a0d45097e7a8ef0b23bcd728d8
--- /dev/null
+++ b/web/root/telnet/display/vt320.java
@@ -0,0 +1,2021 @@
+/*
+ * vt320 -- a DEC VT320 Terminal emulation
+ * --
+ * $Id$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package display;
+
+import java.awt.Scrollbar;
+import java.awt.Event;
+import java.awt.Dimension;
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.util.Vector;
+
+import java.applet.Applet;
+
+/**
+ * A DEC VT320 Terminal Emulation (includes VT100/220 and ANSI).
+ *
+ * The terminal emulation accesses the applet parameters to configure itself.
+ * The following parameters may be set. Default values are written in
+ * <I>italics</I> and other possible values are <B>bold</B>.
+ * <DL>
+ *  <DT><TT>&lt;PARAM NAME="Fx" VALUE="<I>functionkeytext</I>"&gt</TT>
+ *  <DD>Sets the string sent when the function key Fx (x between 1 und 20)
+ *	is pressed.
+ *  <DT><TT>&lt;PARAM NAME="VTcolumns" VALUE="<I>80</I>"&gt</TT>
+ *  <DD>Sets the columns of the terminal initially. If the parameter
+ *      VTresize is set to <B>screen</B> this may change, else it is fixed.
+ *  <DT><TT>&lt;PARAM NAME="VTrows" VALUE="<I>24</I>"&gt</TT>
+ *  <DD>Sets the rows of the terminal initially. If the parameter
+ *      value of VTresize <B>screen</B> this may change!
+ *  <DT><TT>&lt;PARAM NAME="VTfont" VALUE="<I>Courier</I>"&gt</TT>
+ *  <DD>Sets the font to be used for the terminal. It is recommended to
+ *      use <I>Courier</I> or at least a fixed width font.
+ *  <DT><TT>&lt;PARAM NAME="VTfontsize" VALUE="<I>14</I>"&gt</TT>
+ *  <DD>Sets the font size for the terminal. If the parameter
+ *      value of VTresize is set to <B>font</B> this may change!
+ *  <DT><TT>&lt;PARAM NAME="VTresize" VALUE="<I>font</I>"&gt</TT>
+ *  <DD>This parameter determines what the terminal should do if the window
+ *      is resized. The default setting <I><B>font</B></I> will result in
+ *      resizing the font until is matches the window best. Other possible
+ *      values are <B>none</B> or <B>screen</B>. <B>none</B> will let nothing
+ *      happen and <B>screen</B> will let the display try to change the
+ *      amount of rows and columns to match the window best.
+ *  <DT><TT>&lt;PARAM NAME="VTscrollbar" VALUE="<I>false</I>"&gt</TT>
+ *  <DD>Setting this parameter to <B>true</B> will add a scrollbar west to
+ *      the terminal. Other possible values include <B>left</B> to put the
+ *      scrollbar on the left side of the terminal and <B>right</B> to put it
+ *      explicitely to the right side.
+ *  <DT><TT>&lt;PARAM NAME="VTid" VALUE="<I>vt320</I>"&gt</TT>
+ *  <DD>This parameter will override the terminal id <I>vt320</I>. It may
+ *      be used to determine special terminal abilities of VT Terminals.
+ *  <DT><TT>&lt;PARAM NAME="VTbuffer" VALUE="<I>xx</I>"&gt</TT>
+ *  <DD>Initially this parameter is the same as the VTrows parameter. It
+ *      cannot be less than the amount of rows on the display. It determines
+ *      the available scrollback buffer.
+ *  <DT><TT>&lt;PARAM NAME="VTcharset" VALUE="<I>none</I>"&gt</TT>
+ *  <DD>Setting this parameter to <B>ibm</B> will enable mapping of ibm
+ *      characters (as used in PC BBS systems) to UNICODE characters. Note
+ *      that those special characters probably won't show on UNIX systems
+ *      due to lack in X11 UNICODE support.
+ *  <DT><TT>&lt;PARAM NAME="VTvms" VALUE="<I>false</I>"&gt</TT>
+ *  <DD>Setting this parameter to <B>true</B> will change the Backspace key
+ *      into a delete key, cause the numeric keypad keys to emit VT100
+ *      codes when Ctrl is pressed, and make other VMS-important keyboard
+ *      definitions.
+ *  <DT><TT>&lt;PARAM NAME="F<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+ *  <DD>Function keys from <I>F1</I> to <I>F20</I> are programmable. You can
+ *      install any possible string including special characters, such as
+ *      <TABLE BORDER>
+ *      <TR><TD><TT>\e</TT></TD><TD>Escape</TD>
+ *      <TR><TD><TT>\b</TT></TD><TD>Backspace</TD>
+ *      <TR><TD><TT>\n</TT></TD><TD>Newline</TD>
+ *      <TR><TD><TT>\r</TT></TD><TD>Return</TD>
+ *      <TR><TD><TT>\xxxx</TT></TD><TD>Character xxxx (decimal)</TD>
+ *      </TABLE>
+ *  <DT><TT>&lt;PARAM NAME="CF<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+ *  <DD>Function keys (with the Control-key pressed) from <I>CF1</I> to <I>CF20</I> are programmable too.
+ *  <DT><TT>&lt;PARAM NAME="SF<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+ *  <DD>Function keys (with the Shift-key pressed) from <I>SF1</I> to <I>SF20</I> are programmable too.
+ *  <DT><TT>&lt;PARAM NAME="AF<I>nr</I>" VALUE="<I>string</I>"&gt</TT>
+ *  <DD>Function keys (with the Alt-key pressed) from <I>AF1</I> to <I>AF20</I> are programmable too.
+ * </DL>
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Mei?ner
+ */
+public class vt320 extends Terminal implements TerminalHost
+{
+  /**
+   * Return the version of the terminal emulation and its display.
+   */
+  public String toString() { return "$Id$ "+display.version; }
+
+  // the input handler takes the keyboard input from us.
+  private TerminalHost host = this;
+
+  // due to a bug with Windows we need a keypress cache
+  private int pressedKey = ' ';
+  private long pressedWhen = ' ';
+
+  // The character display
+  private CharDisplay display;
+  private static int debug = 0;
+  private String terminalID = "vt320";
+
+  // X - COLUMNS, Y - ROWS
+  int  R,C;
+  int  Sc,Sr,Sa;
+  int  attributes  = 0;
+  int  insertmode  = 0;
+  int  statusmode = 0;
+  int  vt52mode  = 0;
+  int  normalcursor  = 0;
+  boolean moveoutsidemargins = true;
+  boolean sendcrlf = true;
+
+  private boolean  useibmcharset = false;
+
+  private  static  int  lastwaslf = 0;
+  private static  int i;
+  private final static char ESC = 27;
+  private final static char IND = 132;
+  private final static char NEL = 133;
+  private final static char RI  = 141;
+  private final static char HTS = 136;
+  private final static char DCS = 144;
+  private final static char CSI = 155;
+  private final static char OSC = 157;
+  private final static int TSTATE_DATA  = 0;
+  private final static int TSTATE_ESC  = 1; /* ESC */
+  private final static int TSTATE_CSI  = 2; /* ESC [ */
+  private final static int TSTATE_DCS  = 3; /* ESC P */
+  private final static int TSTATE_DCEQ  = 4; /* ESC [? */
+  private final static int TSTATE_ESCSQUARE= 5; /* ESC # */
+  private final static int TSTATE_OSC= 6;       /* ESC ] */
+  private final static int TSTATE_SETG0= 7;     /* ESC (? */
+  private final static int TSTATE_SETG1= 8;     /* ESC )? */
+  private final static int TSTATE_SETG2= 9;     /* ESC *? */
+  private final static int TSTATE_SETG3= 10;    /* ESC +? */
+  private final static int TSTATE_CSI_DOLLAR  = 11; /* ESC [ Pn $ */
+
+  /* The graphics charsets
+   * B - default ASCII
+   * A - default UK
+   * 0 - DEC SPECIAL
+   * < - User defined
+   * ....
+   */
+  private static char gx[] = {
+  'B',      // g0
+  '0',      // g1
+  'A',      // g2
+  '<',      // g3
+  };
+  private static char gr = 1;  // default GR to G1
+  private static char gl = 0;  // default GL to G0
+
+  // array to store DEC Special -> Unicode mapping
+  //  Unicode   DEC  Unicode name    (DEC name)
+  private static char DECSPECIAL[] = {
+    '\u0040', //5f blank
+    '\u2666', //60 black diamond
+    '\u2592', //61 grey square
+    '\u2409', //62 Horizontal tab  (ht) pict. for control
+    '\u240c', //63 Form Feed       (ff) pict. for control
+    '\u240d', //64 Carriage Return (cr) pict. for control
+    '\u240a', //65 Line Feed       (lf) pict. for control
+    '\u00ba', //66 Masculine ordinal indicator
+    '\u00b1', //67 Plus or minus sign
+    '\u2424', //68 New Line        (nl) pict. for control
+    '\u240b', //69 Vertical Tab    (vt) pict. for control
+    '\u2518', //6a Forms light up   and left
+    '\u2510', //6b Forms light down and left
+    '\u250c', //6c Forms light down and right
+    '\u2514', //6d Forms light up   and right
+    '\u253c', //6e Forms light vertical and horizontal
+    '\u2594', //6f Upper 1/8 block                        (Scan 1)
+    '\u2580', //70 Upper 1/2 block                        (Scan 3)
+    '\u2500', //71 Forms light horizontal or ?em dash?    (Scan 5)
+    '\u25ac', //72 \u25ac black rect. or \u2582 lower 1/4 (Scan 7)
+    '\u005f', //73 \u005f underscore  or \u2581 lower 1/8 (Scan 9)
+    '\u251c', //74 Forms light vertical and right
+    '\u2524', //75 Forms light vertical and left
+    '\u2534', //76 Forms light up   and horizontal
+    '\u252c', //77 Forms light down and horizontal
+    '\u2502', //78 vertical bar
+    '\u2264', //79 less than or equal
+    '\u2265', //7a greater than or equal
+    '\u00b6', //7b paragraph
+    '\u2260', //7c not equal
+    '\u00a3', //7d Pound Sign (british)
+    '\u00b7'  //7e Middle Dot
+  };
+
+  private final static int KEYUP  = Event.UP % 1000;
+  private final static int KEYDOWN  = Event.DOWN % 1000;
+  private final static int KEYLEFT  = Event.LEFT % 1000;
+  private final static int KEYRIGHT  = Event.RIGHT % 1000;
+  private final static int KEYF1  = Event.F1 % 1000;
+  private final static int KEYF2  = Event.F2 % 1000;
+  private final static int KEYF3  = Event.F3 % 1000;
+  private final static int KEYF4  = Event.F4 % 1000;
+  private final static int KEYF5  = Event.F5 % 1000;
+  private final static int KEYF6  = Event.F6 % 1000;
+  private final static int KEYF7  = Event.F7 % 1000;
+  private final static int KEYF8  = Event.F8 % 1000;
+  private final static int KEYF9  = Event.F9 % 1000;
+  private final static int KEYF10  = Event.F10 % 1000;
+  private final static int KEYF11  = Event.F11 % 1000;
+  private final static int KEYF12  = Event.F12 % 1000;
+  private final static int KEYPGDN   = Event.PGDN % 1000;
+  private final static int KEYPGUP   = Event.PGUP % 1000;
+
+  private final static int KEYHOME  = Event.HOME % 1000;
+  private final static int KEYEND  = Event.END % 1000;
+
+  public static final int KEYPRINT_SCREEN  = 20;
+  public static final int KEYSCROLL_LOCK    = 21;
+  public static final int KEYCAPS_LOCK    = 22;
+  public static final int KEYNUM_LOCK    = 23;
+  public static final int KEYPAUSE    = 24;
+  public static final int KEYINSERT    = 25;
+
+    /**
+     * The Insert key.
+     */
+    public static final int INSERT    = 1025;
+
+  /**
+   * Strings to send on function key presseic
+   */
+  private String FunctionKey[];
+  private String FunctionKeyShift[];
+  private String FunctionKeyCtrl[];
+  private String FunctionKeyAlt[];
+  private String KeyUp;
+  private String KeyDown;
+  private String KeyLeft;
+  private String KeyRight;
+  private String KeyBacktab;
+  private String KeyTab;
+
+  private String KP0;
+  private String KP1;
+  private String KP2;
+  private String KP3;
+  private String KP4;
+  private String KP5;
+  private String KP6;
+  private String KP7;
+  private String KP8;
+  private String KP9;
+  private String KPMinus;
+  private String KPComma;
+  private String KPPeriod;
+  private String KPEnter;
+  private String PF1;
+  private String PF2;
+  private String PF3;
+  private String PF4;
+  private String Help;
+  private String Do;
+  private String Find;
+  private String Insert;
+  private String Remove;
+  private String Select;
+  private String PrevScn;
+  private String NextScn;
+
+
+  private String osc,dcs;  /* to memorize OSC & DCS control sequence */
+
+  private int term_state = TSTATE_DATA;
+  private boolean vms = false;
+  private byte[]  Tabs;
+  private int[]  DCEvars = new int [10];
+  private  int  DCEvar;
+
+  /* operation system we run on, Scrollbar hack */
+  private String osn = System.getProperty("os.name");
+
+  public String[][] getParameterInfo() {
+    String pinfo[][] = {
+    {"VTcolumns",  "Integer",   "Columns of the terminal"},
+    {"VTrows",     "Integer",   "Rows of the terminal"},
+    {"VTfont",     "String",    "Terminal font (default is Courier)"},
+    {"VTfontsize", "Integer",   "Font size"},
+    {"VTbuffer",   "Integer",   "Scrollback buffer size"},
+    {"VTscrollbar","Boolean",   "Enable or disable scrollbar"},
+    {"VTresize",   "String",    "One of none, font, screen"},
+    {"VTid",       "String",    "Terminal id, standard is VT320"},
+    {"VTcharset",  "String",    "Charset used"},
+    {"VTvms",      "Boolean",   "Enable or disable VMS key mappings"},
+    {"F1 - F20",   "String",    "Programmable Function Keys"},
+    {"SF1 - SF20",   "String",    "Programmable Shift-ed Function Keys"},
+    {"CF1 - CF20",   "String",    "Programmable Control-ed Function Keys"},
+    {"AF1 - AF20",   "String",    "Programmable Alt-ed Function Keys"},
+    };
+    return pinfo;
+  }
+
+  static String unEscape(String tmp) {
+      int idx = 0, oldidx = 0;
+      String cmd;
+
+      cmd = "";
+      while((idx = tmp.indexOf('\\', oldidx)) >= 0 &&
+            ++idx <= tmp.length()) {
+        cmd += tmp.substring(oldidx, idx-1);
+        if(idx == tmp.length()) return cmd;
+        switch(tmp.charAt(idx)) {
+        case 'b': cmd += "\b"; break;
+        case 'e': cmd += "\u001b"; break;
+        case 'n': cmd += "\n"; break;
+        case 'r': cmd += "\r"; break;
+        case 't': cmd += "\t"; break;
+        case 'v': cmd += "\u000b"; break;
+        case 'a': cmd += "\u0012"; break;
+        default : 
+	  if ( (tmp.charAt(idx)>='0') && (tmp.charAt(idx)<='9')) {
+	    for (i = idx;i<tmp.length();i++) {
+	      if ( (tmp.charAt(i)<'0') || (tmp.charAt(i)>'9'))
+	        break;
+	    }
+	    cmd += (char)(new java.lang.Integer(tmp.substring(idx, i)).intValue());
+	    idx = i-1;
+	  } else
+	    cmd += tmp.substring(idx, ++idx);break;
+	}
+	oldidx = ++idx;
+      }
+      if(oldidx <= tmp.length()) cmd += tmp.substring(oldidx);
+      return cmd;
+  }
+
+  /**
+   * Initialize terminal.
+   * @param parent the applet parent where to get parameters from
+   * @see display.Terminal
+   */
+  public void addNotify() {
+    if(display == null) {
+      String width = "80", height = "24", resize ="font";
+      String font = "Courier", fs = "14", bufs = "100";
+      String scrb = "false";
+      String vms = "false";
+      String ibmcset = "false";
+
+      Applet applet = (Applet)getParent();
+
+      if(applet != null) {
+        try {
+          host = (TerminalHost)applet;
+        } catch(ClassCastException e) {
+          System.err.println("vt320: "+applet+" cannot receive terminal input");
+          host = this;
+        }
+
+        width  = applet.getParameter("VTcolumns");
+        height = applet.getParameter("VTrows");
+        font   = applet.getParameter("VTfont");
+        fs     = applet.getParameter("VTfontsize");
+        bufs   = applet.getParameter("VTbuffer");
+        scrb   = applet.getParameter("VTscrollbar");
+        vms    = applet.getParameter("VTvms");
+        resize = applet.getParameter("VTresize");
+        resize = resize == null ? "font" : resize;
+        ibmcset = applet.getParameter("VTcharset");
+        if ((ibmcset!=null)&&(ibmcset.equals("ibm")))
+          useibmcharset=true;
+
+        if(applet.getParameter("VTid") != null)
+          terminalID = applet.getParameter("VTid");
+      }
+
+      display = new CharDisplay(
+          width==null?80:(new Integer(width)).intValue(),
+          (height==null?24:(new Integer(height)).intValue()),
+          font==null?"Courier":font,
+          fs==null?14:(new Integer(fs)).intValue()
+      );
+      display.setBottomMargin((height==null?
+			       24:
+			       (new Integer(height)).intValue()) - 1);
+      display.setBufferSize(bufs==null?100:(new Integer(bufs)).intValue());
+      if(resize.equals("none"))
+        display.setResizeStrategy(CharDisplay.RESIZE_NONE);
+      if(resize.equals("font"))
+        display.setResizeStrategy(CharDisplay.RESIZE_FONT);
+      if(resize.equals("screen"))
+        display.setResizeStrategy(CharDisplay.RESIZE_SCREEN);
+
+      display.setBorder(2, false);
+
+      setLayout(new BorderLayout());
+      if(scrb != null && !scrb.equals("false")) {
+        if(scrb.equals("left") || scrb.equals("true"))
+          display.setScrollbar("West");
+        else if(scrb.equals("right"))
+          display.setScrollbar("East");
+        else
+          System.out.println("vt320: unknown scrollbar location: "+scrb);
+      }
+      if(vms != null && vms.equals("true"))
+      {
+        this.vms = true;
+      }
+      add("Center", display);
+      InitTerminalVars();
+      for (int i=1;i<20;i++)
+      {
+      	if (applet.getParameter("F"+i)!=null)
+	  FunctionKey[i] = unEscape(applet.getParameter("F"+i));
+        if (applet.getParameter("SF"+i)!=null)
+          FunctionKeyShift[i] = unEscape(applet.getParameter("SF"+i));
+        if (applet.getParameter("CF"+i)!=null)
+          FunctionKeyCtrl[i] = unEscape(applet.getParameter("CF"+i));
+        if (applet.getParameter("AF"+i)!=null)
+          FunctionKeyAlt[i] = unEscape(applet.getParameter("AF"+i));
+      }
+    }
+    super.addNotify();
+  }
+
+  private void InitTerminalVars() {
+    int nw = display.getColumns();
+
+    if (nw<132) nw=132; //catch possible later 132/80 resizes
+    Tabs = new byte[nw];
+    for (int i=0;i<nw;i+=8) {
+      Tabs[i]=1;
+    }
+
+    PF1  = "\u001bOP";
+    PF2  = "\u001bOQ";
+    PF3  = "\u001bOR";
+    PF4  = "\u001bOS";
+
+    Find = "\u001b[1~";
+    Insert = "\u001b[2~";
+    Remove = "\u001b[3~";
+    Select = "\u001b[4~";
+    PrevScn = "\u001b[5~";
+    NextScn = "\u001b[6~";
+
+    Help = "\u001b[28~";
+    Do = "\u001b[29~";
+
+    FunctionKey = new String[21];
+    FunctionKey[0]= "";
+    FunctionKey[1]= PF1;
+    FunctionKey[2]= PF2;
+    FunctionKey[3]= PF3;
+    FunctionKey[4]= PF4;
+    /* following are defined differently for vt220 / vt132 ... */
+    FunctionKey[5]= "\u001b[15~";
+    FunctionKey[6]= "\u001b[17~";
+    FunctionKey[7]= "\u001b[18~";
+    FunctionKey[8]= "\u001b[19~";
+    FunctionKey[9]= "\u001b[20~";
+    FunctionKey[10]= "\u001b[21~";
+    FunctionKey[11]= "\u001b[23~";
+    FunctionKey[12]= "\u001b[24~";
+    FunctionKey[13]= "\u001b[25~";
+    FunctionKey[14]= "\u001b[26~";
+    FunctionKey[15]= Help;
+    FunctionKey[16]= Do;
+    FunctionKey[17]= "\u001b[31~";
+    FunctionKey[18]= "\u001b[32~";
+    FunctionKey[19]= "\u001b[33~";
+    FunctionKey[20]= "\u001b[34~";
+
+    FunctionKeyShift = new String[21];
+    FunctionKeyAlt = new String[21];
+    FunctionKeyCtrl = new String[21];
+
+    for (int i=0;i<20;i++)
+    {
+       FunctionKeyShift[i]="";
+       FunctionKeyAlt[i]="";
+       FunctionKeyCtrl[i]="";
+    }
+    FunctionKeyShift[15] = Find;
+    FunctionKeyShift[16] = Select;
+
+    KeyTab   = "\u0009";
+    KeyBacktab = "\u001bOP\u0009";
+    KeyUp    = "\u001b[A";
+    KeyDown  = "\u001b[B";
+    KeyRight  = "\u001b[C";
+    KeyLeft  = "\u001b[D";
+    KP0  = "\u001bOp";
+    KP1  = "\u001bOq";
+    KP2  = "\u001bOr";
+    KP3  = "\u001bOs";
+    KP4  = "\u001bOt";
+    KP5  = "\u001bOu";
+    KP6  = "\u001bOv";
+    KP7  = "\u001bOw";
+    KP8  = "\u001bOx";
+    KP9  = "\u001bOy";
+    KPMinus  = "\u001bOm";
+    KPComma  = "\u001bOl";
+    KPPeriod  = "\u001bOn";
+    KPEnter  = "\u001bOM";
+
+    /* ... */
+  }
+
+  public Dimension getSize() {
+    return new Dimension(display.getColumns(), display.getRows());
+  }
+
+  public String getTerminalType() { return terminalID; }
+
+  /**
+   * Handle events for the terminal. Only accept events for the scroll
+   * bar. Any other events have to be propagated to the parent.
+   * @param evt the event
+   */
+  public boolean handleEvent(Event evt) {
+    // request focus if mouse enters (necessary to avoid mistakes)
+    if(evt.id == Event.MOUSE_ENTER) { display.requestFocus(); return true; }
+    // give focus away if mouse leaves the window
+    if(evt.id == Event.MOUSE_EXIT) { nextFocus(); return true; }
+
+    // handle keyboard events
+
+    /* Netscape for windows does not send keyDown when period
+    * is pressed. This hack catches the keyUp event.
+    */
+    int id = evt.id;
+
+    boolean control = (((evt.CTRL_MASK & evt.modifiers)==0) ? false : true);
+    boolean shift = (((evt.SHIFT_MASK & evt.modifiers)==0) ? false : true );
+    boolean alt = (((evt.ALT_MASK & evt.modifiers)==0) ? false :true);
+
+    pressedKey:
+    {
+        if (pressedKey == 10
+            && (evt.key == 10
+            || evt.key == 13)
+            && evt.when - pressedWhen < 50)    //  Ray: Elliminate stuttering enter/return
+            break pressedKey;
+
+        int priorKey = pressedKey;
+        if(id == Event.KEY_PRESS)
+            pressedKey = evt.key;               //  Keep track of last pressed key
+        else if (evt.key == '.'
+            && evt.id != Event.KEY_RELEASE
+            && evt.key != pressedKey
+        ) {
+            pressedKey = 0;
+        } else
+            break pressedKey;
+        pressedWhen = evt.when;
+        if (evt.key == 10 && !control) {
+            if (sendcrlf)
+              host.send("\r\n"); /* YES, see RFC 854 */
+            else
+              host.send("\r"); /* YES, see RFC 854 */
+            return true;
+        } else
+/* FIXME: on german PC keyboards you have to use Alt-Ctrl-q to get an @,
+ * so we can't just use it here... will probably break some other VMS stuff
+ * -Marcus
+        if (((!vms && evt.key == '2') || evt.key == '@' || evt.key == ' ') && control)
+ */
+        if (((!vms && evt.key == '2') || evt.key == ' ') && control)
+            return host.send("" + (char)0);
+        else if (vms) {
+	    if (evt.key == 8) {
+		if (shift && !control)
+		    return host.send("" + (char)10); //  VMS shift deletes word back
+		if (control && !shift)
+		    return host.send("" + (char)24); //  VMS control deletes line back
+		return host.send("" + (char)127);   //  VMS other is delete
+	    }
+	    if (evt.key == 127 && !control) {
+		if (shift)
+		    return host.send(Insert); //  VMS shift delete = insert
+		else
+		    return host.send(Remove); //  VMS delete = remove
+	    }
+            if (control) {
+                switch(evt.key) {
+                    case '0':
+                        return host.send(KP0);
+                    case '1':
+                        return host.send(KP1);
+                    case '2':
+                        return host.send(KP2);
+                    case '3':
+                        return host.send(KP3);
+                    case '4':
+                        return host.send(KP4);
+                    case '5':
+                        return host.send(KP5);
+                    case '6':
+                        return host.send(KP6);
+                    case '7':
+                        return host.send(KP7);
+                    case '8':
+                        return host.send(KP8);
+                    case '9':
+                        return host.send(KP9);
+                    case '.':
+                        return host.send(KPPeriod);
+                    case '-':
+                    case 31:
+                        return host.send(KPMinus);
+                    case '+':
+                        return host.send(KPComma);
+                    case 10:
+                        return host.send(KPEnter);
+                    case '/':
+                        return host.send(PF2);
+                    case '*':
+                        return host.send(PF3);
+                }
+                if (shift && evt.key < 32)
+                    return host.send(PF1+(char)(evt.key + 64));
+            }
+	}
+	// Hmmm. Outside the VMS case?
+        if (shift && (evt.key == '\t'))
+	    return host.send(KeyBacktab);
+	else
+	    return host.send(""+(char)evt.key);
+    }
+
+    String input = "";
+
+    if (evt.id == evt.KEY_ACTION)
+    {
+      String fmap[];
+      /* bloodsucking little buggers at netscape
+       * don't keep to the standard java values
+       * of <ARROW> or <Fx>
+       */
+      fmap = FunctionKey;
+      if (shift)
+	fmap = FunctionKeyShift;
+      if (control)
+        fmap = FunctionKeyCtrl;
+      if (alt)
+        fmap = FunctionKeyAlt;
+      switch (evt.key % 1000) {
+      case KEYF1:
+        input = fmap[1];
+        break;
+      case KEYF2:
+        input = fmap[2];
+        break;
+      case KEYF3:
+        input = fmap[3];
+        break;
+      case KEYF4:
+        input = fmap[4];
+        break;
+      case KEYF5:
+        input = fmap[5];
+        break;
+      case KEYF6:
+        input = fmap[6];
+        break;
+      case KEYF7:
+        input = fmap[7];
+        break;
+      case KEYF8:
+        input = fmap[8];
+        break;
+      case KEYF9:
+        input = fmap[9];
+        break;
+      case KEYF10:
+        input = fmap[10];
+        break;
+      case KEYF11:
+        input = fmap[11];
+        break;
+      case KEYF12:
+        input = fmap[12];
+        break;
+      case KEYUP:
+        input = KeyUp;
+        break;
+      case KEYDOWN:
+        input = KeyDown;
+        break;
+      case KEYLEFT:
+        input = KeyLeft;
+        break;
+      case KEYRIGHT:
+        input = KeyRight;
+        break;
+      case KEYPGDN:
+        input = NextScn;
+        break;
+      case KEYPGUP:
+        input = PrevScn;
+        break;
+      case KEYINSERT:
+        input = Insert;
+        break;
+//  The following cases fall through if not in VMS mode.
+      case KEYHOME:
+        if (vms)
+        {
+            input = "" + (char)8;
+            break;
+        }
+	//FALLTHROUGH
+      case KEYEND:
+        if (vms)
+        {
+            input = "" + (char)5;
+            break;
+        }
+	//FALLTHROUGH
+      case KEYNUM_LOCK:
+        if (vms && control) {
+            if (pressedKey != evt.key) {
+                pressedKey = evt.key;
+                input = PF1;
+            } else
+                pressedKey = ' ';   //  Here, we eat a second numlock since that returns numlock state
+        }
+	break;
+      default:
+        /*if (debug>0)*/
+          System.out.println("vt320: unknown event:"+(int)evt.key);
+        break;
+      }
+    }
+
+    if(input != null && input.length() > 0)
+      return host.send(input);
+
+    return false;
+  }
+
+  /**
+   * Dummy method to handle input events (String).
+   * This is only needed if our parent is not TerminalHost
+   * @param s String to handle
+   * @return always true
+   * @see display.TerminalHost
+   */
+  public boolean send(String s) {
+    putString(s);
+    return true;
+  }
+
+  private void handle_dcs(String dcs) {
+    System.out.println("DCS: "+dcs);
+  }
+  private void handle_osc(String osc) {
+    System.out.println("OSC: "+osc);
+  }
+
+  /**
+  * Put String at current cursor position. Moves cursor
+  * according to the String. Does NOT wrap.
+  * @param s the string
+  */
+  public void putString(String s) {
+    int  i,len=s.length();
+
+    display.markLine(R,1);
+    for (i=0;i<len;i++)
+      putChar(s.charAt(i),false);
+    display.setCursorPos(C, R);
+    display.redraw();
+  }
+
+  public void putChar(char c) {
+    putChar(c,true);
+    display.redraw();
+  }
+
+  public final static char unimap[] = {
+//#
+//#    Name:     cp437_DOSLatinUS to Unicode table
+//#    Unicode version: 1.1
+//#    Table version: 1.1
+//#    Table format:  Format A
+//#    Date:          03/31/95
+//#    Authors:       Michel Suignard <michelsu@microsoft.com>
+//#                   Lori Hoerth <lorih@microsoft.com>
+//#    General notes: none
+//#
+//#    Format: Three tab-separated columns
+//#        Column #1 is the cp1255_WinHebrew code (in hex)
+//#        Column #2 is the Unicode (in hex as 0xXXXX)
+//#        Column #3 is the Unicode name (follows a comment sign, '#')
+//#
+//#    The entries are in cp437_DOSLatinUS order
+//#
+
+  0x0000,// #NULL
+  0x0001,// #START OF HEADING
+  0x0002,// #START OF TEXT
+  0x0003,// #END OF TEXT
+  0x0004,// #END OF TRANSMISSION
+  0x0005,// #ENQUIRY
+  0x0006,// #ACKNOWLEDGE
+  0x0007,// #BELL
+  0x0008,// #BACKSPACE
+  0x0009,// #HORIZONTAL TABULATION
+  0x000a,// #LINE FEED
+  0x000b,// #VERTICAL TABULATION
+  0x000c,// #FORM FEED
+  0x000d,// #CARRIAGE RETURN
+  0x000e,// #SHIFT OUT
+  0x000f,// #SHIFT IN
+  0x0010,// #DATA LINK ESCAPE
+  0x0011,// #DEVICE CONTROL ONE
+  0x0012,// #DEVICE CONTROL TWO
+  0x0013,// #DEVICE CONTROL THREE
+  0x0014,// #DEVICE CONTROL FOUR
+  0x0015,// #NEGATIVE ACKNOWLEDGE
+  0x0016,// #SYNCHRONOUS IDLE
+  0x0017,// #END OF TRANSMISSION BLOCK
+  0x0018,// #CANCEL
+  0x0019,// #END OF MEDIUM
+  0x001a,// #SUBSTITUTE
+  0x001b,// #ESCAPE
+  0x001c,// #FILE SEPARATOR
+  0x001d,// #GROUP SEPARATOR
+  0x001e,// #RECORD SEPARATOR
+  0x001f,// #UNIT SEPARATOR
+  0x0020,// #SPACE
+  0x0021,// #EXCLAMATION MARK
+  0x0022,// #QUOTATION MARK
+  0x0023,// #NUMBER SIGN
+  0x0024,// #DOLLAR SIGN
+  0x0025,// #PERCENT SIGN
+  0x0026,// #AMPERSAND
+  0x0027,// #APOSTROPHE
+  0x0028,// #LEFT PARENTHESIS
+  0x0029,// #RIGHT PARENTHESIS
+  0x002a,// #ASTERISK
+  0x002b,// #PLUS SIGN
+  0x002c,// #COMMA
+  0x002d,// #HYPHEN-MINUS
+  0x002e,// #FULL STOP
+  0x002f,// #SOLIDUS
+  0x0030,// #DIGIT ZERO
+  0x0031,// #DIGIT ONE
+  0x0032,// #DIGIT TWO
+  0x0033,// #DIGIT THREE
+  0x0034,// #DIGIT FOUR
+  0x0035,// #DIGIT FIVE
+  0x0036,// #DIGIT SIX
+  0x0037,// #DIGIT SEVEN
+  0x0038,// #DIGIT EIGHT
+  0x0039,// #DIGIT NINE
+  0x003a,// #COLON
+  0x003b,// #SEMICOLON
+  0x003c,// #LESS-THAN SIGN
+  0x003d,// #EQUALS SIGN
+  0x003e,// #GREATER-THAN SIGN
+  0x003f,// #QUESTION MARK
+  0x0040,// #COMMERCIAL AT
+  0x0041,// #LATIN CAPITAL LETTER A
+  0x0042,// #LATIN CAPITAL LETTER B
+  0x0043,// #LATIN CAPITAL LETTER C
+  0x0044,// #LATIN CAPITAL LETTER D
+  0x0045,// #LATIN CAPITAL LETTER E
+  0x0046,// #LATIN CAPITAL LETTER F
+  0x0047,// #LATIN CAPITAL LETTER G
+  0x0048,// #LATIN CAPITAL LETTER H
+  0x0049,// #LATIN CAPITAL LETTER I
+  0x004a,// #LATIN CAPITAL LETTER J
+  0x004b,// #LATIN CAPITAL LETTER K
+  0x004c,// #LATIN CAPITAL LETTER L
+  0x004d,// #LATIN CAPITAL LETTER M
+  0x004e,// #LATIN CAPITAL LETTER N
+  0x004f,// #LATIN CAPITAL LETTER O
+  0x0050,// #LATIN CAPITAL LETTER P
+  0x0051,// #LATIN CAPITAL LETTER Q
+  0x0052,// #LATIN CAPITAL LETTER R
+  0x0053,// #LATIN CAPITAL LETTER S
+  0x0054,// #LATIN CAPITAL LETTER T
+  0x0055,// #LATIN CAPITAL LETTER U
+  0x0056,// #LATIN CAPITAL LETTER V
+  0x0057,// #LATIN CAPITAL LETTER W
+  0x0058,// #LATIN CAPITAL LETTER X
+  0x0059,// #LATIN CAPITAL LETTER Y
+  0x005a,// #LATIN CAPITAL LETTER Z
+  0x005b,// #LEFT SQUARE BRACKET
+  0x005c,// #REVERSE SOLIDUS
+  0x005d,// #RIGHT SQUARE BRACKET
+  0x005e,// #CIRCUMFLEX ACCENT
+  0x005f,// #LOW LINE
+  0x0060,// #GRAVE ACCENT
+  0x0061,// #LATIN SMALL LETTER A
+  0x0062,// #LATIN SMALL LETTER B
+  0x0063,// #LATIN SMALL LETTER C
+  0x0064,// #LATIN SMALL LETTER D
+  0x0065,// #LATIN SMALL LETTER E
+  0x0066,// #LATIN SMALL LETTER F
+  0x0067,// #LATIN SMALL LETTER G
+  0x0068,// #LATIN SMALL LETTER H
+  0x0069,// #LATIN SMALL LETTER I
+  0x006a,// #LATIN SMALL LETTER J
+  0x006b,// #LATIN SMALL LETTER K
+  0x006c,// #LATIN SMALL LETTER L
+  0x006d,// #LATIN SMALL LETTER M
+  0x006e,// #LATIN SMALL LETTER N
+  0x006f,// #LATIN SMALL LETTER O
+  0x0070,// #LATIN SMALL LETTER P
+  0x0071,// #LATIN SMALL LETTER Q
+  0x0072,// #LATIN SMALL LETTER R
+  0x0073,// #LATIN SMALL LETTER S
+  0x0074,// #LATIN SMALL LETTER T
+  0x0075,// #LATIN SMALL LETTER U
+  0x0076,// #LATIN SMALL LETTER V
+  0x0077,// #LATIN SMALL LETTER W
+  0x0078,// #LATIN SMALL LETTER X
+  0x0079,// #LATIN SMALL LETTER Y
+  0x007a,// #LATIN SMALL LETTER Z
+  0x007b,// #LEFT CURLY BRACKET
+  0x007c,// #VERTICAL LINE
+  0x007d,// #RIGHT CURLY BRACKET
+  0x007e,// #TILDE
+  0x007f,// #DELETE
+  0x00c7,// #LATIN CAPITAL LETTER C WITH CEDILLA
+  0x00fc,// #LATIN SMALL LETTER U WITH DIAERESIS
+  0x00e9,// #LATIN SMALL LETTER E WITH ACUTE
+  0x00e2,// #LATIN SMALL LETTER A WITH CIRCUMFLEX
+  0x00e4,// #LATIN SMALL LETTER A WITH DIAERESIS
+  0x00e0,// #LATIN SMALL LETTER A WITH GRAVE
+  0x00e5,// #LATIN SMALL LETTER A WITH RING ABOVE
+  0x00e7,// #LATIN SMALL LETTER C WITH CEDILLA
+  0x00ea,// #LATIN SMALL LETTER E WITH CIRCUMFLEX
+  0x00eb,// #LATIN SMALL LETTER E WITH DIAERESIS
+  0x00e8,// #LATIN SMALL LETTER E WITH GRAVE
+  0x00ef,// #LATIN SMALL LETTER I WITH DIAERESIS
+  0x00ee,// #LATIN SMALL LETTER I WITH CIRCUMFLEX
+  0x00ec,// #LATIN SMALL LETTER I WITH GRAVE
+  0x00c4,// #LATIN CAPITAL LETTER A WITH DIAERESIS
+  0x00c5,// #LATIN CAPITAL LETTER A WITH RING ABOVE
+  0x00c9,// #LATIN CAPITAL LETTER E WITH ACUTE
+  0x00e6,// #LATIN SMALL LIGATURE AE
+  0x00c6,// #LATIN CAPITAL LIGATURE AE
+  0x00f4,// #LATIN SMALL LETTER O WITH CIRCUMFLEX
+  0x00f6,// #LATIN SMALL LETTER O WITH DIAERESIS
+  0x00f2,// #LATIN SMALL LETTER O WITH GRAVE
+  0x00fb,// #LATIN SMALL LETTER U WITH CIRCUMFLEX
+  0x00f9,// #LATIN SMALL LETTER U WITH GRAVE
+  0x00ff,// #LATIN SMALL LETTER Y WITH DIAERESIS
+  0x00d6,// #LATIN CAPITAL LETTER O WITH DIAERESIS
+  0x00dc,// #LATIN CAPITAL LETTER U WITH DIAERESIS
+  0x00a2,// #CENT SIGN
+  0x00a3,// #POUND SIGN
+  0x00a5,// #YEN SIGN
+  0x20a7,// #PESETA SIGN
+  0x0192,// #LATIN SMALL LETTER F WITH HOOK
+  0x00e1,// #LATIN SMALL LETTER A WITH ACUTE
+  0x00ed,// #LATIN SMALL LETTER I WITH ACUTE
+  0x00f3,// #LATIN SMALL LETTER O WITH ACUTE
+  0x00fa,// #LATIN SMALL LETTER U WITH ACUTE
+  0x00f1,// #LATIN SMALL LETTER N WITH TILDE
+  0x00d1,// #LATIN CAPITAL LETTER N WITH TILDE
+  0x00aa,// #FEMININE ORDINAL INDICATOR
+  0x00ba,// #MASCULINE ORDINAL INDICATOR
+  0x00bf,// #INVERTED QUESTION MARK
+  0x2310,// #REVERSED NOT SIGN
+  0x00ac,// #NOT SIGN
+  0x00bd,// #VULGAR FRACTION ONE HALF
+  0x00bc,// #VULGAR FRACTION ONE QUARTER
+  0x00a1,// #INVERTED EXCLAMATION MARK
+  0x00ab,// #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+  0x00bb,// #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+  0x2591,// #LIGHT SHADE
+  0x2592,// #MEDIUM SHADE
+  0x2593,// #DARK SHADE
+  0x2502,// #BOX DRAWINGS LIGHT VERTICAL
+  0x2524,// #BOX DRAWINGS LIGHT VERTICAL AND LEFT
+  0x2561,// #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+  0x2562,// #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+  0x2556,// #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+  0x2555,// #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+  0x2563,// #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+  0x2551,// #BOX DRAWINGS DOUBLE VERTICAL
+  0x2557,// #BOX DRAWINGS DOUBLE DOWN AND LEFT
+  0x255d,// #BOX DRAWINGS DOUBLE UP AND LEFT
+  0x255c,// #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+  0x255b,// #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+  0x2510,// #BOX DRAWINGS LIGHT DOWN AND LEFT
+  0x2514,// #BOX DRAWINGS LIGHT UP AND RIGHT
+  0x2534,// #BOX DRAWINGS LIGHT UP AND HORIZONTAL
+  0x252c,// #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+  0x251c,// #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+  0x2500,// #BOX DRAWINGS LIGHT HORIZONTAL
+  0x253c,// #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+  0x255e,// #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+  0x255f,// #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+  0x255a,// #BOX DRAWINGS DOUBLE UP AND RIGHT
+  0x2554,// #BOX DRAWINGS DOUBLE DOWN AND RIGHT
+  0x2569,// #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+  0x2566,// #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+  0x2560,// #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+  0x2550,// #BOX DRAWINGS DOUBLE HORIZONTAL
+  0x256c,// #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+  0x2567,// #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+  0x2568,// #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+  0x2564,// #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+  0x2565,// #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+  0x2559,// #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+  0x2558,// #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+  0x2552,// #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+  0x2553,// #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+  0x256b,// #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+  0x256a,// #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+  0x2518,// #BOX DRAWINGS LIGHT UP AND LEFT
+  0x250c,// #BOX DRAWINGS LIGHT DOWN AND RIGHT
+  0x2588,// #FULL BLOCK
+  0x2584,// #LOWER HALF BLOCK
+  0x258c,// #LEFT HALF BLOCK
+  0x2590,// #RIGHT HALF BLOCK
+  0x2580,// #UPPER HALF BLOCK
+  0x03b1,// #GREEK SMALL LETTER ALPHA
+  0x00df,// #LATIN SMALL LETTER SHARP S
+  0x0393,// #GREEK CAPITAL LETTER GAMMA
+  0x03c0,// #GREEK SMALL LETTER PI
+  0x03a3,// #GREEK CAPITAL LETTER SIGMA
+  0x03c3,// #GREEK SMALL LETTER SIGMA
+  0x00b5,// #MICRO SIGN
+  0x03c4,// #GREEK SMALL LETTER TAU
+  0x03a6,// #GREEK CAPITAL LETTER PHI
+  0x0398,// #GREEK CAPITAL LETTER THETA
+  0x03a9,// #GREEK CAPITAL LETTER OMEGA
+  0x03b4,// #GREEK SMALL LETTER DELTA
+  0x221e,// #INFINITY
+  0x03c6,// #GREEK SMALL LETTER PHI
+  0x03b5,// #GREEK SMALL LETTER EPSILON
+  0x2229,// #INTERSECTION
+  0x2261,// #IDENTICAL TO
+  0x00b1,// #PLUS-MINUS SIGN
+  0x2265,// #GREATER-THAN OR EQUAL TO
+  0x2264,// #LESS-THAN OR EQUAL TO
+  0x2320,// #TOP HALF INTEGRAL
+  0x2321,// #BOTTOM HALF INTEGRAL
+  0x00f7,// #DIVISION SIGN
+  0x2248,// #ALMOST EQUAL TO
+  0x00b0,// #DEGREE SIGN
+  0x2219,// #BULLET OPERATOR
+  0x00b7,// #MIDDLE DOT
+  0x221a,// #SQUARE ROOT
+  0x207f,// #SUPERSCRIPT LATIN SMALL LETTER N
+  0x00b2,// #SUPERSCRIPT TWO
+  0x25a0,// #BLACK SQUARE
+  0x00a0,// #NO-BREAK SPACE
+  };
+
+  public char map_cp850_unicode(char x) {
+    if (x>=0x100)
+      return x;
+    return unimap[x];
+  }
+
+  private void _SetCursor(int row,int col) {
+    int maxr = display.getRows();
+    int tm = display.getTopMargin();
+
+    R = (row<0)?0:row;
+    C = (col<0)?0:col;
+
+    if (!moveoutsidemargins) {
+	R	+= display.getTopMargin();
+	maxr	 = display.getBottomMargin();
+    }
+    if (R>maxr) R = maxr;
+  }
+
+  public void putChar(char c,boolean doshowcursor) {
+    Dimension size;
+    int  rows = display.getRows() ; //statusline
+    int  columns = display.getColumns();
+    int  tm = display.getTopMargin();
+    int  bm = display.getBottomMargin();
+    String  tosend;
+    Vector  vec;
+    byte  msg[];
+
+    if (debug>4) System.out.println("putChar("+c+" ["+((int)c)+"]) at R="+R+" , C="+C+", columns="+columns+", rows="+rows);
+    display.markLine(R,1);
+    if (c>255) {
+      if (debug>0)
+        System.out.println("char > 255:"+((int)c));
+      return;
+    }
+    switch (term_state) {
+    case TSTATE_DATA:
+      /* FIXME: we shouldn't use chars with bit 8 set if ibmcharset.
+       * probably... but some BBS do anyway...
+       */
+      if (!useibmcharset) {
+        boolean doneflag = true;
+        switch (c) {
+        case OSC:
+          osc="";
+          term_state = TSTATE_OSC;
+          break;
+        case RI:
+          if (R>tm)
+            R--;
+          else
+            display.insertLine(R,1,display.SCROLL_DOWN);
+          if (debug>1)
+            System.out.println("RI");
+          break;
+        case IND:
+          if (R == tm - 1 || R == bm || R == rows - 1) //  Ray: not bottom margin - 1
+            display.insertLine(R,1,display.SCROLL_UP);
+          else
+            R++;
+          if (debug>1)
+            System.out.println("IND (at "+R+" )");
+          break;
+        case NEL:
+          if (R == tm - 1 || R == bm || R == rows - 1) //  Ray: not bottom margin - 1
+            display.insertLine(R,1,display.SCROLL_UP);
+          else
+            R++;
+          C=0;
+          if (debug>1)
+            System.out.println("NEL (at "+R+" )");
+          break;
+        case HTS:
+          Tabs[C] = 1;
+          if (debug>1)
+            System.out.println("HTS");
+          break;
+        case DCS:
+          dcs="";
+          term_state = TSTATE_DCS;
+          break;
+        default:
+          doneflag = false;
+          break;
+        }
+        if (doneflag) break;
+      }
+      switch (c) {
+      case CSI: // should be in the 8bit section, but some BBS use this
+        term_state = TSTATE_DCEQ;
+        break;
+      case ESC:
+        term_state = TSTATE_ESC;
+        lastwaslf=0;
+        break;
+      case '\b':
+        C--;
+        if (C<0)
+          C=0;
+        lastwaslf = 0;
+        break;
+      case '\t':
+        if (insertmode == 1) {
+          int  nr,newc;
+
+          newc = C;
+          do {
+            display.insertChar(C,R,' ',attributes);
+            newc++;
+          } while (newc<columns && Tabs[newc]==0);
+        } else {
+          do {
+            display.putChar(C++,R,' ',attributes);
+          } while (C<columns && (Tabs[C]==0));
+        }
+        lastwaslf = 0;
+        break;
+      case '\r':
+        C=0;
+        break;
+      case '\n':
+	if (debug>3)
+		System.out.println("R= "+R+", bm "+bm+", tm="+tm+", rows="+rows);
+        if (!vms)
+        {
+            if (lastwaslf!=0 && lastwaslf!=c)   //  Ray: I do not understand this logic.
+              break;
+            lastwaslf=c;
+            /*C = 0;*/
+        }
+	// note: we do not scroll at the topmargin! only at the bottommargin
+	// of the scrollregion and at the display bottom.
+	if ( R == bm || R >= rows - 1)
+	    display.insertLine(R,1);
+	else
+	    R++;
+        break;
+      case '\016':
+        /* ^N, Shift out - Put G1 into GL */
+        gl = 1;
+        break;
+      case '\017':
+        /* ^O, Shift in - Put G0 into GL */
+        gl = 0;
+        break;
+      default:
+        lastwaslf=0;
+        if (c<32) {
+          if (c!=0)
+            if (debug>0)
+              System.out.println("TSTATE_DATA char: "+((int)c));
+          break;
+        }
+        if(C >= columns) {
+          if(R < rows - 1)
+            R++;
+          else
+            display.insertLine(R,display.SCROLL_UP);
+          C = 0;
+        }
+
+        // Mapping if DEC Special is chosen charset
+        if ( gx[gl] == '0' ) {
+          if ( c >= '\u005f' && c <= '\u007e' ) {
+          if (debug>3)
+            System.out.print("Mapping "+c+" (index "+((short)c-0x5f)+" to ");
+          c = DECSPECIAL[(short)c - 0x5f];
+          if (debug>3)
+            System.out.println(c+" ("+(int)c+")");
+          }
+        }
+/*
+        if ( gx[gr] == '0' ) {
+          if ( c >= '\u00bf' && c <= '\u00fe' ) {
+          if (debug>2)
+            System.out.print("Mapping "+c);
+            c = DECSPECIAL[(short)c - 0xbf];
+            if (debug>2)
+              System.out.println("to "+c);
+          }
+        }
+*/
+        if (useibmcharset)
+          c = map_cp850_unicode(c);
+
+	/*if(true || (statusmode == 0)) { */
+	if (debug>4) System.out.println("output "+c+" at "+C+","+R);
+	  if (insertmode==1) {
+	    display.insertChar(C, R, c, attributes);
+	  } else {
+	    display.putChar(C, R, c, attributes);
+	  }
+	/*
+	} else {
+	  if (insertmode==1) {
+	    display.insertChar(C, rows, c, attributes);
+	  } else {
+	    display.putChar(C, rows, c, attributes);
+	  }
+	}
+	*/
+        C++;
+        break;
+      } /* switch(c) */
+      break;
+    case TSTATE_OSC:
+      if ((c<0x20) && (c!=ESC)) {// NP - No printing character
+        handle_osc(osc);
+        term_state = TSTATE_DATA;
+        break;
+      }
+      //but check for vt102 ESC \
+      if (c=='\\' && osc.charAt(osc.length()-1)==ESC) {
+        handle_osc(osc);
+        term_state = TSTATE_DATA;
+        break;
+      }
+      osc = osc + c;
+      break;
+    case TSTATE_ESC:
+      switch (c) {
+      case '#':
+        term_state = TSTATE_ESCSQUARE;
+        break;
+      case 'c':
+        /* Hard terminal reset */
+        /*FIXME:*/
+        term_state = TSTATE_DATA;
+        break;
+      case '[':
+        term_state = TSTATE_CSI;
+        DCEvar    = 0;
+        DCEvars[0]  = 0;
+        DCEvars[1]  = 0;
+        DCEvars[2]  = 0;
+        DCEvars[3]  = 0;
+        break;
+        case ']':
+        osc="";
+        term_state = TSTATE_OSC;
+        break;
+      case 'P':
+        dcs="";
+        term_state = TSTATE_DCS;
+        break;
+      case 'E':
+        if (R == tm - 1 || R == bm || R == rows - 1) //  Ray: not bottom margin - 1
+          display.insertLine(R,1,display.SCROLL_UP);
+        else
+          R++;
+        C=0;
+        if (debug>1)
+          System.out.println("ESC E (at "+R+")");
+        term_state = TSTATE_DATA;
+        break;
+      case 'D':
+        if (R == tm - 1 || R == bm || R == rows - 1)
+          display.insertLine(R,1,display.SCROLL_UP);
+        else
+          R++;
+        if (debug>1)
+          System.out.println("ESC D (at "+R+" )");
+        term_state = TSTATE_DATA;
+        break;
+      case 'M': // IL
+        if ((R>=tm) && (R<=bm)) // in scrolregion
+          display.insertLine(R,1,display.SCROLL_DOWN);
+	/* else do nothing ; */
+        if (debug>1)
+          System.out.println("ESC M ");
+        term_state = TSTATE_DATA;
+        break;
+      case 'H':
+        if (debug>1)
+          System.out.println("ESC H at "+C);
+        /* right border probably ...*/
+        if (C>=columns)
+          C=columns-1;
+        Tabs[C] = 1;
+        term_state = TSTATE_DATA;
+        break;
+      case '=':
+        /*application keypad*/
+        if (debug>0)
+          System.out.println("ESC =");
+        term_state = TSTATE_DATA;
+        break;
+      case '>':
+        /*normal keypad*/
+        if (debug>0)
+          System.out.println("ESC >");
+        term_state = TSTATE_DATA;
+        break;
+      case '7':
+        /*save cursor */
+        Sc = C;
+        Sr = R;
+        Sa = attributes;
+        if (debug>1)
+          System.out.println("ESC 7");
+        term_state = TSTATE_DATA;
+        break;
+      case '8':
+        /*restore cursor */
+        C = Sc;
+        R = Sr;
+        attributes = Sa;
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC 7");
+        break;
+      case '(':
+        /* Designate G0 Character set (ISO 2022) */
+        term_state = TSTATE_SETG0;
+        break;
+      case ')':
+        /* Designate G0 character set (ISO 2022) */
+        term_state = TSTATE_SETG1;
+        break;
+      case '*':
+        /* Designate G1 Character set (ISO 2022) */
+        term_state = TSTATE_SETG2;
+        break;
+      case '+':
+        /* Designate G1 Character set (ISO 2022) */
+        term_state = TSTATE_SETG3;
+        break;
+      case '~':
+        /* Locking Shift 1, right */
+        term_state = TSTATE_DATA;
+        gr = 1;
+        break;
+      case 'n':
+        /* Locking Shift 2 */
+        term_state = TSTATE_DATA;
+        gl = 2;
+        break;
+      case '}':
+        /* Locking Shift 2, right */
+        term_state = TSTATE_DATA;
+        gr = 2;
+        break;
+      case 'o':
+        /* Locking Shift 3 */
+        term_state = TSTATE_DATA;
+        gl = 3;
+        break;
+      case '|':
+        /* Locking Shift 3, right */
+        term_state = TSTATE_DATA;
+        gr = 3;
+        break;
+      default:
+        System.out.println("ESC unknown letter: ("+((int)c)+")");
+        term_state = TSTATE_DATA;
+        break;
+      }
+      break;
+    case TSTATE_SETG0:
+      if(c!='0' && c!='A' && c!='B')
+        System.out.println("ESC ( : G0 char set?  ("+((int)c)+")");
+      else {
+        if (debug>2) System.out.println("ESC ( : G0 char set  ("+c+" "+((int)c)+")");
+        gx[0] = c;
+      }
+      term_state = TSTATE_DATA;
+      break;
+    case TSTATE_SETG1:
+      if(c!='0' && c!='A' && c!='B')
+        System.out.println("ESC ) :G1 char set?  ("+((int)c)+")");
+      else {
+        if (debug>2) System.out.println("ESC ) :G1 char set  ("+c+" "+((int)c)+")");
+        gx[1] = c;
+      }
+      term_state = TSTATE_DATA;
+      break;
+    case TSTATE_SETG2:
+      if(c!='0' && c!='A' && c!='B')
+        System.out.println("ESC*:G2 char set?  ("+((int)c)+")");
+      else {
+        if (debug>2) System.out.println("ESC*:G2 char set  ("+c+" "+((int)c)+")");
+	gx[2] = c;
+      }
+      term_state = TSTATE_DATA;
+      break;
+    case TSTATE_SETG3:
+      if(c!='0' && c!='A' && c!='B')
+        System.out.println("ESC+:G3 char set?  ("+((int)c)+")");
+      else {
+        if (debug>2) System.out.println("ESC+:G3 char set  ("+c+" "+((int)c)+")");
+        gx[3] = c;
+      }
+      term_state = TSTATE_DATA;
+      break;
+    case TSTATE_ESCSQUARE:
+      switch (c) {
+      case '8':
+        for (int i=0;i<columns;i++)
+          for (int j=0;j<rows;j++)
+            display.putChar(i,j,'E',0);
+        break;
+      default:
+        System.out.println("ESC # "+c+" not supported.");
+        break;
+      }
+      term_state = TSTATE_DATA;
+      break;
+    case TSTATE_DCS:
+      if (c=='\\' && dcs.charAt(dcs.length()-1)==ESC) {
+        handle_dcs(dcs);
+        term_state = TSTATE_DATA;
+        break;
+      }
+      dcs = dcs + c;
+      break;
+    case TSTATE_DCEQ:
+      switch (c) {
+      case '0':
+      case '1':
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+        DCEvars[DCEvar]=DCEvars[DCEvar]*10+((int)c)-48;
+        break;
+      case 'r': // XTERM_RESTORE
+        if (true || debug>1)
+          System.out.println("ESC [ ? "+DCEvars[0]+" r");
+        /* DEC Mode reset */
+        switch (DCEvars[0]){
+        case 3: /* 80 columns*/
+          size = display.size();
+          display.setWindowSize(80,rows);
+          layout();
+          break;
+        case 4: /* scrolling mode, smooth */
+          break;
+        case 5: /* light background */
+          break;
+        case 6: /* move inside margins ? */
+          moveoutsidemargins = true;
+          break;
+        case 12:/* local echo off */
+          break;
+        }
+        term_state = TSTATE_DATA;
+        break;
+      case 'h': // DECSET
+        if (debug>0)
+          System.out.println("ESC [ ? "+DCEvars[0]+" h");
+        /* DEC Mode set */
+        switch (DCEvars[0]){
+        case 1:  /* Application cursor keys */
+          KeyUp  = "\u001bOA";
+          KeyDown  = "\u001bOB";
+          KeyRight= "\u001bOC";
+          KeyLeft  = "\u001bOD";
+          break;
+        case 3: /* 132 columns*/
+          size = display.size();
+          display.setWindowSize(132,rows);
+          layout();
+          break;
+        case 4: /* scrolling mode, smooth */
+          break;
+        case 5: /* light background */
+          break;
+        case 6: /* move inside margins ? */
+          moveoutsidemargins = false;
+          break;
+        case 12:/* local echo off */
+          break;
+        }
+        term_state = TSTATE_DATA;
+        break;
+      case 'l':	//DECRST
+        /* DEC Mode reset */
+        if (debug>0)
+          System.out.println("ESC [ ? "+DCEvars[0]+" l");
+        switch (DCEvars[0]){
+        case 1:  /* Application cursor keys */
+          KeyUp  = "\u001b[A";
+          KeyDown  = "\u001b[B";
+          KeyRight= "\u001b[C";
+          KeyLeft  = "\u001b[D";
+          break;
+        case 3: /* 80 columns*/
+          size = display.size();
+          display.setWindowSize(80,rows);
+          layout();
+          break;
+        case 4: /* scrolling mode, jump */
+          break;
+        case 5: /* dark background */
+          break;
+        case 6: /* move outside margins ? */
+          moveoutsidemargins = true;
+          break;
+        case 12:/* local echo on */
+          break;
+        }
+        term_state = TSTATE_DATA;
+        break;
+      case ';':
+        DCEvar++;
+        DCEvars[DCEvar] = 0;
+        break;
+      case 'n':
+        if (debug>0)
+          System.out.println("ESC [ ? "+DCEvars[0]+" n");
+        switch (DCEvars[0]) {
+        case 15:
+          /* printer? no printer. */
+          host.send(((char)ESC)+"[?13n");
+          System.out.println("ESC[5n");
+          break;
+        default:break;
+        }
+        term_state = TSTATE_DATA;
+        break;
+      default:
+        if (debug>0)
+          System.out.println("ESC [ ? "+DCEvars[0]+" "+c);
+        term_state = TSTATE_DATA;
+        break;
+      }
+      break;
+    case TSTATE_CSI_DOLLAR:
+      switch (c) {
+      case '}':
+	System.out.println("Active Status Display now "+DCEvars[0]);
+	statusmode = DCEvars[0];
+	break;
+/* bad documentation?
+      case '-':
+	System.out.println("Set Status Display now "+DCEvars[0]);
+	break;
+ */
+      case '~':
+	System.out.println("Status Line mode now "+DCEvars[0]);
+	break;
+      default:
+	System.out.println("UNKNOWN Status Display code "+c+", with Pn="+DCEvars[0]);
+	break;
+      }
+      term_state = TSTATE_DATA;
+      break;
+    case TSTATE_CSI:
+      switch (c) {
+      case '$':
+	term_state=TSTATE_CSI_DOLLAR;
+	break;
+      case '?':
+        DCEvar=0;
+        DCEvars[0]=0;
+        term_state=TSTATE_DCEQ;
+        break;
+      case '0':
+      case '1':
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+        DCEvars[DCEvar]=DCEvars[DCEvar]*10+((int)c)-48;
+        break;
+      case ';':
+        DCEvar++;
+        DCEvars[DCEvar] = 0;
+        break;
+      case 'c':/* send primary device attributes */
+        /* send (ESC[?61c) */
+        host.send(((char)ESC)+"[?1;2c");
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" c");
+        break;
+      case 'q':
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" q");
+        term_state = TSTATE_DATA;
+        break;
+      case 'g':
+        /* used for tabsets */
+        switch (DCEvars[0]){
+        case 3:/* clear them */
+          int nw = display.getColumns();
+          Tabs = new byte[nw];
+          break;
+        case 0:
+          Tabs[C] = 0;
+          break;
+        }
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" g");
+        term_state = TSTATE_DATA;
+        break;
+      case 'h':
+        switch (DCEvars[0]) {
+        case 4:
+          insertmode = 1;
+          break;
+        case 20:
+          sendcrlf = true;
+          break;
+        default:
+          System.out.println("unsupported: ESC [ "+DCEvars[0]+" h");
+          break;
+        }
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" h");
+        break;
+      case 'l':
+        switch (DCEvars[0]) {
+        case 4:
+          insertmode = 0;
+          break;
+        case 20:
+          sendcrlf = false;
+          break;
+        }
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" l");
+        break;
+      case 'A': // CUU
+      {
+        int limit;
+	/* FIXME: xterm only cares about 0 and topmargin */
+        if (R > bm)
+            limit = bm+1;
+        else if (R >= tm) {
+            limit = tm;
+        } else
+            limit = 0;
+        if (DCEvars[0]==0)
+          R--;
+        else
+          R-=DCEvars[0];
+        if (R < limit)
+            R = limit;
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" A");
+        break;
+      }
+      case 'B':	// CUD
+        /* cursor down n (1) times */
+      {
+        int limit;
+        if (R < tm)
+            limit = tm-1;
+        else if (R <= bm) {
+            limit = bm;
+        } else
+            limit = rows - 1;
+        if (DCEvars[0]==0)
+          R++;
+        else
+          R+=DCEvars[0];
+        if (R > limit)
+            R = limit;
+        else {
+            if (debug>2) System.out.println("Not limited.");
+        }
+        if (debug>2) System.out.println("to: " + R);
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" B (at C="+C+")");
+        break;
+      }
+      case 'C':
+        if (DCEvars[0]==0)
+          C++;
+        else
+          C+=DCEvars[0];
+        if (C>columns-1)
+          C=columns-1;
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" C");
+        break;
+      case 'd': // CVA
+	R = DCEvars[0];
+        System.out.println("ESC [ "+DCEvars[0]+" d");
+        term_state = TSTATE_DATA;
+	break;
+      case 'D':
+        if (DCEvars[0]==0)
+          C--;
+        else
+          C-=DCEvars[0];
+        if (C<0) C=0;
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" D");
+        break;
+      case 'r': // DECSTBM
+        if (DCEvar>0)   //  Ray:  Any argument is optional
+        {
+          R = DCEvars[1]-1;
+          if (R < 0)
+            R = rows-1;
+          else if (R >= rows) {
+            R = rows - 1;
+ 	  }
+        } else
+          R = rows - 1;
+        display.setBottomMargin(DCEvars[1]-1);
+        if (R >= DCEvars[0])
+        {
+          R = DCEvars[0]-1;
+          if (R < 0)
+            R = 0;
+        }
+        display.setTopMargin(DCEvars[0]-1);
+	_SetCursor(0,0);
+        if (debug>1)
+          System.out.println("ESC ["+DCEvars[0]+" ; "+DCEvars[1]+" r");
+        term_state = TSTATE_DATA;
+        break;
+      case 'G':  /* CUP  / cursor absolute column */
+	C = DCEvars[0];
+	System.out.println("ESC [ "+DCEvars[0]+" G");
+        term_state = TSTATE_DATA;
+	break;
+      case 'H':  /* CUP  / cursor position */
+        /* gets 2 arguments */
+	_SetCursor(DCEvars[0]-1,DCEvars[1]-1);
+        term_state = TSTATE_DATA;
+        if (debug>2) {
+          System.out.println("ESC [ "+DCEvars[0]+";"+DCEvars[1]+" H, moveoutsidemargins "+moveoutsidemargins);
+          System.out.println("	-> R now "+R+", C now "+C);
+	}
+        break;
+      case 'f':  /* move cursor 2 */
+        /* gets 2 arguments */
+        R = DCEvars[0]-1;
+        C = DCEvars[1]-1;
+        if (C<0) C=0;
+        if (R<0) R=0;
+        term_state = TSTATE_DATA;
+        if (debug>2)
+          System.out.println("ESC [ "+DCEvars[0]+";"+DCEvars[1]+" f");
+        break;
+      case 'L':
+        /* insert n lines */
+        if (DCEvars[0]==0)
+          display.insertLine(R,display.SCROLL_DOWN);
+        else
+          display.insertLine(R,DCEvars[0],display.SCROLL_DOWN);
+        term_state = TSTATE_DATA;
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" L (at R "+R+")");
+        break;
+      case 'M':
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+"M at R="+R);
+        if (DCEvars[0]==0)
+          display.deleteLine(R);
+        else
+          for (int i=0;i<DCEvars[0];i++)
+            display.deleteLine(R);
+        term_state = TSTATE_DATA;
+        break;
+      case 'K':
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" K");
+        /* clear in line */
+        switch (DCEvars[0]) {
+        case 0:/*clear to right*/
+          if (C<columns-1)
+            display.deleteArea(C,R,columns-C,1);
+          break;
+        case 1:/*clear to the left*/
+          if (C>0)
+            display.deleteArea(0,R,C,1);    // Ray: Should at least include character before this one, not C-1
+          break;
+        case 2:/*clear whole line */
+          display.deleteArea(0,R,columns,1);
+          break;
+        }
+        term_state = TSTATE_DATA;
+        break;
+      case 'J':
+        /* clear display.below current line */
+        switch (DCEvars[0]) {
+        case 0:
+          if (R<rows-1)
+            display.deleteArea(0,R + 1,columns,rows-R-1);
+          if (C<columns-1)
+            display.deleteArea(C,R,columns-C,1);
+          break;
+        case 1:
+          if (R>0)
+            display.deleteArea(0,0,columns,R-1);
+          if (C>0)
+            display.deleteArea(0,R,C,1);    // Ray: Should at least include character before this one, not C-1
+          break;
+        case 2:
+          display.deleteArea(0,0,columns,rows);
+          break;
+        }
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" J");
+        term_state = TSTATE_DATA;
+        break;
+      case '@':
+	if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" @");
+	for (int i=0;i<DCEvars[0];i++)
+	  display.insertChar(C,R,' ',attributes);
+	term_state = TSTATE_DATA;
+	break;
+      case 'P':
+        if (debug>1)
+          System.out.println("ESC [ "+DCEvars[0]+" P, C="+C+",R="+R);
+	if (DCEvars[0]==0) DCEvars[0]=1;
+	for (int i=0;i<DCEvars[0];i++)
+          display.deleteChar(C,R);
+        term_state = TSTATE_DATA;
+        break;
+      case 'n':
+        switch (DCEvars[0]){
+        case 5: /* malfunction? No malfunction. */
+          host.send(((char)ESC)+"[0n");
+          if(debug > 1)
+            System.out.println("ESC[5n");
+          break;
+        case 6:
+          host.send(((char)ESC)+"["+R+";"+C+"R");
+          if(debug > 1)
+            System.out.println("ESC[6n");
+          break;
+        default:
+          if (debug>0)
+            System.out.println("ESC [ "+DCEvars[0]+" n??");
+          break;
+        }
+        term_state = TSTATE_DATA;
+        break;
+      case 'm':  /* attributes as color, bold , blink,*/
+        if (debug>3)
+          System.out.print("ESC [ ");
+        if (DCEvar == 0 && DCEvars[0] == 0)
+          attributes = 0;
+        for (i=0;i<=DCEvar;i++) {
+          switch (DCEvars[i]) {
+          case 0:
+            if (DCEvar>0)
+              attributes =0;
+            break;
+          case 4:
+            attributes |= CharDisplay.UNDERLINE;
+            break;
+          case 1:
+            attributes |= CharDisplay.BOLD;
+            break;
+          case 7:
+            attributes |= CharDisplay.INVERT;
+            break;
+          case 5: /* blink on */
+            break;
+          case 25: /* blinking off */
+            break;
+          case 27:
+            attributes &= ~CharDisplay.INVERT;
+            break;
+          case 24:
+            attributes &= ~CharDisplay.UNDERLINE;
+            break;
+          case 22:
+            attributes &= ~CharDisplay.BOLD;
+            break;
+          case 30:
+          case 31:
+          case 32:
+          case 33:
+          case 34:
+          case 35:
+          case 36:
+          case 37:
+            attributes &= ~(0xf<<3);
+            attributes |= ((DCEvars[i]-30)+1)<<3;
+            break;
+          case 39:
+            attributes &= ~(0xf<<3);
+            break;
+          case 40:
+          case 41:
+          case 42:
+          case 43:
+          case 44:
+          case 45:
+          case 46:
+          case 47:
+            attributes &= ~(0xf<<7);
+            attributes |= ((DCEvars[i]-40)+1)<<7;
+            break;
+          case 49:
+            attributes &= ~(0xf<<7);
+            break;
+
+          default:
+            System.out.println("ESC [ "+DCEvars[i]+" m unknown...");
+            break;
+          }
+          if (debug>3)
+            System.out.print(""+DCEvars[i]+";");
+        }
+        if (debug>3)
+          System.out.print(" (attributes = "+attributes+")m \n");
+        term_state = TSTATE_DATA;
+        break;
+      default:
+        if (debug>0)
+          System.out.println("ESC [ unknown letter:"+c+" ("+((int)c)+")");
+        term_state = TSTATE_DATA;
+        break;
+      }
+      break;
+    default:
+      term_state = TSTATE_DATA;
+      break;
+    }
+    if (C > columns) C = columns;
+    if (R > rows)  R = rows;
+    if (C < 0)  C = 0;
+    if (R < 0)  R = 0;
+    if (doshowcursor)
+      display.setCursorPos(C, R);
+    display.markLine(R,1);
+  }
+}
diff --git a/web/root/telnet/examples/bbs.html b/web/root/telnet/examples/bbs.html
new file mode 100644
index 0000000000000000000000000000000000000000..89375f178e18ac9a3009b559830eb3f8ea100bbf
--- /dev/null
+++ b/web/root/telnet/examples/bbs.html
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD>
+<TITLE>The JAVA Telnet Applet - Cereal BBS</TITLE>
+</HEAD>
+
+<H1>A JAVA Telnet Applet example - Cereal BBS </H1>
+
+<P>&copy; 1996 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>, 
+&copy; 1996 <A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus 
+Mei&szlig;ner</A> 
+<P>
+BBS Example one connects you to cereal.mv.com BBS after you pressed the button
+below. It supports full ANSI graphics and uses the appWrapper for maximum
+utilization of the web browser. After detaching the telnet window you can
+still go on browsing the web.
+<P>
+<APPLET CODEBASE="../" CODE="appWrapper.class" WIDTH=100 HEIGHT=25>
+<PARAM NAME=applet VALUE="telnet">
+<PARAM NAME=startButton VALUE="Connect to Cereal!">
+<PARAM NAME=stopButton VALUE="Shutdown Telnet">
+<PARAM NAME=frameTitle VALUE="The Java Telnet Applet: Example [cereal.mv.com]">
+<PARAM NAME=address VALUE="cereal.mv.com">
+<PARAM NAME=port VALUE="23">
+<PARAM NAME=emulation VALUE="vt320">
+<PARAM NAME=VTcolumns VALUE="80">
+<PARAM NAME=VTrows VALUE="24">
+<PARAM NAME=VTfont VALUE="Courier">
+<PARAM NAME=VTfontsize VALUE="12">
+<PARAM NAME=VTbuffer VALUE="1000">
+<PARAM NAME=VTscrollbar VALUE="true">
+<PARAM NAME=VTcharset VALUE="ibm">
+</APPLET>
+</HTML>
diff --git a/web/root/telnet/examples/bbs2.html b/web/root/telnet/examples/bbs2.html
new file mode 100644
index 0000000000000000000000000000000000000000..09d54564729abab447f0fc0efddab23af807fe8f
--- /dev/null
+++ b/web/root/telnet/examples/bbs2.html
@@ -0,0 +1,29 @@
+<HTML>
+<HEAD>
+<TITLE>The JAVA Telnet Applet - The Rock Garden BBS</TITLE>
+</HEAD>
+
+<H1>A JAVA Telnet Applet example - The Rock Garden BBS</H1>
+
+<P>&copy; 1996 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>, 
+&copy; 1996 <A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus 
+Mei&szlig;ner</A> 
+<P>
+BBS example two. Connect to Rock Garden BBS with fill ANSI graphics character
+support. This example makes use of the appWrapper.
+<P>
+<APPLET CODEBASE="../" CODE="appWrapper.class" WIDTH=640 HEIGHT=480>
+<PARAM NAME=applet VALUE="telnet">
+
+<PARAM NAME=address VALUE="garden.hvs.com">
+<PARAM NAME=port VALUE="23">
+<PARAM NAME=emulation VALUE="vt320">
+<PARAM NAME=VTcolumns VALUE="80">
+<PARAM NAME=VTrows VALUE="24">
+<PARAM NAME=VTfont VALUE="Courier">
+<PARAM NAME=VTfontsize VALUE="12">
+<PARAM NAME=VTbuffer VALUE="1000">
+<PARAM NAME=VTscrollbar VALUE="true">
+<PARAM NAME=VTcharset VALUE="ibm">
+</APPLET>
+</HTML>
diff --git a/web/root/telnet/examples/bbs3.html b/web/root/telnet/examples/bbs3.html
new file mode 100644
index 0000000000000000000000000000000000000000..c64d6f208bbe65f57b8f89f362dd366dae7b61ca
--- /dev/null
+++ b/web/root/telnet/examples/bbs3.html
@@ -0,0 +1,26 @@
+<HTML>
+<HEAD>
+<TITLE>The JAVA Telnet Applet - Connection Universe BBS</TITLE>
+</HEAD>
+
+<H1>A JAVA Telnet Applet example - Connection Universe BBS</H1>
+
+<P>&copy; 1996 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>, 
+&copy; 1996 <A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus 
+Mei&szlig;ner</A> 
+<P>
+BBS example three. It connects you to Connection Universe with full ANSI
+graphics character support. This example does not use the appWrapper. It
+is recommended, however.
+<P>
+<APPLET CODEBASE="../" CODE="telnet.class" WIDTH=640 HEIGHT=480>
+<PARAM NAME=address VALUE="www.cu-muc.de">
+<PARAM NAME=port VALUE="23">
+<PARAM NAME=emulation VALUE="vt320">
+<PARAM NAME=VTcolumns VALUE="80">
+<PARAM NAME=VTrows VALUE="24">
+<PARAM NAME=VTfont VALUE="Courier">
+<PARAM NAME=VTfontsize VALUE="12">
+<PARAM NAME=VTcharset VALUE="ibm">
+</APPLET>
+</HTML>
diff --git a/web/root/telnet/examples/lh.html b/web/root/telnet/examples/lh.html
new file mode 100644
index 0000000000000000000000000000000000000000..61d288e8898b7aff059184bc55b7d8587c033656
--- /dev/null
+++ b/web/root/telnet/examples/lh.html
@@ -0,0 +1,34 @@
+<HTML>
+<HEAD>
+<TITLE>The JAVA Telnet Applet - localhost</TITLE>
+</HEAD>
+
+<H1>A JAVA Telnet Applet - localhost</H1>
+
+<P>&copy; 1996 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>, 
+&copy; 1996 <A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus 
+Mei&szlig;ner</A> 
+<P>
+Another example using the telnet applet only. Without the appWrapper it
+causes the applet to hange when you leave the page. It is customized with
+a buttonbar for usage on UNIX systems.
+<P>
+<APPLET CODEBASE="../" CODE="telnet.class" WIDTH=640 HEIGHT=480>
+<PARAM NAME=address VALUE="localhost">
+<PARAM NAME=port VALUE="23">
+<PARAM NAME=emulation VALUE="vt320">
+<PARAM NAME=VTcolumns VALUE="80">
+<PARAM NAME=VTrows VALUE="24">
+<PARAM NAME=VTfont VALUE="Courier">
+<PARAM NAME=VTfontsize VALUE="12">
+<PARAM NAME=VTbuffer VALUE="1000">
+<PARAM NAME=VTscrollbar VALUE="true">
+<PARAM NAME=1#Button VALUE="List Users|who\n">
+<PARAM NAME=2#Button VALUE="Execute:|sag \@exec@\n">
+<PARAM NAME=3#Input VALUE="exec#10|ps">
+<PARAM NAME=4#Button VALUE="Connect:|\$connect(\@addr@)">
+<PARAM NAME=5#Input VALUE="addr#20|localhost">
+<PARAM NAME=6#Button VALUE="Disconnect!|\$disconnect()">
+<PARAM NAME=script VALUE="login:|leo|TERM =|vt100">
+</APPLET>
+</HTML>
diff --git a/web/root/telnet/examples/mg.html b/web/root/telnet/examples/mg.html
new file mode 100644
index 0000000000000000000000000000000000000000..2baa869f2703d5ab3eb9f8e9eba084bfd3f946a5
--- /dev/null
+++ b/web/root/telnet/examples/mg.html
@@ -0,0 +1,49 @@
+<HTML>
+<HEAD>
+<TITLE>The Java(tm) Telnet Applet: Connect to MorgenGrauen</TITLE>
+</HEAD>
+<BODY>
+
+<H1>The Java<SUP>(tm)</SUP> Telnet Applet: Connect to MorgenGrauen</H1>
+
+<P>&copy; 1996-98 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>,
+<A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus Mei&szlig;ner</A> 
+<P>
+This is a variation with almost all available parameters set. Two modules
+(ButtonBar and Script) are used for customization. It will login you as
+guest in the MUD MorgenGrauen.
+<P>
+
+<APPLET CODEBASE="../" CODE="telnet.class" WIDTH=640 HEIGHT=480>
+  <PARAM NAME=address VALUE="mg.mud.de">
+  <PARAM NAME=port VALUE="23">
+
+  <!-- terminal emulation -->
+  <PARAM NAME=VTscrollbar VALUE="true">
+  <PARAM NAME=VTresize    VALUE="font">
+  <PARAM NAME=VTfont      VALUE="Courier">
+  <PARAM NAME=VTfontsize  VALUE="13">
+  <PARAM NAME=VTid        VALUE="vt320">
+
+  <!-- modules: #1 is a buttonbar -->
+  <PARAM NAME=module#1    VALUE="ButtonBar@North">
+  <PARAM NAME=1#Button    VALUE="Norden|norden\n\r">
+  <PARAM NAME=2#Button    VALUE="S\&uuml;den|sueden\n\r">
+  <PARAM NAME=3#Button    VALUE="Westen|westen\n\r">
+  <PARAM NAME=4#Button    VALUE="Osten|Osten\n\r">
+  <PARAM NAME=5#Button    VALUE="Anwesende|kwer\n\r">
+  <PARAM NAME=6#Button    VALUE="HILFE!|hilfe \@help@\n\r">
+  <PARAM NAME=7#Input     VALUE="help#20|">
+  <PARAM NAME=8#Button    VALUE="Verbinden|\$connect()">
+  <PARAM NAME=9#Button    VALUE="Abbrechen|\$disconnect()">
+  <PARAM NAME=10#Button   VALUE="Externes Fenster|\$detach()">
+  <PARAM NAME=11#Button   VALUE="Text senden:|\@send@\r\n">
+  <PARAM NAME=12#Input    VALUE="send#80|wer">
+
+	<!-- modules: #2 is a script -->
+  <PARAM NAME=module#2    VALUE="Script">
+  <PARAM NAME=script      VALUE="denn ?|gast|EMail|none|ch:|weiblich">
+
+</APPLET>
+</BODY>
+</HTML>
diff --git a/web/root/telnet/examples/tapp.html b/web/root/telnet/examples/tapp.html
new file mode 100644
index 0000000000000000000000000000000000000000..9501a1a3aeec47f9ebe08261f0378a3098290362
--- /dev/null
+++ b/web/root/telnet/examples/tapp.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<TITLE>The JAVA Telnet Applet - TAPPMud</TITLE>
+</HEAD>
+</BODY>
+
+<H1>A JAVA Telnet Applet example - TAPPMud</H1>
+
+<P>&copy; 1996 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>,
+&copy; 1996 <A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus 
+Mei&szlig;ner</A>
+<P>
+This is a very small example with no customization. The telnet applet itself
+is loaded on the page. Leaving the page causes the applet to stop working,
+but no disconnecting from the remote host.<P>
+
+<APPLET CODEBASE="../" CODE="telnet.class" WIDTH=600 HEIGHT=400>
+<PARAM NAME=address VALUE="tapp.mud.de">
+</APPLET>
+</BODY>
+</HTML>
diff --git a/web/root/telnet/frame.class b/web/root/telnet/frame.class
new file mode 100644
index 0000000000000000000000000000000000000000..24cd6b269e1c8e46fae41295679c9717c22e25da
Binary files /dev/null and b/web/root/telnet/frame.class differ
diff --git a/web/root/telnet/frame.java b/web/root/telnet/frame.java
new file mode 100644
index 0000000000000000000000000000000000000000..7db8de43e3d8449de2cbfa8755d43369771895fe
--- /dev/null
+++ b/web/root/telnet/frame.java
@@ -0,0 +1,49 @@
+/**
+ * frame -- a frame subclass for handling frame events
+ * --
+ * $Id$
+ * $timestamp: Tue Jul  8 10:02:36 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+import java.awt.Frame;
+import java.awt.Component;
+import java.awt.Event;
+import java.applet.Applet;
+
+public class frame extends Frame 
+{
+  public frame(String title) { super(title); }
+  
+  public boolean handleEvent(Event evt) {
+    if(evt.target == this && evt.id == Event.WINDOW_DESTROY) {
+      Component comp[] = getComponents();
+      for(int i = comp.length - 1; i >= 0; i--)
+        if(comp[i] instanceof Applet) {
+          ((Applet)comp[i]).stop();
+          this.dispose();
+          return true;
+        }
+    }
+    return false;
+  }
+}
+
+    
+    
diff --git a/web/root/telnet/ibmtest.html b/web/root/telnet/ibmtest.html
new file mode 100644
index 0000000000000000000000000000000000000000..0140ce6e02e8c8e89d04e37def8605c185d0b3bc
--- /dev/null
+++ b/web/root/telnet/ibmtest.html
@@ -0,0 +1,31 @@
+<HTML>
+<HEAD>
+<TITLE>The JAVA Telnet Applet</TITLE>
+</HEAD>
+
+<H1>The JAVA Telnet Applet</H1>
+
+<P>&copy; 1996 <A HREF="mailto:leo@first.gmd.de">Matthias L. Jugel</A>, 
+&copy; 1996 <A HREF="mailto:msmeissn@cip.informatik.uni-erlangen.de">Marcus 
+Mei&szlig;ner</A> 
+
+<APPLET CODE="telnet.class" WIDTH=640 HEIGHT=480>
+<PARAM NAME=address VALUE="tanis.first.gmd.de">
+<PARAM NAME=port VALUE="23">
+<PARAM NAME=emulation VALUE="vt320">
+<PARAM NAME=VTcolumns VALUE="80">
+<PARAM NAME=VTrows VALUE="24">
+<PARAM NAME=VTfont VALUE="Courier">
+<PARAM NAME=VTfontsize VALUE="12">
+<PARAM NAME=VTbuffer VALUE="1000">
+<PARAM NAME=VTscrollbar VALUE="true">
+<PARAM NAME=VTcharset VALUE="ibm">
+<PARAM NAME=1#Button VALUE="List Users|who\n">
+<PARAM NAME=2#Button VALUE="Execute:|sag \@exec@\n">
+<PARAM NAME=3#Input VALUE="exec#10|ps">
+<PARAM NAME=4#Button VALUE="Connect:|\$connect(\@addr@)">
+<PARAM NAME=5#Input VALUE="addr#20|localhost">
+<PARAM NAME=6#Button VALUE="Disconnect!|\$disconnect()">
+<PARAM NAME=script VALUE="login:|leo|TERM =|vt100">
+</APPLET>
+</HTML>
diff --git a/web/root/telnet/index.download.html b/web/root/telnet/index.download.html
new file mode 100644
index 0000000000000000000000000000000000000000..27e680d4931894db11c2236b1a08badb697f0339
--- /dev/null
+++ b/web/root/telnet/index.download.html
@@ -0,0 +1,182 @@
+<!doctype HTML public "-//W30//DTD W3 HTML 3.0//EN">
+<HTML>
+  <HEAD>
+    <TITLE>The Java(tm) Telnet Applet: Downloading and Unpacking</TITLE>
+  </HEAD>
+  <BODY BGCOLOR="#ffffff">
+    <H1>The <A HREF="http://java.sun.com/">Java<SUP>(tm)</SUP></A>
+      Telnet Applet: Download</H1>
+    &copy; 1996, 97 <A HREF="mailto:leo@mud.de">Matthias L. Jugel</A>,
+    <A HREF="mailto:marcus@mud.de">Marcus Mei&szlig;ner</A> 
+    <HR>
+    <H2 ALIGN=CENTER>
+      [<A HREF="#package">Package</A> | <A HREF="#class">Classes</A>]
+    </H2>
+    <HR>
+    <P>
+      <A NAME="package"></A>
+    <H2>Package download and Unpacking</H2>
+    Select the package according to your operating system. Apple users may
+    choose to select the <A HREF="../telnet.zip">telnet.zip</A> file. Please be
+    aware that the packages contain <I>long filenames</I> and may not work with
+    systems not supporting these, such as Windows 3.x.<P>
+      If you have problems unpacking one of the packages read the notes below the
+      table or <A HREF="mailto:leo@mud.de,marcus@mud.de">contact us</A> if it doesn't make
+      sense.
+    <P>
+    <CENTER>
+      <TABLE BORDER=1>
+	<TR ALIGN=CENTER>
+	  <TD><TD><B>UNIX</B> <TD><B>Windows NT/95 &amp; Apple</B></TD>
+	<TR ALIGN=CENTER>
+	  <TD><B>full package</B>
+	  <TD><A HREF="../telnet.tgz">telnet.tgz</A></TD>
+	  <TD><A HREF="../telnet.zip">telnet.zip</A></TD>
+	<TR ALIGN=CENTER>
+	  <TD><B>classes only</B>
+	  <TD><A HREF="../classes.tgz">classes.tgz</A></TD>
+	  <TD><A HREF="../classes.zip">classes.zip</A></TD>
+	<TR ALIGN=CENTER>
+	<TR ALIGN=CENTER>
+	  <TD><B>patches</B>
+	  <TD COLSPAN=2>
+	    <A HREF="../telnet-srp-diff.tar.gz">secure authentication</A><BR>
+	  </TD>
+	<TR ALIGN=CENTER>
+	  <TD><B>full package</B>
+	  <TD><A HREF="../telnet_p.tgz">telnet_p.tgz</A></TD>
+	  <TD><A HREF="../telnet_p.zip">telnet_p.zip</A></TD>
+	<TR ALIGN=CENTER>
+	  <TD><B>classes only</B>
+	  <TD><A HREF="../class_p.tgz">class_p.tgz</A></TD>
+	  <TD><A HREF="../class_p.zip">class_p.zip</A></TD>
+      </TABLE>
+      <P>
+	<I>Note:</I> <A HREF="http://srp.stanford.edu/srp/"><B>Secure 
+	    Remote Password Authentication (SRP)</B></A>, &copy;  
+	    <A HREF="http://www.stanford.edu">Stanford University</A>,
+	    <A HREF="http://srp.stanford.edu/srp/export/eps-1.3.tar.gz">
+	    official distribution</A><BR> download the <B>patched</B> 
+	    version if you don't want to do it yourself.<P>
+	<I>Note:</I> We recommend you download the classes.zip in any case and
+	use the <BR><TT>&lt;APPLET ARCHIVE="classes.zip" ...&gt;</TT> parameter.<BR>
+	This <B>decreases the download time</B> for the applet!
+      <P>
+      <TABLE BORDER=1>
+	<TR ALIGN=CENTER>
+	  <TD><TD><B>Linux</B> <TD><B>Windows NT</B></TD>
+	<TR ALIGN=CENTER>
+	  <TD><B>simple relayd</B>
+	  <TD><A HREF="tools/relayd">relayd</A></TD>
+	  <TD><A HREF="tools/relayd.exe">relayd.exe</A></TD>
+	<TR ALIGN=CENTER>
+	  <TD><B>multi relayd</B>
+	  <TD><A HREF="tools/mrelayd">mrelayd</A></TD>
+	  <TD><A HREF="tools/mrelayd.exe">mrelayd.exe</A></TD>
+      </TABLE>
+      <P>
+	<I>Note:</I> Do a <B>chmod +x relayd</B> after download to make the
+	             file executable.<BR>If you need a binary for a different
+	             platform <A HREF="mailto:leo@mud.de,marcus@mud.de">please
+	             ask.</A>
+    </CENTER>
+    <P>
+    <DL>
+      <DT><B>Apple Computers:</B><P>
+      <DD>Unless you have a UNIX tar and gzip implementation download the
+	<A HREF="../telnet.zip">telnet.zip</A> file.<P>
+	  <DT><B>Windows NT/95:</B><P>
+	  <DD>Select the <A HREF="../telnet.zip">telnet.zip</A> file and unpack it
+	    using one of the publicly available tools, like
+	    <A HREF="http://www.winzip.com">WinZIP</A>. Make sure you have selected
+	    the checkbox to <B>extract subdirectories</B>!<P>
+	      <DT><B>UNIX:</B><P>
+	      <DD>Extract the files from the <A HREF="../telnet.tgz">telnet.tgz</A> file
+		using the following command:
+		<PRE><B>gunzip -c telnet.tgz | tar xvf -</B></PRE>
+		This will extract a directory called <B>Telnet/</B> containing the
+		full source code + documentation and precompiled classes. <B>gunzip</B>
+		(GNU unzip) can be found on a public ftp server.<P>
+		</DL>
+		  For further information on using and installing the applet please refer to the
+		  <A HREF="Documentation/index.html">Documentation</A>.
+		<HR>
+		<A NAME="class"></A>
+    <H2>Direct CLASS download:</H2>
+    Sometimes it is not necessary to download the complete package just to update
+    one class. Below is the tree of classes to directly download the class you
+    may need. If you are not sure, which classes have changed have a look at
+    your copy of the file REVISION and the same file on the home page of the
+    applet. If you are viewing this page from your own copy,
+    <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet/index.download.html">
+      go to the home page download</A>. Higher revision numbers indicate changes.
+    <P>
+      Right click on the link and select <I>Save as ...</I>. Please make sure you
+      download all needed classes. If you're downloading the first time, please
+      use the <A HREF="#package">package download</A> links above!
+    <P>
+      If you want all classes at once download either 
+      <A HREF="../classes.tgz">classes.tgz</A> (<B>UNIX</B>) or
+      <A HREF="../classes.zip">classes.zip</A> (<B>Windows/Apple</B>).
+    <P>
+    <UL>
+      <LI><A HREF="appWrapper.class">appWrapper.class</A> (applet wrapper)
+      <LI><A HREF="frame.class">frame.class</A> (appWrapper needs it!)<P>
+      <LI><B><A HREF="telnet.class">telnet.class</A></B> (applet/application)
+	<UL>
+	  <LI><A HREF="display/CharDisplay.class">display/CharDisplay.class</A>
+	    (character display class)
+	  <LI><A HREF="display/SoftFont.class">display/SoftFont.class</A>
+	    (software font for special characters)
+	  <LI><A HREF="display/Terminal.class">display/Terminal.class</A>
+	    (abstract terminal)
+	  <LI><A HREF="display/TerminalHost.class">display/TerminalHost.class</A>
+	    (abstract host interface)
+	  <LI><A HREF="display/vt320.class">display/vt320.class</A>
+	    (VT/ANSI terminal emulation)
+	    <P>
+	  <LI><A HREF="socket/TelnetIO.class">socket/TelnetIO.class</A>
+	    (telnet io handling)
+	  <LI><A HREF="socket/StatusPeer.class">socket/StatusPeer.class</A>
+	    (status peer interface)
+	    <P>
+	  <LI><A HREF="modules/Module.class">modules/Module.class</A>
+	    (abstract module interface)
+	  <LI><A HREF="modules/ButtonBar.class">modules/ButtonBar.class</A>
+	    (programmable button bar)
+	  <LI><A HREF="modules/Script.class">modules/Script.class</A>
+	    (simple script module)
+	  <LI><A HREF="modules/MudConnector.class">modules/MudConnector.class</A>
+	    (a specialized specialized example module)
+	  <LI><A HREF="modules/BSXModule.class">modules/BSXModule</A> 
+	    (a graphical MUD extension)
+	  <UL>
+	      <LI><A HREF="modules/bsx/BSXDisplay.class">modules/bsx/BSXDisplay.class</A>
+	      <LI><A HREF="modules/bsx/BSXGraphic.class">modules/bsx/BSXGraphic.class</A>
+	      <LI><A HREF="modules/bsx/BSXInputStream.class">modules/bsx/BSXInputStream.class</A>
+	      <LI><A HREF="modules/bsx/BSXObject.class">modules/bsx/BSXObject.class</A>
+	      <LI><A HREF="modules/bsx/BSXPolygon.class">modules/bsx/BSXPolygon.class</A>
+	      <LI><A HREF="modules/bsx/BSXScene.class">modules/bsx/BSXScene.class</A>
+	   </UL>
+	</UL><P>
+      <LI><B>additional tools:</B>
+	<UL>
+	  <LI><A HREF="tools/proxy.class">tools/proxy.class</A> (application)<BR>
+	    Standalone program to be run as server for telnet redirection.
+	  <LI><A HREF="tools/redirector.class">tools/redirector.class</A>
+	    (internal redirector)
+	</UL><P>
+      <LI><A HREF="IOtest.class">IOtest.class</A> (application)
+      <LI><A HREF="TelnetWrapper.class">TelnetWrapper.class</A> (application)
+      <LI><A HREF="CharDisplayTest.class">CharDisplayTest.class</A>
+    </UL>		
+    <HR>
+    <A HREF="index.html">
+      <IMG ALIGN=LEFT SRC="Documentation/images/left.gif" BORDER=0 ALT="[BACK]"></A>
+    <B>Get the <A HREF="http://www.first.gmd.de/persons/leo/java/Telnet">latest
+	version</A> here!</B> <BR>
+    <!-- html-ts start -->
+    Last modified: Wed Jul 23 14:46:07 1997 by Matthias L. Jugel
+    <!-- html-ts end -->
+  </BODY>
+</HTML>
diff --git a/web/root/telnet/index.ssjs b/web/root/telnet/index.ssjs
new file mode 100644
index 0000000000000000000000000000000000000000..d9889e380df08817b0631532165e775126960078
--- /dev/null
+++ b/web/root/telnet/index.ssjs
@@ -0,0 +1,2 @@
+load(web_root_dir + "/../lib/template.ssjs");
+write_template("telnet.inc");
\ No newline at end of file
diff --git a/web/root/telnet/modules/BSXModule.class b/web/root/telnet/modules/BSXModule.class
new file mode 100644
index 0000000000000000000000000000000000000000..7dbf91c7379142919954dd2d85e7b756b06668ea
Binary files /dev/null and b/web/root/telnet/modules/BSXModule.class differ
diff --git a/web/root/telnet/modules/BSXModule.java b/web/root/telnet/modules/BSXModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..130369cbd332f414c46e66cc89e470202ea8795d
--- /dev/null
+++ b/web/root/telnet/modules/BSXModule.java
@@ -0,0 +1,562 @@
+/**
+ * BSXModule -- implements BSX controll sequence handling
+ * --
+ * $Id$
+ * $timestamp: Tue Oct 14 18:00:00 1997 by Thomas Kriegelstein :$
+ *
+ * This file and the related package may be part of "The Java Telnet
+ * Applet" by Matthias L. Jugel.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The BSXModule" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+package modules;
+
+import telnet;
+import frame;
+
+import modules.bsx.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.io.*;
+import java.util.*;
+/**
+ * The ultimate BSX module implements most of the common used
+ * BSX controll sequences.
+ * <P>
+ * Features:<UL>
+ * <LI>a Statemachine to parse the Strings passed by the telnet
+ * <LI>a own package named bsx, for Window and Polygon handling
+ * terrible english because my native language is german
+ * </UL>
+ * TODO:<UL>
+ * <LI>more BSX Sequences
+ * <LI>Documentaion
+ * </UL>
+ * 
+ * @author  Thomas Kriegelstein
+ */
+
+public class BSXModule extends Panel implements Module 
+{
+  /** Client Version */
+  protected String clientVersion = "Foob 0.5";
+  /** The Frame, where the graphic is drawn */
+  private BSXDisplay bsxWindow;
+  /** Our parent, the telnet app. */
+  private telnet parent;
+  /** the Container, wich is around us */
+  private Container toplevel;
+  /** the Buttons to switch on and off the logging and BSX handling */
+  private Button bsxButton,logButton;
+  /** the states of the Buttons */
+  private boolean bsxCheckIt,logging;
+  /** register o as our parent */ 
+  public void setLoader(Object o) { parent = (telnet)o; }
+  /** do nothing */
+  public void connect(String host, int port) {}
+  /** do nothing */
+  public void disconnect() {}
+  /**
+   * This method is called by the telnet, so that we can parse the String.
+   * Prints out the filtered String if logging s enabled.
+   * @param String s the String to be parsed
+   * @return a filtered String with no BSX sequences in it
+   */
+  public String receive(String s) 
+    {
+      String res;
+      if (!bsxCheckIt) res=s;
+      else res=parseString(s);
+      if (logging)
+	System.out.println(res);
+      return res;
+    }
+  /**
+   * Adds two Buttons to the Panel and instanciates a BSXWindow.
+   */   
+  public void addNotify() 
+    {
+      this.setLayout(new GridLayout(1,0));
+      // Enable BSX Parsing
+      if (bsxWindow==null)
+	{
+	  this.add(bsxButton=new Button("BSX aus!"));
+	  bsxCheckIt=true;
+	  this.add(logButton=new Button("Logging an!"));
+	  logging=false;
+	  bsxWindow = new BSXDisplay();
+	}
+      //
+      super.addNotify();
+    }
+  /**
+   * Java 1.0 eventhandling routines.
+   * @param Event e
+   * @return true if Event has been recognized and fullfilled.
+   */
+  public boolean handleEvent(Event e)
+    {
+      if ((e.id==Event.ACTION_EVENT)&&(e.target==bsxButton)) 
+	{
+	  bsxCheckIt=!bsxCheckIt;
+	  if (bsxCheckIt) 
+	    {
+	      parent.writeToSocket("#VER "+clientVersion+"\r\n");
+	      bsxButton.setLabel("BSX aus!");
+	      bsxWindow.show();
+	    }
+	  else 
+	    {
+	      parent.writeToSocket("#VER\r\n");
+	      bsxButton.setLabel("BSX an!");
+	      bsxWindow.hide();
+	      if (debug>1)
+		{
+		  parent.writeToUser(lastCommand+strIdentifier+BSXData);
+		  System.out.println("BSX off: last Input -");
+		  System.out.println(lastCommand+strIdentifier+BSXData);
+		}
+	    }
+	  resetMachine();  
+	  return true;
+	}
+      if ((e.id==Event.ACTION_EVENT)&&(e.target==logButton))
+	{
+	  logging=!logging;
+	  if (logging)
+	    {
+	      logButton.setLabel("Logging aus!");
+	    }
+	  else
+	    {
+	      logButton.setLabel("Logging an!");
+	    }
+	  return true;
+	}
+      return super.handleEvent(e);
+    }
+
+  /** 
+   * And here we go again * latest implementation of my StateMachine
+   * all methods that return a String, return the String passed to them
+   * but without the chars they have recognized and solved
+   * the real results are contained in the (global) variables
+   */
+
+  /**
+   * my Debuglevel, because this software is still beta.
+   */
+  private static int debug = 0;
+  /**
+   * a main for test-purposes
+   */
+  public static void main (String args[])
+  {
+    BSXModule bsxm=new BSXModule();
+    debug=1;
+    String res;
+    res=bsxm.parseString("Testing@Hawk@RQV@SCEintro.@VIO/magier:foobar.@RFS@RMO/magier:foo");
+    res+=bsxm.parseString("bar.@RFSThis is a test.@TMS@PRO@RFS@BOMTest me Carefully.");
+    System.out.println("Gefiltert: "+res);
+  }
+  /**
+   * lastCommand is a Statedescriptor.<BR>
+   * if lastCommand.length()=4 then the entire Command has been read
+   * else go on reading the command completly<BR>
+   * Commands are: PRO SCE VIO DFS DFO TMS RMO RFS RQV PUR
+   * additional commands are: BOM EOM LON LOF TXT which will not be supported 
+   * by Regenbogen BSX java Client.<BR>
+   * Commands are preceeded by a @
+   */
+  private String lastCommand="";
+  /**
+   * lastState identifies what we have done last time we received a string
+   * <UL>
+   * <LI>-1 undefined -> used to mark succesful work
+   * <LI> 0 nothing -> go on searching for a new command
+   * <LI> 1 identifier -> we have to complete the identifier
+   * <LI> 2 download -> we have to get more BSXData
+   * </UL>
+   */
+  private int lastState;
+  /** holds the identifier of the current object */
+  private String strIdentifier="";
+  /** holds the X position of the current object as a String*/
+  private String strXPos="";
+  /** holds the X position of the current object as an int */
+  private int intXPos=0;
+  /** holds the Y position of the current object as a String*/
+  private String strYPos="";
+  /** holds the Y position of the current object as an int */
+  private int intYPos=0;
+  /** holds the number of polygons in the current description as a String */
+  private String strPolys="";
+  /** holds the number of polygons in the current description as an int */
+  private int intPolys=0;
+  /** holds the number of edges in the current polygon as a String */
+  private String strEdges="";
+  /** holds the number of edges in the current polygon as an int */
+  private int intEdges=0;
+  /** holds the BSX description, including the numbers of polygons and edges */
+  private String BSXData="";
+  /** 
+   * reset machine to an initial status
+   */ 
+  private void resetMachine()
+  {
+    if (debug>0)
+    {
+      System.err.println("BSXStateMachine statustrace:");
+      System.err.println("Command:    "+lastCommand);
+      System.err.println("State:      "+lastState);
+      System.err.println("Identifier: "+strIdentifier);
+    }
+    lastCommand="";
+    lastState=0;
+    strIdentifier="";
+    strXPos="";
+    intXPos=0;
+    strYPos="";
+    intYPos=0;
+    strPolys="";
+    intPolys=0;
+    strEdges="";
+    intEdges=0;
+    BSXData="";
+  }
+  /**
+   * convert a Hexnumber contained in a 2byteString into int
+   * @param String s
+   * @return the converted int or 0 if not succesful 
+   */
+  private int asciiHexToInt(String s)
+  {
+    if (s.length()==2)
+    {
+      try
+      {
+        int h=(int)s.charAt(0);
+        if (h>='A') h-='A'-10; else h-='0';
+        int l=(int)s.charAt(1);
+        if (l>='A') l-='A'-10; else l-='0';
+	if (debug>9) warn("Converting Hex: "+s+" to int: "+(h*16+l));
+        return h*16+l;
+      }
+      catch (Exception e)
+      {
+        return 0;
+      }
+    }
+    return 0;
+  }
+  /**
+   * The method called to start the parsing
+   * @param String s
+   * @return filtered String
+   */
+  private String parseString(String s)
+  {
+    if ((s.indexOf("@")==-1)&&(lastState==0))
+    {
+      if (debug>0) warn("parseString done");
+      return s;
+    }
+    if (lastState!=0)
+    {
+      if (debug>0) warn("parseString pending Input");
+      s=decodeCommand(s);
+    }
+    int i=0;
+    int pos=s.indexOf("@",i);
+    String res="";
+    while ((pos!=-1)&&(pos<s.length()))
+    {
+      if (debug>0) warn("parseString Command at "+pos);
+      res+=s.substring(0,pos);
+      if (debug>0) warn("still to parse: "+s.substring(pos));
+      String tmp=decodeCommand(s.substring(pos));
+      if (tmp.equals(s.substring(pos))) i++;
+      else i=0;
+      s=tmp;
+      pos=s.indexOf("@",i); // search for next Command
+    }
+    res+=s;
+    return res;
+  }
+  /**
+   * simple messaging for debug purposes
+   * @param String s to write to stderr
+   */
+  private void warn(String s) { System.err.println("Warning: "+s+"."); }
+  /**
+   * read the identifier into strIdentifier
+   * @param String s to be parsed
+   * @returns String without the first identifier
+   */
+  private String readIdentifier(String s)
+  {
+    if (strIdentifier.equals("")) lastState=1;
+    if (lastState==1)
+    {
+      int i=s.indexOf(".");
+      if (i==-1)
+      {
+        strIdentifier+=s;
+        return "";
+      }
+      else
+      {
+        lastState=-1;
+        strIdentifier+=s.substring(0,i);
+        return s.substring(i+1);
+      }
+    }
+    return s;
+  }
+  /**
+   * read the BSX-Descriptions into BSXData
+   * @param String s to be parsed
+   * @return String without the first BSX Data sequence
+   */
+  private String readBSXData(String s)
+  {
+    if (strPolys.equals("")) lastState=2;
+    if (lastState==2)
+    {
+      while((strPolys.length()<2)&&(s.length()>0))
+      {
+        BSXData+=s.charAt(0);
+        strPolys+=s.charAt(0); s=s.substring(1);
+      }
+      if (strPolys.length()<2) return "";
+      else if (debug>1) warn("PolyCount read:"+strPolys);
+      if (intPolys == 0) 
+	intPolys=asciiHexToInt(strPolys);
+      if (debug>9) warn("equals "+intPolys);
+      while ((s.length()>0)&&(intPolys>0))
+      {
+        while((strEdges.length()<2)&&(s.length()>0))
+        {
+          BSXData+=s.charAt(0);
+          strEdges+=s.charAt(0); s=s.substring(1);
+        }
+        if (strEdges.length()<2) return "";
+	else if (debug>1) warn("EdgeCount read:"+strEdges);
+	if (intEdges == 0)
+	  intEdges=(asciiHexToInt(strEdges)*2+1)*2;
+        // color plus every edge x,y times 2 is the number of chars to read.
+        while((s.length()>0)&&(intEdges>0))
+        {
+          BSXData+=s.charAt(0); s=s.substring(1);
+          intEdges--;
+        }
+        if (intEdges>0) return "";
+        strEdges=""; // reset the number of Edges!
+        intPolys--;
+      }
+      if (intPolys>0) return "";
+      if (intPolys==0) strPolys="";
+      lastState=-1;
+    }
+    return s;
+  }
+  /**
+   * read the Command, catch all necessary data, and execute it
+   * @param String s to be parsed
+   * @return String without first command
+   */
+  private String decodeCommand(String s)
+  {
+    while ((lastCommand.length()!=4)&&(s.length()>0))
+    {
+      lastCommand+=s.charAt(0); s=s.substring(1);
+    }
+    if (lastCommand.length()!=4)
+    {
+      lastState=-1;
+      return "";
+    }
+    if (false) {} // hehe, just to write everytime "else if"
+    // ReFresh Scene
+    else if (lastCommand.equals("@RFS"))
+      {
+        resetMachine();
+        if (bsxWindow!=null) bsxWindow.repaint();
+        else warn("No BSX Output Available");
+      }
+    // VIsualize Object
+    else if (lastCommand.equals("@VIO"))
+      {
+        s=readIdentifier(s);
+        if (lastState==1) return "";
+        while ((strXPos.length()<2)&&(s.length()>0))
+        {
+          strXPos+=s.charAt(0); s=s.substring(1);
+        }
+        if (strXPos.length()!=2)
+        {
+          return "";
+        }
+        while ((strYPos.length()<2)&&(s.length()>0))
+        {
+          strYPos+=s.charAt(0); s=s.substring(1);
+        }
+        if (strYPos.length()!=2)
+        {
+          return "";
+        }
+	intXPos=asciiHexToInt(strXPos);
+	intYPos=asciiHexToInt(strYPos);
+        if (bsxWindow!=null)
+          if (!bsxWindow.showObject(strIdentifier,intXPos,intYPos))
+            if (parent!=null)
+              parent.writeToSocket("#RQO "+strIdentifier+"\r\n");
+            else warn("no Socket to send to");
+          else
+            if (debug>0)
+              System.out.println("Query BSX-Description for "+strIdentifier);
+            else ;
+        else warn("no BSX Output available");
+        resetMachine();
+      }
+    // ReMove Object
+    else if (lastCommand.equals("@RMO"))
+      {
+        s=readIdentifier(s);
+        if (lastState==1) return "";
+        if (bsxWindow!=null) bsxWindow.removeObject(strIdentifier);
+        else warn("no BSX Output available");
+        resetMachine();
+      }
+    // ReQuest Version
+    else if (lastCommand.equals("@RQV"))
+      {
+        if (parent!=null) parent.writeToSocket("#VER "+clientVersion+"\r\n");
+        else warn("no Socket to send to");
+        resetMachine();
+      }
+    // PROmotion
+    else if (lastCommand.equals("@PRO"))
+      {
+        if (parent!=null)
+          parent.writeToUser(
+"****************************************************************************\r\n"+
+"*                                                                          *\r\n"+
+"*  Regenbogen BSX - Ein MultiUser Dungeon mit Grafikunterstützung          *\r\n"+
+"*  Adresse: rb.mud.de Port: 4711 Admins: mud@rb.mud.de                     *\r\n"+
+"*  Hier ist was los Leute! Kommt. Lest. Schaut. Spielt. Und Redet.         *\r\n"+
+"*                                                                          *\r\n"+
+"* Client: von Foobar basierend auf Arbeiten von Riwa und Hate@Morgengrauen *\r\n"+
+"*                                                                          *\r\n"+
+"*****************************************************************Java*rulez*\r\n"
+                            );
+        else warn("no User to display promotion available");
+        resetMachine();
+      }
+    // display SCEne
+    else if (lastCommand.equals("@SCE"))
+      {
+        s=readIdentifier(s);
+        if (lastState==1) return "";
+        if (bsxWindow!=null)
+          if (!bsxWindow.showScene(strIdentifier))
+            if (parent!=null)
+              parent.writeToSocket("#RQS "+strIdentifier+"\r\n");
+            else warn("no Socket to send to");
+          else
+            if (debug>0)
+              System.out.println("Query BSX-Scene for "+strIdentifier);
+            else ;
+        else warn("no BSX Output available");
+        resetMachine();
+      }
+    // DeFine Object
+    else if (lastCommand.equals("@DFO"))
+      {
+        s=readIdentifier(s);
+        if (lastState==1) return "";
+        s=readBSXData(s);
+        if (lastState==2) return "";
+        BSXInputStream bis=new BSXInputStream(new StringBufferInputStream(BSXData));
+        if (bsxWindow!=null)
+          try {
+            bsxWindow.addObject(strIdentifier,bis.readBSXGraphic());
+          } catch (IOException e) { e.printStackTrace(); resetMachine(); return s; }
+        else warn("no BSX Output available");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@DFS"))
+      {
+        s=readIdentifier(s);
+        if (lastState==1) return "";
+        s=readBSXData(s);
+        if (lastState==2) return "";
+        BSXInputStream bis=new BSXInputStream(new StringBufferInputStream(BSXData));
+        if (bsxWindow!=null)
+          try {
+            bsxWindow.addScene(strIdentifier,bis.readBSXGraphic());
+          } catch (IOException e) { e.printStackTrace(); resetMachine(); return s; }
+        else warn("no BSX Output available");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@PUR"))
+      {
+        warn("@PUR not implemented yet");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@TXT"))
+      {
+        warn("@TXT not implemented (and no plan for doing that)");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@BOM"))
+      {
+        warn("@BOM not implemented (and no plan for doing that)");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@EOM"))
+      {
+        warn("@EOM not implemented (and no plan for doing that)");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@LON"))
+      {
+        warn("@LON not implemented yet");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@LOF"))
+      {
+        warn("@LOF not implemented yet");
+        resetMachine();
+      }
+    else if (lastCommand.equals("@TMS"))
+      {
+        if (parent!=null)
+        {
+          parent.writeToUser("Received @TMS to end this session.\r\n");
+        }
+        else
+          warn("@TMS received! Session not terminated. Close connection manually.");
+        resetMachine();
+      }
+    s=lastCommand+s;
+    resetMachine();
+    return s;
+  }
+}
+
+
+
diff --git a/web/root/telnet/modules/ButtonBar.class b/web/root/telnet/modules/ButtonBar.class
new file mode 100644
index 0000000000000000000000000000000000000000..62a49c9dff4c6bfb913dc57fa73f98264347dbcc
Binary files /dev/null and b/web/root/telnet/modules/ButtonBar.class differ
diff --git a/web/root/telnet/modules/ButtonBar.java b/web/root/telnet/modules/ButtonBar.java
new file mode 100644
index 0000000000000000000000000000000000000000..1deec0de5aec76f7f22898f9da985465a0e67305
--- /dev/null
+++ b/web/root/telnet/modules/ButtonBar.java
@@ -0,0 +1,388 @@
+/**
+ * ButtonBar -- a programmable button bar
+ * --
+ * $Id$
+ * $timestamp: Mon Aug  4 14:12:21 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package modules;
+
+import telnet;
+import frame;
+
+import java.applet.Applet;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import java.awt.Panel;
+import java.awt.Button;
+import java.awt.TextField;
+import java.awt.Event;
+import java.awt.BorderLayout;
+import java.awt.GridLayout;
+import java.awt.Dimension;
+import java.awt.Container;
+import java.awt.Frame;
+
+/**
+ * This class implements a programmable button bar.
+ * You can add <A HREF="#buttons">Buttons</A> and <A HREF="#fields">Input 
+ * fields</A> to trigger actions in the <A HREF="telnet.html">telnet 
+ * applet</A>. On how to load a module, please refer to the 
+ * <A HREF="telnet.html">telnet</A> documentation.
+ * 
+ * <DL>
+ *  <A NAME="buttons"></A>
+ *  <DT><B>Buttons:</B>
+ *  <DD><TT>&lt;PARAM NAME=<B><I>number</I></B>#Button VALUE=&quot;<B><I>buttontext</I></B>|<B><I>buttonaction</I></B>&quot;&gt;</TT>
+ *  <DD><B><I>number</I></B> is the sequence number and determines the place
+ *      of the button on the row.
+ *      <P>
+ *  <DD><B><I>buttontext</I></B> is a string displayed on the button.
+ *      <P>
+ *  <DD><A NAME="buttonaction"><B><I>buttonaction</I></B></A> may be one
+ *      of the following functions or strings<BR>
+ *      <FONT SIZE=-1>(<I>Note:</I> the backslash character
+ *      in front of the dollar sign is mandatory!)</FONT>
+ *      <UL>
+ *       <LI><TT><I>simple text</I></TT>
+ *           to be sent to the remote host. Newline and/or carriage return
+ *           characters may be added in C syntax <B>\n</B> and <B>\r</B>.
+ *           To support unimplemented function keys the <B>\e</B> escape
+ *           character may be useful. The <B>\b</B> backspace character is
+ *           also supported.
+ *           The text may contain <A HREF="#fieldreference"><B><I>field 
+ *           reference(s)</I></B></A>.
+ *           <P>
+ *       <LI><TT>\$connect(<B><I>host</I></B>[,<B><I>port</I></B>])</TT> 
+ *           tries to initiate a connection to the <B><I>host</I></B>
+ *           at the <B><I>port</I></B>, if given. The standard port is
+ *           23. <B><I>host</I></B> and <B><I>port</I></B> may be hostname
+ *           and number or <A HREF="#fieldreference"><B><I>field
+ *           reference(s)</I></B></A>. If a connection already exists
+ *           nothing will happen.<BR>
+ *           <FONT SIZE=-1>(<I>Note:</I> It is not allowed to have
+ *           spaces anywhere inside the parenthesis!)</FONT>
+ *           <P>
+ *       <LI><TT>\$disconnect()</TT>
+ *           terminates the current connection, but if there was no
+ *           connection nothing will happen.
+ *           <P>
+ *       <LI><TT>\$detach()</TT>
+ *           detaches the applet from the web browser window and
+ *           creates a new frame externally. This may be used to allow
+ *           users to use the applet while browsing the web with the
+ *           same browser window.<BR>
+ *           <FONT SIZE=-1>(<I>Note:</I> You need to load the applet via the
+ *           <A HREF="appWrapper.html">appWrapper class</A> or
+ *           it will not work properly!)</FONT>
+ *      </UL>
+ *  <DD><B>Examples:</B><BR>
+ *      <FONT SIZE=-1>(<I>Note:</I> It makes sense if you look at the
+ *      examples for input fields below.)</FONT>
+ *      <PRE>
+ *        &lt;PARAM NAME=1#Button VALUE="HELP!|help\r\n"&gt;
+ *        &lt;PARAM NAME=2#Button VALUE="HELP:|help \@help@\r\n"&gt;
+ *        &lt;PARAM NAME=4#Button VALUE="simple|\$connect(localhost)"&gt;
+ *        &lt;PARAM NAME=5#Button VALUE="complete|\$connect(www,4711)"&gt;
+ *        &lt;PARAM NAME=6#Button VALUE="connect|\$connect(\@address@)"&gt;
+ *        &lt;PARAM NAME=8#Button VALUE="connect to port|\$connect(\@address@,\@port@)"&gt;
+ *        &lt;PARAM NAME=10#Button VALUE="window|\$detach()"&gt;
+ *     </PRE>
+ *     <P>
+ *  <A NAME="fields"></A>
+ *  <DT><B>Input fields</B>
+ *  <DD><TT>&lt;PARAM NAME=<B><I>number</I></B>#Input VALUE=&quot;<B><I>fieldname</I></B>[#<I><B>length</B></I>]|<B><I>initial text</I></B>[|<B><I>action</I></B>]&quot;&gt;</TT>
+ *  <DD><B><I>number</I></B> is the sequence number and determines the place
+ *      of the field on the row.
+ *      <P>
+ *  <DD><A NAME="fieldreference"><B><I>fieldname</I></B></A> is a
+ *      symbolic name to reference the input field. A reference may be used in 
+ *      <A HREF="#buttonaction"><B><I>button actions</I></B></A> and
+ *      is constructed as follows:
+ *      <TT>\@<B><I>fieldname</I></B>@</TT>
+ *      The <B>\@fieldname@</B> macro will be replaced by the string entered in
+ *      the text field.
+ *      <P>
+ *  <DD><B><I>length</I></B> is the length of the input field in numbers of
+ *      characters.
+ *      <P>
+ *  <DD><B><I>initial text</I></B> is the text to be placed into the input
+ *      field on startup
+ *  <DD><B><I>action</I></B> may be used similar to a 
+ *      <A HREF="#buttonaction"><B><I>button action</I></B></A>. This action 
+ *      will be used if the users presses Return in the inputfield. Leave
+ *      empty if you only want to use a button to send the text!
+ *  <DD><B>Examples:</B><BR>
+ *      <FONT SIZE=-1>(<I>Note:</I> It makes sense if you look at the
+ *      examples for buttons before.)</FONT>
+ *      <PRE>
+ *        &lt;PARAM NAME=3#Input VALUE="help#10|"&gt;
+ *        &lt;PARAM NAME=7#Input VALUE="address|www.first.gmd.de"&gt;
+ *        &lt;PARAM NAME=8#Input VALUE="send#5|who|\@send@\r\n"&gt;
+ *        &lt;PARAM NAME=9#Input VALUE="port#5|4711"&gt;
+ *      </PRE>
+ *      <P>
+ * </DL>
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ * @see modules.Module
+ */
+public class ButtonBar extends Panel implements Module
+{
+  // our parent is the telnet app
+  private telnet parent;
+  
+  // these tables contain our buttons and fields.
+  private Hashtable buttons = null;
+  private Hashtable fields = null;
+
+  // the top level (for detaching)
+  private Container toplevel;
+
+  /**
+   * This method is called by our loader to notify us of it. 
+   * @param o The object that has loaded this object.
+   * @see display.Module
+   */
+  public void setLoader(Object o) { parent = (telnet)o; }
+
+  /**
+   * If the applet connects this method is called.
+   * @param host remote hostaddress - not used
+   * @param port remote port - not used
+   */
+  public void connect(String host, int port) {
+    // do nothing yet.
+  }
+
+  /**
+   * Get notified of disconnection. Do nothing.
+   */
+  public void disconnect() {
+    // do nothing yet
+  }
+
+  /**
+   * This module does not take any input. It works passive.
+   * @return null to remove from the list of receiver modules.
+   * @see display.Module
+   */
+  public String receive(String s) { return null; }
+	
+  /**
+   * create the buttonbar from the parameter list. We will know our parent,
+   * when we have been added.
+   */
+  public void addNotify() {
+    if(buttons == null && fields == null) {
+      String tmp; 
+
+      int nr = 1;
+      String button = null, input = null;
+      while((button = parent.getParameter(nr+"#Button")) != null ||
+	    (input = parent.getParameter(nr+"#Input")) != null) {
+	nr++;
+	if(button != null) {
+	  if(buttons == null) buttons = new Hashtable();
+	  int idx = button.indexOf('|');
+	  if(button.length() == 0)
+	    System.out.println("ButtonBar: Button: no definition");
+	  if(idx < 0 || idx == 0) {
+	    System.out.println("ButtonBar: Button: empty name \""+button+"\"");
+	    continue;
+	  }
+	  if(idx == button.length() - 1) {
+	    System.out.println("ButtonBar: Button: empty command \""+button+"\"");
+	    continue;
+	  }
+	  Button b = new Button(button.substring(0, idx));
+	  buttons.put(b, button.substring(idx+1, button.length()));
+	  add(b);
+	} else
+	  if(input != null) {
+	    if(fields == null) fields = new Hashtable();
+	    if(buttons == null) buttons = new Hashtable();
+	    int idx = input.indexOf('|');
+	    if(input.length() == 0)
+	      System.out.println("ButtonBar: Input field: no definition");
+	    if(idx < 0 || idx == 0) {
+	      System.out.println("ButtonBar: Input field: empty name \""+input+"\"");
+	      continue;
+	    }
+	    int si, size;
+	    if((si = input.indexOf('#', 0)) == 0) {
+	      System.out.println("ButtonBar: Input field: empty name");
+	      continue;
+	    }
+	    if(si < 0 || si == idx-1) size = 10;
+	    else size = Integer.parseInt(input.substring(si+1, idx));
+	    TextField t = 
+	      new TextField(input.substring(idx + 1, 
+					    input.lastIndexOf('|') == idx ?
+					    input.length() : 
+					    (idx = input.lastIndexOf('|'))),
+			    size);
+	    buttons.put(t, input.substring(idx + 1, input.length()));
+	    fields.put(input.substring(0, (si < 0 ? idx : si)), t);
+	    add(t);
+	  }
+	button = input = null;
+      }
+    }
+    super.addNotify();
+  }
+
+  public boolean handleEvent(Event evt) {
+    String tmp;
+    if(evt.id == Event.ACTION_EVENT &&
+       (tmp = (String)buttons.get(evt.target)) != null) {
+      System.out.println("ButtonBar: "+tmp);
+      String cmd = "", function = null;
+      int idx = 0, oldidx = 0;
+      while((idx = tmp.indexOf('\\', oldidx)) >= 0 && 
+	    ++idx <= tmp.length()) {
+	cmd += tmp.substring(oldidx, idx-1);
+	switch(tmp.charAt(idx)) {
+	case 'b': cmd += "\b"; break;
+	case 'e': cmd += ""; break;
+	case 'n': cmd += "\n"; break;
+	case 'r': cmd += "\r"; break;
+	case '$': {
+	  int ni = tmp.indexOf('(', idx+1);
+	  if(ni < idx) {
+	    System.out.println("ERROR: Function: missing '('");
+	    break;
+	  }
+	  if(ni == ++idx) {
+	    System.out.println("ERROR: Function: missing name");
+	    break;
+	  }
+	  function = tmp.substring(idx, ni);
+	  idx = ni+1;
+	  ni = tmp.indexOf(')', idx);
+	  if(ni < idx) {
+	    System.out.println("ERROR: Function: missing ')'");
+	    break;
+	  }
+	  tmp = tmp.substring(idx, ni);
+	  idx = oldidx = 0;
+	  continue;
+	}
+	case '@': {
+	  int ni = tmp.indexOf('@', idx+1);
+	  if(ni < idx) {
+	    System.out.println("ERROR: Input Field: '@'-End Marker not found");
+	    break;
+	  }
+	  if(ni == ++idx) {
+	    System.out.println("ERROR: Input Field: no name specified");
+	    break;
+	  }
+	  String name = tmp.substring(idx, ni);
+	  idx = ni;
+	  TextField t;
+	  if(fields == null || (t = (TextField)fields.get(name)) == null) {
+	    System.out.println("ERROR: Input Field: requested input \""+
+			       name+"\" does not exist");
+	    break;
+	  }
+	  cmd += t.getText();
+	  t.setText("");
+	  break;
+	}
+	default : cmd += tmp.substring(idx, ++idx);
+	}
+	oldidx = ++idx;
+      }
+
+      if(oldidx <= tmp.length()) cmd += tmp.substring(oldidx, tmp.length());
+      
+      if(function != null) {
+	if(function.equals("exit")) { 
+	  try {
+	    System.exit(0);
+	  } catch(Exception e) { e.printStackTrace(); }
+	}
+	if(function.equals("connect")) {
+	  String address = null;
+	  int port = -1;
+	  try {
+	    if((idx = cmd.indexOf(",")) >= 0) {
+	      try {
+		port = Integer.parseInt(cmd.substring(idx+1, cmd.length()));
+	      } catch(Exception e) {
+		port = -1;
+	      }
+	      cmd = cmd.substring(0, idx);
+	    }
+	    if(cmd.length() > 0) address = cmd;
+	    if(address != null) 
+	      if(port != -1) parent.connect(address, port);
+	      else parent.connect(address);
+	    else parent.connect();
+	  } catch(Exception e) {
+	    System.err.println("ButtonBar: connect(): failed");
+	    e.printStackTrace();
+	  }
+	} else
+	  if(function.equals("disconnect") && parent.disconnect())
+	    parent.send("\r\nClosed connection.\r\n");
+	  else
+	    if(function.equals("detach")) {
+	      if(parent.getParent() instanceof Frame) {
+		Frame top = (Frame)parent.getParent();
+		if(toplevel != null) {
+		  System.out.println("ButtonBar: reattaching applet...");
+		  toplevel.setLayout(new BorderLayout());
+		  toplevel.add("Center", parent);
+		  toplevel.validate();
+		  toplevel.layout();
+		  toplevel = null;
+		} else {
+		  System.out.println("ButtonBar: destroying window...");
+		  parent.disconnect();
+		}
+		top.dispose();
+	      } else {
+		System.out.println("ButtonBar: detaching applet...");
+		toplevel = parent.getParent();
+		frame top = new frame("The Java Telnet Applet");
+		Dimension s = parent.size();
+		top.reshape(0, 0, s.width, s.height);
+		top.setLayout(new BorderLayout());
+		top.add("Center", parent);
+		top.pack();
+		top.show();
+	      }
+	    }
+	    else
+	      System.out.println("ERROR: function not implemented: \""+
+				 function+"\"");
+	return true;
+      }
+      // cmd += tmp.substring(oldidx, tmp.length());
+      if(cmd.length() > 0) parent.send(cmd);
+      return true;
+    }
+    return false;
+  }
+}
+
diff --git a/web/root/telnet/modules/Module.class b/web/root/telnet/modules/Module.class
new file mode 100644
index 0000000000000000000000000000000000000000..de74206f80ea43457fdd6d25c0b722cae3572861
Binary files /dev/null and b/web/root/telnet/modules/Module.class differ
diff --git a/web/root/telnet/modules/Module.java b/web/root/telnet/modules/Module.java
new file mode 100644
index 0000000000000000000000000000000000000000..d89dcaeca480eebc37c6892f07a99d3da53cfaa6
--- /dev/null
+++ b/web/root/telnet/modules/Module.java
@@ -0,0 +1,61 @@
+/**
+ * Module -- Module interface
+ * --
+ * $Id$
+ * $timestamp: Mon Mar 24 15:35:13 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package modules;
+
+/**
+ * Modules must implement this interface to be detected as valid modules
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ */
+public interface Module 
+{
+	/**
+	 * Set the loader of the module. This is necessary to know if you want to
+	 * contact the modules parent.
+	 * @param loader The object that has loaded this module.
+	 */
+	public void setLoader(Object loader);
+
+	/**
+	 * Connected to the remote host. This method notifies upon new connection.
+	 * @param host remote hostname
+	 * @param port remote port
+	 */
+	public void connect(String host, int port);
+	
+	/**
+	 * Disconnect from the host. This method notifies of lost connection.
+	 */
+	public void disconnect();
+	
+	/**
+	 * Receive data from somewhere. If a modules does not want to receive data
+	 * it should return null to remove itself from the list of receiver modules.
+	 * @param s The string we receive.
+   * @return the modified string or null (to remove from receiver list)
+	 */
+	public String receive(String s);
+}
+
diff --git a/web/root/telnet/modules/MudConnector.class b/web/root/telnet/modules/MudConnector.class
new file mode 100644
index 0000000000000000000000000000000000000000..646fe276964ffc12fd4f25dc22e285bb3af3b495
Binary files /dev/null and b/web/root/telnet/modules/MudConnector.class differ
diff --git a/web/root/telnet/modules/MudConnector.java b/web/root/telnet/modules/MudConnector.java
new file mode 100644
index 0000000000000000000000000000000000000000..95f7651ca2037be9949986eb973371bd480482e2
--- /dev/null
+++ b/web/root/telnet/modules/MudConnector.java
@@ -0,0 +1,300 @@
+/**
+ * MudConnector -- This module is especially designed for the 
+ *                 MUD Connector (http://www.mudconnect.com/)
+ *                 It loads a tabulator separated list via http and
+ *                 displays it in a List-Box.
+ * --
+ * $Id$
+ * $timestamp: Sun Apr 13 22:29:16 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+package modules;
+
+import telnet;
+
+import java.applet.*;
+import java.awt.*;
+import java.io.*;
+import java.net.*;
+import java.util.*;
+
+/**
+ * A specially designed module for the 
+ * <A HREF="http://www.mudconnect.com/">MUD Connector</A>.
+ * It loads a list of MUDs via http and displays them in a list box to 
+ * be selected. A selected MUD can then be entered.
+ *
+ * <DL>
+ *  <DT><B>MudConnector parameterfile:</B>
+ *   <DD><PRE>&lt;PARAM NAME=MUDlist VALUE=&quot;<B><I>url</I></B>&quot;&gt;</PRE>
+ *   <DD>The url of the Mudlist. This url MUST be located on the same web
+ *       server as the applet!
+ * </DL>
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ * @see modules.Module
+ */
+public class MudConnector extends Panel implements Module, Runnable
+{
+  // parent applet
+  private telnet app;
+
+  // server url for the mudlist
+  private String url;
+  private URL server;
+
+  // vector containing the mud data (host#port)
+  private Vector index = new Vector();
+  // the actually displayed list of muds
+  private java.awt.List display = new java.awt.List();
+
+  private CardLayout layouter;
+  private Panel progress, address;
+  private Label indicator;
+  private TextField info;
+
+  // buttons
+  private Button connectButton, disconnectButton, refreshButton, showButton;
+
+  /**
+   * setLoader() is called upon start of the parent applet. This method
+   * initializes the GUI of the module, e.g the list and buttons.
+   * @param loader the parent applet
+   */
+  public void setLoader(Object loader) {
+    // do nothing if we already know our loader
+    if(app != null) return;
+    app = (telnet)loader;
+
+    // cardlayout to display either the progress while loading the mudlist
+    // or the mud listbox plus its buttons.
+    setLayout(layouter = new CardLayout());
+
+    add("PROGRESS", progress = new Panel());
+    progress.add(indicator = new Label("Loading mudlist, please wait..."));
+    
+    // the interactive module GUI is arranged in a grid
+    GridBagLayout grid = new GridBagLayout();
+
+    address = new Panel();
+    address.setLayout(grid);
+    
+    // the constraints for each of the components
+    GridBagConstraints constraints = new GridBagConstraints();
+
+    // the listbox is arranged on the left side getting most of the space
+    constraints.gridheight = 2;
+    constraints.weightx = 2.0;
+    constraints.fill = GridBagConstraints.BOTH;
+    grid.setConstraints(display, constraints);
+    address.add(display);
+
+    // generic panel that places its components centered.
+    Panel panel = new Panel();
+
+    // the button panel, buttons are placed east of the list and on the top
+    panel.add(showButton = new Button("Info!"));
+    panel.add(connectButton = new Button("connect"));
+    panel.add(disconnectButton = new Button("disconnect"));
+    panel.add(refreshButton = new Button("refresh list"));
+    constraints.weightx = 0.0;
+    constraints.weightx = 0.0;
+    constraints.gridheight = 1;
+    constraints.gridwidth = GridBagConstraints.REMAINDER;
+    constraints.fill = GridBagConstraints.NONE;
+    grid.setConstraints(panel, constraints);
+    address.add(panel);
+
+    // the mud information text is below the buttons
+    (panel = new Panel()).add(info = new TextField(30));
+    info.setEditable(false);
+    address.add(panel);
+    grid.setConstraints(panel, constraints);
+    add("ADDRESS", address);
+
+    layouter.show(this, "PROGRESS");
+  }
+  
+  /**
+   * when newly added try to load the mudlist using the parameter "mudlist"
+   */
+  public void addNotify()
+  {
+    super.addNotify();
+    if(url == null) {
+      if(app.getParameter("mudlist") != null) {
+        url = app.getParameter("mudlist");
+        loadData();
+      }
+      else {
+        indicator.setText("The \"mudlist\" is not set, "+
+                          "cannot load data!");
+        System.out.println("MudConnector: cannot load data, missing parameter");
+      }
+    }
+  }
+
+  /**
+   * initiate the loading process, display progress meter
+   */
+  private void loadData() 
+  {
+    layouter.show(this, "PROGRESS");
+    
+    Thread t = new Thread(this);
+    t.setPriority(Thread.MIN_PRIORITY);
+    t.start();
+  }
+
+  /**
+   * The body of the thread opens a URLConnection with the address given as
+   * parameter "mudlist" and downloads it. It expects a tabulator separated
+   * list <mudname> <mudhost> <mudport> and the amount of muds in the file
+   * at the beginning of the file.
+   */
+  public void run() 
+  {
+    try {
+      System.out.print("MudConnector: loading data...");
+      if(display.countItems() > 0) display.clear();
+      index = new Vector();
+      
+      // open the url and the data stream
+      server = new URL(url);
+      StreamTokenizer ts = new StreamTokenizer(server.openStream());
+      // reset the syntax and make all but the chars from 0-31 to
+      // plain text
+      ts.resetSyntax();
+      ts.whitespaceChars(0, 31);
+      ts.wordChars(32, 255);
+
+      // paint a rectangle for the progress indicator with the size of the
+      // text above
+      Graphics pg = progress.getGraphics();
+
+      // initialize the current number of muds loaded and load the maximum
+      // number of muds in the file (first line in the file)
+      int p = 1, max = 1;
+      int token = ts.nextToken();
+      if(token != ts.TT_EOF) try {
+        ts.sval = ts.sval.substring(1);
+        max = Integer.parseInt(ts.sval); 
+        System.out.print("["+max+" muds expected] ");
+        token = ts.nextToken();
+      } catch(NumberFormatException e) {
+        System.out.print("'"+ts.sval+"'");
+        System.out.print("[# of muds incorrect, expecting 1000] ");
+        max = 1000;
+      }
+      
+      // read line by line and display the progress bar
+      while(token != ts.TT_EOF) {
+        pg.setColor(getBackground());
+        pg.draw3DRect(indicator.location().x - 1, 
+                      indicator.location().y + indicator.size().height + 4, 
+                      indicator.size().width + 1, 21, false);
+        pg.fill3DRect(indicator.location().x, 
+                    indicator.location().y + indicator.size().height + 5, 
+                    p++ * indicator.size().width / max, 20, true);
+        
+        String name = ts.sval; token = ts.nextToken();
+        if(token != ts.TT_EOL && token != ts.TT_EOF) {
+          String host = ts.sval; token = ts.nextToken();
+          int port;
+          try {
+            port = Integer.parseInt(ts.sval);
+          } catch(NumberFormatException e) {
+            port = 23;
+          }
+          display.addItem(name);
+          index.addElement(host+"#"+port);
+        } else 
+          System.out.println("unexpected ("+name+") "+
+                             (token == ts.TT_EOF ? "EOF" : "EOL"));
+        while((token = ts.nextToken()) != ts.TT_WORD && 
+              token != ts.TT_EOF);
+      }
+    } catch(Exception e) {
+      indicator.setText("The \"mudlist\" parameter is incorrect, "+
+                        "cannot load data!");
+      e.printStackTrace();
+    }
+    System.out.println("("+index.size()+" muds)...done");
+    layouter.show(this, "ADDRESS");
+  }
+  
+  /**
+   * handle list selection, connect, disconnect and refresh button
+   * @param evt the event to process
+   */
+  public boolean handleEvent(Event evt) {
+    if(evt.target == connectButton && evt.id == Event.ACTION_EVENT) {
+      if(display.getSelectedIndex() < 0 ||
+         display.getSelectedIndex() > index.size()) {
+        info.setText("You did not select a MUD!");
+        return false;
+      }
+      String address = (String)index.elementAt(display.getSelectedIndex());
+      int port = Integer.parseInt(address.substring(address.indexOf('#')+1));
+      app.connect(address.substring(0, address.indexOf('#')), port);
+      return true;
+    }
+    if(evt.target == disconnectButton && evt.id == Event.ACTION_EVENT)
+      app.disconnect();
+    if(evt.target == refreshButton && evt.id == Event.ACTION_EVENT)
+      loadData();
+    if(evt.target == showButton && evt.id == Event.ACTION_EVENT) {
+      if(display.getSelectedIndex() < 0 ||
+         display.getSelectedIndex() > index.size()) {
+        info.setText("You did not select a MUD!");
+        return false;
+      }
+      URL page = null;
+      try {
+        page = new URL("http://www.mudconnect.com/mud-bin/adv_search.cgi"+
+                       "?Mode=MUD&mud="+
+                       display.getSelectedItem().replace(' ', '+'));
+      } catch(MalformedURLException e) {
+        info.setText("There was an URL error!");
+        e.printStackTrace();
+        return false;
+      }
+      app.getAppletContext().showDocument(page, "_TOP");
+      return true;
+    }
+    
+    if(evt.target == display && evt.id == Event.LIST_SELECT) {
+      String tmp = (String)index.elementAt(display.getSelectedIndex());
+      info.setText(tmp.substring(0, tmp.indexOf('#'))+" "+
+                   tmp.substring(tmp.indexOf('#')+1));
+    }
+    return false;
+  }
+
+  /**
+   * dummy methods
+   */
+  public void connect(String host, int port) {}
+  public void disconnect() {}
+  public String receive(String str)
+  {
+    return null;
+  }
+  
+}
diff --git a/web/root/telnet/modules/Script.class b/web/root/telnet/modules/Script.class
new file mode 100644
index 0000000000000000000000000000000000000000..35b5c7f2735e7113003c4287d7632b8f8c3ce679
Binary files /dev/null and b/web/root/telnet/modules/Script.class differ
diff --git a/web/root/telnet/modules/Script.java b/web/root/telnet/modules/Script.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f565ba7225e6f57b737f3a51f4944c0d4137322
--- /dev/null
+++ b/web/root/telnet/modules/Script.java
@@ -0,0 +1,176 @@
+/**
+ * Script -- A module for scripting (very simple).
+ * --
+ * $Id$
+ * $timestamp: Mon Mar 24 15:52:12 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package modules;
+
+import telnet;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.TextField;
+import java.awt.Label;
+import java.awt.Event;
+
+/**
+ * A very simple scripting module. It takes pairs of pattern and text and
+ * sends the corresponding text when the pattern matches. Each pattern is
+ * only matched once per connected session.
+ *
+ * <DL>
+ *  <DT><B>Scripts:</B>
+ *   <DD><PRE>&lt;PARAM NAME=script VALUE=&quot;<B><I>pattern</I></B>|<B><I>text</I></B>|<B><I>...</I></B>&quot;&gt;</PRE>
+ *   <DD>A script contains of pairs of <I>pattern</I> and <I>text</I> strings.
+ *       If the pattern is matched against the output from the remote host,
+ *       the corresponding text will be sent. Each pattern will match only
+ *       <B>once</B> per session. A session is defined by connect and 
+ *       disconnect.<P>
+ *       Thus it is possible to program an autologin as follows:<BR>
+ *       <PRE><B>"login:|leo|Password:|mypassword|leo@www|ls"</B></PRE>
+ *       Newlines will be added automatically to the string sent! At the
+ *       moment the order of the pattern and text pairs is <I>not</I> relevant.
+ *       <P>
+ *       It is possible to prompt the user for input if a match occurs. If the
+ *       corresponding <I>text</I> is a string enclosed in braces ([] or {}) a
+ *       dialog window is opened with <I>text</I> as prompt. A special case 
+ *       is an empty prompt in which case the <I>pattern</I> will be shown as 
+ *       prompt. &quot;[Your name:]&quot; would open a dialog window with the
+ *       text &quot;Your name&quot; as prompt. Curly braces have a special
+ *       meaning; any user input will be shown as &quot;*&quot; which makes
+ *       it possible to program password prompts. Example: 
+ *       &quot;{Your password:}&quot;.<P>
+ *       A special match like: &quot;login:|[]&quot; can be used to open a
+ *       dialog and display &quot;login:&quot; as prompt. This works for
+ *       &quot;{}&quot; as well.
+ *       
+ * </DL>
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ * @see modules.Module
+ */
+public class Script extends Hashtable implements Module
+{
+  // This is the target for any text we want to send
+  private telnet applet = null;
+
+  /**
+   * Set the applet as module loader
+   * @param o the object that is the applet (must be an Applet)
+   * @see module.Module
+   * @see java.applet.Applet
+   */
+  public void setLoader(Object o) { applet = (telnet)o; }
+	
+  /**
+   * Configure the script module by reading the script PARAMeter.
+   * @param host remote hostaddress - not used
+   * @param port remote port - not used
+   */
+  public void connect(String host, int port) {
+    String tmp = applet.getParameter("script");
+    
+    // delete all entries
+    clear();
+    
+    if(tmp != null) {
+      int idx = tmp.indexOf('|');
+      int oldidx = 0;
+      while(idx >= 0) {
+	String match = tmp.substring(oldidx, idx);
+	oldidx = idx;
+	idx = tmp.indexOf('|', idx+1);
+	idx = idx < 0 ? idx = tmp.length() : idx;
+	String send = tmp.substring(oldidx+1, idx);
+	put(match, send);
+	oldidx = idx+1;
+	idx = tmp.indexOf('|', idx+1);
+      }
+    }
+  }
+
+  /**
+   * Get notified of disconnection. Do nothing.
+   */
+  public void disconnect() {}
+	
+  /**
+   * This method is called when data is received. It tries to match the
+   * input to the list of patterns and sends corresponding text on success.
+   * If the response is [] or {} the user will be prompted with the matching
+   * text. You can modify the prompt string by entering it inside of the
+   * brackets or curly braces (e.g. [Enter your id:]). In case of curly
+   * braces the input area will not show the typed in text (for passwords)!
+   *
+   * @param s The string to test.
+   * @see peer.InputPeer
+   */
+  public String receive(String s) {
+    if(isEmpty()) return s;
+    Enumeration match = keys();
+    while(match.hasMoreElements()) {
+      String key = (String)match.nextElement();
+      if(s.indexOf(key) != -1) {
+	String value = (String)get(key);
+	if(value.indexOf("[") == 0 || value.indexOf("{") == 0) {
+	  TextField input = new TextField(20);
+	  if(value.startsWith("{")) input.setEchoCharacter('*');
+	  if("[]".equals(value) || "{}".equals(value)) value = key;
+	  else value = value.substring(1, value.length() - 1);
+	  Thread current = Thread.currentThread();
+	  new UserDialog(new Frame(), value, false, current, input);
+	  current.suspend();
+	  value = input.getText();
+	}
+	applet.send(value + "\r");
+	remove(key);
+      }
+    }
+    return s;
+  }
+}
+
+class UserDialog extends Dialog {
+  TextField input;
+  Thread thread;
+  String value;
+
+  public UserDialog(Frame parent, String value, boolean modal, 
+		    Thread t, TextField reply) {
+    super(parent, value, modal);
+    thread = t; input = reply;
+    add("West", new Label(value));
+    add("Center", input);
+    pack();
+    show();
+  }
+
+  public boolean handleEvent(Event evt) {
+    if(evt.target == input && evt.key == 10) {
+      thread.resume();
+      hide(); dispose();
+      return true;
+    }
+    return false;
+  }
+}
diff --git a/web/root/telnet/modules/TextLabel.class b/web/root/telnet/modules/TextLabel.class
new file mode 100644
index 0000000000000000000000000000000000000000..29c98729da91621470ed25a962bc43a73a9227d8
Binary files /dev/null and b/web/root/telnet/modules/TextLabel.class differ
diff --git a/web/root/telnet/modules/TextLabel.java b/web/root/telnet/modules/TextLabel.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b45249422db94931374eef70062a82dd6caf441
--- /dev/null
+++ b/web/root/telnet/modules/TextLabel.java
@@ -0,0 +1,109 @@
+/**
+ * TextLabel -- A module to display a Label on the applet.
+ * --
+ * $Id$
+ * $timestamp: Wed Jul  9 17:37:28 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package modules;
+
+import telnet;
+import java.awt.Panel;
+import java.awt.Label;
+import java.awt.GridLayout;
+import java.awt.Font;
+
+/**
+ * This small module lets you display text somewhere in the applets area.
+ *
+ * <DL>
+ *  <DT><B>Label:</B>
+ *   <DD><PRE>&lt;PARAM NAME=labelRows    VALUE=&quot;<B><I>rows</B></I>&quot;&gt;</PRE>
+ *   <DD>Defines the how many rows the label will have.
+ *   <DD><PRE>&lt;PARAM NAME=labelCols    VALUE=&quot;<B><I>cols</B></I>&quot;&gt;</PRE>
+ *   <DD>Defines the how many columns the label will have.
+ *   <DD><PRE>&lt;PARAM NAME=labelFont    VALUE=&quot;<B><I>font[,size]</B></I>&quot;&gt;</PRE>
+ *   <DD>The font for displaying the label text. If the <I>size</I> is left out
+ *       a standard size of 14 points is assumed.
+ *   <DD><PRE>&lt;PARAM NAME=label#<I>number</I> VALUE=&quot;<B><I>text</I></B>&quot;&gt;</PRE>
+ *   <DT>The labels are enumerated and displayed in rows and columns.
+ * </DL>
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ * @see modules.Module
+ */
+public class TextLabel extends Panel implements Module
+{
+  telnet applet;
+  
+	/**
+	 * Set the applet as module loader and configure.
+	 * @param o the object that is the applet (must be an Applet)
+	 * @see module.Module
+	 * @see java.applet.Applet
+	 */
+	public void setLoader(Object o) { 
+    applet = (telnet)o;
+
+    int rows = 1, cols = 1;
+    
+    String tmp = applet.getParameter("labelRows");
+    if(tmp != null) rows = Integer.parseInt(tmp);
+    if((tmp = applet.getParameter("labelCols")) != null)
+      cols = Integer.parseInt(tmp);
+
+    setLayout(new GridLayout(rows, cols));
+
+    Font labelFont = null;
+    if((tmp = applet.getParameter("labelFont")) != null) {
+      int idx = tmp.indexOf(",");
+      int size = 14;
+      if(idx != -1) size = Integer.parseInt(tmp.substring(idx+1));
+      labelFont = new Font(tmp, Font.PLAIN, size);
+    }
+    
+    int no = 1;
+    while((tmp = applet.getParameter("label#"+no++)) != null) {
+      Label text = new Label(tmp);
+      if(labelFont != null) text.setFont(labelFont);
+      add(text);
+    }
+  }
+	
+	/**
+	 * Do nothing upon connect.
+	 * @param host remote hostaddress - not used
+	 * @param port remote port - not used
+	 */
+	public void connect(String host, int port) {}
+  
+	/**
+	 * Do nothing upon disconnecton.
+	 */
+	public void disconnect() {}
+	
+	/**
+   * Do nothing when receiving text. Be removed upon first call.
+	 * @param s The string received.
+	 * @see peer.InputPeer
+	 */
+	public String receive(String s) { return null; }
+}
+
diff --git a/web/root/telnet/modules/UserDialog.class b/web/root/telnet/modules/UserDialog.class
new file mode 100644
index 0000000000000000000000000000000000000000..d75c8682b5b3d91af341aacf96770d8656564b02
Binary files /dev/null and b/web/root/telnet/modules/UserDialog.class differ
diff --git a/web/root/telnet/modules/bsx/BSXDisplay.class b/web/root/telnet/modules/bsx/BSXDisplay.class
new file mode 100644
index 0000000000000000000000000000000000000000..3a02a183fd15ea156f85f849aef6d6b6847ae4fe
Binary files /dev/null and b/web/root/telnet/modules/bsx/BSXDisplay.class differ
diff --git a/web/root/telnet/modules/bsx/BSXDisplay.java b/web/root/telnet/modules/bsx/BSXDisplay.java
new file mode 100644
index 0000000000000000000000000000000000000000..879a2c2ce6295bb77c721631a56444c7a08e7a11
--- /dev/null
+++ b/web/root/telnet/modules/bsx/BSXDisplay.java
@@ -0,0 +1,213 @@
+/*
+ * BSXDisplay 	-- a graphics component for drawing BSX Objects on
+ * --
+ * $Id$
+ * $timestamp: Thu Feb 15 00:47:34 1996 by Matthias L. Jugel :$ 
+ */
+package modules.bsx;
+
+import java.awt.*;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class BSXDisplay extends Frame
+{
+private int Scale = 100;		/* display scale */
+  
+private Hashtable scenes;		/* scene store */
+private Hashtable objects;		/* object store */
+  
+private String curScene = "";		/* current scene */
+  
+private Image imageBuffer;
+private Graphics gBuffer;
+public BSXDisplay() { this("BSXModule - Visit Regenbogen rb.mud.de:4780"); }
+public BSXDisplay(String title) {
+  super(title);
+  addNotify();
+  imageBuffer = createImage(511,255);
+  if(imageBuffer==null) {
+    System.out.println("Couldn't create an offscreen-image :(");
+    System.exit(1);
+    }
+  gBuffer = imageBuffer.getGraphics();
+  scenes = new Hashtable(); 
+  objects = new Hashtable();
+  setScale(100);
+  resize(510,255);
+  show();
+}
+  
+public void setScale(int scale) {
+  Scale = scale;
+  resize(511 * Scale / 100, 255 * Scale / 100);
+}
+  
+  /* add a scene to the store, do not yet display */
+public void addScene(String id, BSXGraphic picture)
+  {
+    BSXScene scene = new BSXScene(picture);
+    BSXScene sc = (BSXScene)scenes.get(id);
+    if(sc != null)
+      {
+	scene.objects = sc.objects;
+	scenes.remove(id);
+      }
+    scenes.put(id, scene);
+    if(curScene.equals(id)) redraw();
+  }
+  
+  /* show current scene */
+public boolean showScene() { return showScene(curScene); }
+  
+  /* show scene given as argument */
+public boolean showScene(String id)
+  {
+    curScene = id;
+    if(!scenes.containsKey(id)) 
+      {
+	addScene(id, new BSXGraphic());
+	return false;
+      }
+    redraw();
+    return true;
+  }
+  
+  /* add object to store */
+public void addObject(String id, BSXGraphic o)
+  {
+    objects.put(id, o);
+    BSXScene scene = (BSXScene)scenes.get(curScene);
+    if(scene != null && scene.objects.containsKey(id)) redraw();
+  }
+  
+  /* show object at position 0, layer 0 */
+public boolean showObject(String id) { return showObject(id, 0, 0); }
+  
+  /* show object at position in layer */
+public boolean showObject(String id, int position, int layer)
+  {
+    BSXScene scene = (BSXScene)scenes.get(curScene);
+    
+    /* add object to scene database */
+    if((scene = (BSXScene)scenes.get(curScene)) == null) 
+      {
+	addScene(curScene, new BSXGraphic());
+	scene = (BSXScene)scenes.get(curScene);
+      }
+    
+    BSXObject o = new BSXObject(position, layer);
+    scene.objects.put(id, o);
+    
+    /* check if object is in our database */
+    if(!objects.containsKey(id)) return false;
+    
+    redraw();
+    return true;
+  }
+  
+  /* remove object from scene, if scene exists */
+public boolean removeObject(String id)
+  {
+    BSXScene scene = (BSXScene)scenes.get(curScene);
+    if(scene != null)
+      {
+	BSXObject o = (BSXObject)scene.objects.get(id);
+	scene.objects.remove(id);
+	if(o != null) 
+	  redraw();
+      }
+    return true;
+  }
+  
+  /* redraw image buffer */
+public void redraw()
+  {
+    BSXScene scene = (BSXScene)scenes.get(curScene);
+    if(scene == null) return;
+    
+    Vector[] layer = new Vector[8];
+    /* create layers */
+    for(Enumeration e = scene.objects.keys(); e.hasMoreElements();) 
+      {
+	String key; key = (String)e.nextElement();
+	BSXObject o = (BSXObject)scene.objects.get(key);
+	if(layer[o.layer] == null) layer[o.layer] = new Vector();
+	layer[o.layer].addElement(key);
+      }
+    
+    /* draw background graphic */
+    if(scene.background != null && scene.background.size() > 0)
+      drawPicture(scene.background);
+    else
+      return;
+    
+    /* display layers from back to front */
+    for(int l = 7; l >= 0; l--)
+      if(layer[l] != null)
+	for(int o = layer[l].size()-1; o >= 0; o--)
+	  {
+	    BSXObject obj = (BSXObject)
+	      scene.objects.get(layer[l].elementAt(o));
+	    drawPicture((BSXGraphic)objects.get(layer[l].elementAt(o)),
+			16 * obj.position, 4 * obj.layer);
+	  }
+    paint(getGraphics());
+  }
+  
+public Point Translate(int x, int y, 
+		       int centreX, int centreY, int scale)
+  {
+    return new Point((       x - 127 + centreX)  * 2 * scale / 100,
+                     (255 - (y - 127 + centreY))     * scale / 100);
+  }
+  
+public void drawPicture(BSXGraphic pic) { drawPicture(pic, 127, 127); }
+  
+public void drawPicture(BSXGraphic pic, int position, int layer)
+  {
+    if(pic == null) return;
+    int ap = pic.size();
+    for(int i = 0; i < ap; i++)
+      {
+	BSXPolygon poly = (BSXPolygon)pic.elementAt(i);
+	Polygon p = new Polygon();
+	gBuffer.setColor(poly.getColor());
+	for(int j = poly.npoints - 1; j >= 0; j--)
+	  {
+	    Point pt = Translate(poly.xpoints[j], poly.ypoints[j], 
+				 position, layer, Scale);
+	    p.addPoint(pt.x, pt.y);
+	  }
+	gBuffer.fillPolygon(p);
+      }
+  }
+  
+public boolean mouseEnter(Event evt, int x, int y)
+  {
+    //System.out.println("MOUSE ENTERS");
+    requestFocus();
+    return true;
+  }
+  
+  
+public void update(Graphics g)
+  {
+    paint(g);
+  }
+  
+  
+public void paint(Graphics g)
+  {
+    g.drawImage(imageBuffer, 0, 0, this);
+  }
+}
+
+
+
+
+
+
+
+
diff --git a/web/root/telnet/modules/bsx/BSXGraphic.class b/web/root/telnet/modules/bsx/BSXGraphic.class
new file mode 100644
index 0000000000000000000000000000000000000000..f6d0d9ffa7d03f9e0a9fcd9a35910f65a426e369
Binary files /dev/null and b/web/root/telnet/modules/bsx/BSXGraphic.class differ
diff --git a/web/root/telnet/modules/bsx/BSXGraphic.java b/web/root/telnet/modules/bsx/BSXGraphic.java
new file mode 100644
index 0000000000000000000000000000000000000000..3613b9e0d126a565f0d38a56240d819b99045aa7
--- /dev/null
+++ b/web/root/telnet/modules/bsx/BSXGraphic.java
@@ -0,0 +1,20 @@
+/*
+ * BSXGraphic	-- BSX Graphics Object
+ * --
+ * $Id$
+ * $timestamp: Wed Feb 14 21:35:42 1996 by Matthias L. Jugel :$
+ */
+package modules.bsx;
+
+import java.util.Vector;
+
+public class BSXGraphic extends Vector
+{
+  public BSXGraphic() { super(); }
+  public BSXGraphic(int s) 
+  { 
+		super(s);
+  }
+
+  public void addPolygon(BSXPolygon p) { addElement(p); }
+}
diff --git a/web/root/telnet/modules/bsx/BSXInputStream.class b/web/root/telnet/modules/bsx/BSXInputStream.class
new file mode 100644
index 0000000000000000000000000000000000000000..2dbfe7e691ddc059e3763aae5073f501191f541a
Binary files /dev/null and b/web/root/telnet/modules/bsx/BSXInputStream.class differ
diff --git a/web/root/telnet/modules/bsx/BSXInputStream.java b/web/root/telnet/modules/bsx/BSXInputStream.java
new file mode 100644
index 0000000000000000000000000000000000000000..cff4c7e1485d061f2939962662b1586b0a5ecc05
--- /dev/null
+++ b/web/root/telnet/modules/bsx/BSXInputStream.java
@@ -0,0 +1,60 @@
+/*
+ * BSXInputStream	-- extends InputStream for BSX Polygons
+ * --
+ * $Id$
+ * $timestamp: Wed Feb 14 21:36:56 1996 by Matthias L. Jugel :$
+ */
+package modules.bsx;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.awt.Polygon;
+import java.awt.Rectangle;
+
+public class BSXInputStream extends DataInputStream
+{
+  public BSXInputStream(InputStream in) { super(in); }
+  
+  public final BSXGraphic readBSXGraphic()	/* read a BSX graphic */
+    throws IOException
+    {
+      int ap = readASCIIHex();
+      BSXGraphic picture = new BSXGraphic(ap);
+      for(; ap > 0; ap--) picture.addPolygon(readBSXPolygon());
+      return picture;
+    }
+  
+  public final BSXPolygon readBSXPolygon()	/* read a BSX polygon */
+    throws IOException
+    {
+      BSXPolygon p = new BSXPolygon();		/* create new BSX polygon */
+      int points = readASCIIHex();		/* get amount of edges */
+      int color = readASCIIHex();			/* get color */
+      
+      p.setColor(color);
+      for(; points > 0 ; points--)
+	{
+	  int x, y;
+	  x = readASCIIHex();
+	  y = readASCIIHex();
+	  p.addPoint(x, y);
+	}
+      return p;
+    }
+  
+  public int readASCIIHex()			/* read 2 byte ASCII hex val */
+    {
+      int h, l;
+      try {
+	h = (int)readByte();
+	l = (int)readByte();
+      } catch(Exception e) { return 0; }
+      h = h-'0'-(h>'9'?'A'-'9'-1:0);
+      l = l-'0'-(l>'9'?'A'-'9'-1:0);
+      return 16*h+l;
+    }
+}
+
+
diff --git a/web/root/telnet/modules/bsx/BSXObject.class b/web/root/telnet/modules/bsx/BSXObject.class
new file mode 100644
index 0000000000000000000000000000000000000000..d5a83339d9a99cedaf233b34e84631cde6410b73
Binary files /dev/null and b/web/root/telnet/modules/bsx/BSXObject.class differ
diff --git a/web/root/telnet/modules/bsx/BSXObject.java b/web/root/telnet/modules/bsx/BSXObject.java
new file mode 100644
index 0000000000000000000000000000000000000000..95ec86e315a9842f2071efc85c4a2ba07747a6da
--- /dev/null
+++ b/web/root/telnet/modules/bsx/BSXObject.java
@@ -0,0 +1,14 @@
+/*
+ * BSXObject	-- a simple BSX Object
+ * --
+ * $Id$
+ */
+package modules.bsx;
+
+public class BSXObject
+{
+  public int position = 0, layer = 0;
+  public boolean visible = true;
+
+  public BSXObject(int p, int l) { position = p; layer = l; }
+}
diff --git a/web/root/telnet/modules/bsx/BSXPolygon.class b/web/root/telnet/modules/bsx/BSXPolygon.class
new file mode 100644
index 0000000000000000000000000000000000000000..adcc78c71905f3c32288ac7016aac5d20581f1ae
Binary files /dev/null and b/web/root/telnet/modules/bsx/BSXPolygon.class differ
diff --git a/web/root/telnet/modules/bsx/BSXPolygon.java b/web/root/telnet/modules/bsx/BSXPolygon.java
new file mode 100644
index 0000000000000000000000000000000000000000..f3acc793ef8490173612f3311346e99670a2ce59
--- /dev/null
+++ b/web/root/telnet/modules/bsx/BSXPolygon.java
@@ -0,0 +1,45 @@
+/*
+ * BSXPolygon	-- anhanced Polygon (to meet BSX standard)
+ *		   includes color for each polygon
+ * --
+ * $Id$
+ */
+package modules.bsx;
+
+import java.awt.Polygon;
+import java.awt.Color;
+
+public class BSXPolygon extends Polygon
+{
+  private Color colTable[] = {
+                              new Color(  0,   0,   0),
+			      new Color(  0,   0, 255),
+			      new Color( 34, 139,  34),
+			      new Color(135, 206, 235),
+			      new Color(205,  92,  92),
+			      new Color(255, 105, 180),
+			      new Color(165,  42,  42),
+			      new Color(211, 211, 211),
+			      new Color(105, 105, 105),
+			      new Color(  0, 191, 255),
+			      new Color(  0, 255,   0),
+			      new Color(  0, 255, 255),
+			      new Color(255,  99,  71),
+			      new Color(255,   0, 255),
+			      new Color(255, 255,   0),
+			      new Color(255, 255, 255)
+			     };
+
+  private Color Pcolor = Color.black;
+
+  public BSXPolygon() { super(); }
+  public BSXPolygon(int color) { super(); Pcolor = new Color(color); }
+  public BSXPolygon(int xpoints[], int ypoints[], int npoints, int color)
+         {
+           super(xpoints, ypoints, npoints);
+           Pcolor = colTable[color];
+         }
+
+  public void setColor(int color) { Pcolor = colTable[color]; }
+  public Color getColor() { return Pcolor; }
+}
diff --git a/web/root/telnet/modules/bsx/BSXScene.class b/web/root/telnet/modules/bsx/BSXScene.class
new file mode 100644
index 0000000000000000000000000000000000000000..6a28bafe9275eec3d83f333df561f7fc2d1a8569
Binary files /dev/null and b/web/root/telnet/modules/bsx/BSXScene.class differ
diff --git a/web/root/telnet/modules/bsx/BSXScene.java b/web/root/telnet/modules/bsx/BSXScene.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b18ba1db17c1f8a3c1a71cac00d747975e58239
--- /dev/null
+++ b/web/root/telnet/modules/bsx/BSXScene.java
@@ -0,0 +1,17 @@
+/*
+ * BSXScene	-- BSX Scene
+ * --
+ * $Id$
+ */
+package modules.bsx;
+
+import java.util.Hashtable;
+
+public class BSXScene
+{
+  public BSXGraphic background;
+  public Hashtable objects = new Hashtable();
+
+  public BSXScene() { background = null; }
+	public BSXScene(BSXGraphic pic) { background = pic; }
+}
diff --git a/web/root/telnet/socket/StatusPeer.class b/web/root/telnet/socket/StatusPeer.class
new file mode 100644
index 0000000000000000000000000000000000000000..a53275a970599d88ac5c3b8dbd9b3c8b86c60b9d
Binary files /dev/null and b/web/root/telnet/socket/StatusPeer.class differ
diff --git a/web/root/telnet/socket/StatusPeer.java b/web/root/telnet/socket/StatusPeer.java
new file mode 100644
index 0000000000000000000000000000000000000000..00dcfaada0d8ca9df2eaa4181ae52fee20fe0cb3
--- /dev/null
+++ b/web/root/telnet/socket/StatusPeer.java
@@ -0,0 +1,47 @@
+/**
+ * Status peer interface.
+ * --
+ * $Id$
+ * $timestamp: Wed Mar  5 13:40:54 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package socket;
+
+import java.util.Vector;
+
+/**
+ * StatusPeer -- interface for status messages
+ * --
+ * @version	$Id$
+ * @author	Matthias L. Jugel, Marcus Meißner
+ */
+
+public interface StatusPeer
+{
+	/**
+	 * This method is called for the peer of the TelnetIO class if there is
+	 * a statuschange.
+	 * @param status A Vector containing the key as element 0 and any arguments
+	 *               from element 1 on.
+	 * @return an object that matches the requested information or null
+	 * @see socket.TelnetIO
+	 */
+  public Object notifyStatus(Vector status);
+}
diff --git a/web/root/telnet/socket/TelnetIO.class b/web/root/telnet/socket/TelnetIO.class
new file mode 100644
index 0000000000000000000000000000000000000000..235d548b91f3fdbc22676fd0eb74aa0721906886
Binary files /dev/null and b/web/root/telnet/socket/TelnetIO.class differ
diff --git a/web/root/telnet/socket/TelnetIO.java b/web/root/telnet/socket/TelnetIO.java
new file mode 100644
index 0000000000000000000000000000000000000000..cfa39e3e6d55476e4e0f2f1c8363b982641b4f85
--- /dev/null
+++ b/web/root/telnet/socket/TelnetIO.java
@@ -0,0 +1,614 @@
+/**
+ * socket.TelnetIO - a telnet implementation
+ * --
+ * $Id$
+ * $timestamp: Tue May 27 13:27:05 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+package socket;
+
+import java.net.Socket;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.awt.Dimension;
+import java.util.Vector;
+
+/**
+ * Implements simple telnet io
+ *
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ * @version 1.2 3/7/97 George Ruban added available() because it was needed.
+ */
+public class TelnetIO implements StatusPeer
+{
+  /**
+   * Return the version of TelnetIO.
+   */
+  public String toString() { return "$Id$"; }
+  
+	/**
+	 * Debug level. This results in additional diagnostic messages on the
+	 * java console.
+	 */
+	private static int debug = 0;
+
+	/**
+	 * State variable for telnetnegotiation reader
+	 */
+	private byte neg_state = 0;
+
+	/**
+	 * constants for the negotiation state
+	 */
+	private final static byte STATE_DATA	= 0;
+	private final static byte STATE_IAC	= 1;
+	private final static byte STATE_IACSB	= 2;
+	private final static byte STATE_IACWILL	= 3;
+	private final static byte STATE_IACDO	= 4;
+	private final static byte STATE_IACWONT	= 5;
+	private final static byte STATE_IACDONT	= 6;
+	private final static byte STATE_IACSBIAC	= 7;
+	private final static byte STATE_IACSBDATA	= 8;
+	private final static byte STATE_IACSBDATAIAC	= 9;
+
+	/**
+	 * What IAC SB <xx> we are handling right now
+	 */
+	private byte current_sb;
+
+	/**
+	 * IAC - init sequence for telnet negotiation.
+	 */
+	private final static byte IAC  = (byte)255;
+	/**
+	 * [IAC] End Of Record
+	 */
+	private final static byte EOR  = (byte)239;
+	/**
+	 * [IAC] WILL
+	 */
+	private final static byte WILL  = (byte)251;
+	/**
+	 * [IAC] WONT
+	 */
+	private final static byte WONT  = (byte)252;
+	/**
+	 * [IAC] DO
+	 */
+	private final static byte DO    = (byte)253;
+	/**
+	 * [IAC] DONT
+	 */
+	private final static byte DONT  = (byte)254;
+	/**
+	 * [IAC] Sub Begin 
+	 */
+	private final static byte SB  = (byte)250;
+	/**
+	 * [IAC] Sub End
+	 */
+	private final static byte SE  = (byte)240;
+	/**
+	 * Telnet option: echo text
+	 */
+	private final static byte TELOPT_ECHO  = (byte)1;  /* echo on/off */
+	/**
+	 * Telnet option: End Of Record
+	 */
+	private final static byte TELOPT_EOR   = (byte)25;  /* end of record */
+	/**
+	 * Telnet option: Negotiate About Window Size
+	 */
+	private final static byte TELOPT_NAWS  = (byte)31;  /* NA-WindowSize*/
+	/**
+	 * Telnet option: Terminal Type
+	 */
+	private final static byte TELOPT_TTYPE  = (byte)24;  /* terminal type */
+
+	private final static byte[] IACWILL  = { IAC, WILL };
+	private final static byte[] IACWONT  = { IAC, WONT };
+	private final static byte[] IACDO    = { IAC, DO	};
+	private final static byte[] IACDONT  = { IAC, DONT };
+	private final static byte[] IACSB  = { IAC, SB };
+	private final static byte[] IACSE  = { IAC, SE };
+
+	/** 
+	 * Telnet option qualifier 'IS' 
+	 */
+	private final static byte TELQUAL_IS = (byte)0;
+
+	/** 
+	 * Telnet option qualifier 'SEND' 
+	 */
+	private final static byte TELQUAL_SEND = (byte)1;
+
+	/**
+	 * What IAC DO(NT) request do we have received already ?
+	 */
+        private byte[] receivedDX;
+  
+	/**
+	 * What IAC WILL/WONT request do we have received already ?
+	 */
+	private byte[] receivedWX;
+	/**
+	 * What IAC DO/DONT request do we have sent already ?
+	 */
+	private byte[] sentDX;
+	/**
+	 * What IAC WILL/WONT request do we have sent already ?
+	 */
+	private byte[] sentWX;
+
+	private Socket socket;
+	private BufferedInputStream is;
+	private BufferedOutputStream os;
+
+	private StatusPeer peer = this;		/* peer, notified on status */
+
+	/**
+	 * Connect to the remote host at the specified port.
+	 * @param address the symbolic host address
+	 * @param port the numeric port
+	 * @see #disconnect
+	 */
+	public void connect(String address, int port) throws IOException {
+		if(debug > 0) System.out.println("Telnet.connect("+address+","+port+")");
+		socket = new Socket(address, port);
+		is = new BufferedInputStream(socket.getInputStream());
+		os = new BufferedOutputStream(socket.getOutputStream());
+		neg_state = 0;
+		receivedDX = new byte[256]; 
+		sentDX = new byte[256];
+		receivedWX = new byte[256]; 
+		sentWX = new byte[256];
+	}
+
+	/**
+	 * Disconnect from remote host.
+	 * @see #connect
+	 */
+	public void disconnect() throws IOException {
+	  if(debug > 0) System.out.println("TelnetIO.disconnect()");
+	  if(socket !=null) socket.close();
+	}
+  
+	/**
+	 * Connect to the remote host at the default telnet port (23).
+	 * @param address the symbolic host address
+	 */
+	public void connect(String address) throws IOException {
+		connect(address, 23);
+	}
+
+	/**
+	 * Set the object to be notified about current status.
+	 * @param obj object to be notified.
+	 */
+	public void setPeer(StatusPeer obj) { peer = obj; }
+
+	/** Returns bytes available to be read.  Since they haven't been
+	 * negotiated over, this could be misleading.
+	 * Most useful as a boolean value - "are any bytes available" -
+	 * rather than as an exact count of "how many ara available."
+	 *
+	 * @exception IOException on problems with the socket connection
+	 */
+	public int available() throws IOException
+	{
+	  return is.available();
+	}
+	
+
+	/**
+	 * Read data from the remote host. Blocks until data is available. 
+	 * Returns an array of bytes.
+	 * @see #send
+	 */
+	public byte[] receive() throws IOException {
+		int count = is.available();
+		byte buf[] = new byte[count];
+		count = is.read(buf);
+		if(count < 0) throw new IOException("Connection closed.");
+		if(debug > 1) System.out.println("TelnetIO.receive(): read bytes: "+count);
+		buf = negotiate(buf, count);
+		return buf;
+	}
+
+	/**
+	 * Send data to the remote host.
+	 * @param buf array of bytes to send
+	 * @see #receive
+	 */
+	public void send(byte[] buf) throws IOException {
+		if(debug > 1) System.out.println("TelnetIO.send("+buf+")");
+		os.write(buf);
+		os.flush();
+	}
+
+	public void send(byte b) throws IOException {
+		if(debug > 1) System.out.println("TelnetIO.send("+b+")");
+		os.write(b);
+		os.flush();
+	}
+
+	/**
+	 * Handle an incoming IAC SB <type> <bytes> IAC SE
+	 * @param type type of SB
+	 * @param sbata byte array as <bytes>
+	 * @param sbcount nr of bytes. may be 0 too.
+	 */
+	private void handle_sb(byte type, byte[] sbdata, int sbcount) 
+		throws IOException 
+	{
+		if(debug > 1) 
+			System.out.println("TelnetIO.handle_sb("+type+")");
+		switch (type) {
+		case TELOPT_TTYPE:
+			if (sbcount>0 && sbdata[0]==TELQUAL_SEND) {
+				String ttype;
+				send(IACSB);send(TELOPT_TTYPE);send(TELQUAL_IS);
+				/* FIXME: need more logic here if we use 
+				 * more than one terminal type
+				 */
+				Vector vec = new Vector(2);
+				vec.addElement("TTYPE");
+				ttype = (String)peer.notifyStatus(vec);
+				if(ttype == null) ttype = "dumb";
+				byte[] bttype = new byte[ttype.length()];
+
+				ttype.getBytes(0,ttype.length(), bttype, 0);
+				send(bttype);
+				send(IACSE);
+			}
+
+		}
+	}
+
+	/**
+	 * Notify about current telnet status. This method is called top-down.
+	 * @param status contains status information
+	 */
+	public Object notifyStatus(Vector status) {
+		if(debug > 0) 
+		  System.out.println("TelnetIO.notifyStatus("+status+")");
+		return null;
+	}
+
+	/* wo faengt buf an bei buf[0] oder bei buf[1] */
+	private byte[] negotiate(byte buf[], int count) throws IOException {
+		if(debug > 1) 
+			System.out.println("TelnetIO.negotiate("+buf+","+count+")");
+		byte nbuf[] = new byte[count];
+		byte sbbuf[] = new byte[count];
+		byte sendbuf[] = new byte[3];
+		byte b,reply;
+		int  sbcount = 0;
+		int boffset = 0, noffset = 0;
+		Vector	vec = new Vector(2);
+
+		while(boffset < count) {
+			b=buf[boffset++];
+			/* of course, byte is a signed entity (-128 -> 127)
+			 * but apparently the SGI Netscape 3.0 doesn't seem
+			 * to care and provides happily values up to 255
+			 */
+			if (b>=128)
+				b=(byte)((int)b-256);
+			switch (neg_state) {
+			case STATE_DATA:
+				if (b==IAC) {
+					neg_state = STATE_IAC;
+				} else {
+					nbuf[noffset++]=b;
+				}
+				break;
+			case STATE_IAC:
+				switch (b) {
+				case IAC:
+					if(debug > 2) 
+						System.out.print("IAC ");
+					neg_state = STATE_DATA;
+					nbuf[noffset++]=IAC;
+					break;
+				case WILL:
+					if(debug > 2)
+						System.out.print("WILL ");
+					neg_state = STATE_IACWILL;
+					break;
+				case WONT:
+					if(debug > 2)
+						System.out.print("WONT ");
+					neg_state = STATE_IACWONT;
+					break;
+				case DONT:
+					if(debug > 2)
+						System.out.print("DONT ");
+					neg_state = STATE_IACDONT;
+					break;
+				case DO:
+					if(debug > 2)
+						System.out.print("DO ");
+					neg_state = STATE_IACDO;
+					break;
+				case EOR:
+					if(debug > 2)
+						System.out.print("EOR ");
+					neg_state = STATE_DATA;
+					break;
+				case SB:
+					if(debug > 2)
+						System.out.print("SB ");
+					neg_state = STATE_IACSB;
+					sbcount = 0;
+					break;
+				default:
+					if(debug > 2)
+						System.out.print(
+							"<UNKNOWN "+b+" > "
+						);
+					neg_state = STATE_DATA;
+					break;
+				}
+				break;
+			case STATE_IACWILL:
+				switch(b) {
+				case TELOPT_ECHO:
+					if(debug > 2) 
+						System.out.println("ECHO");
+					reply = DO;
+					vec = new Vector(2);
+					vec.addElement("NOLOCALECHO");
+					peer.notifyStatus(vec);
+					break;
+				case TELOPT_EOR:
+					if(debug > 2) 
+						System.out.println("EOR");
+					reply = DO;
+					break;
+				default:
+					if(debug > 2)
+						System.out.println(
+							"<UNKNOWN,"+b+">"
+						);
+					reply = DONT;
+					break;
+				}
+				if(debug > 1)
+				  System.out.println("<"+b+", WILL ="+WILL+">");
+				if (	reply != sentDX[b+128] ||
+					WILL != receivedWX[b+128]
+				) {
+					sendbuf[0]=IAC;
+					sendbuf[1]=reply;
+					sendbuf[2]=b;
+					send(sendbuf);
+					sentDX[b+128] = reply;
+					receivedWX[b+128] = WILL;
+				}
+				neg_state = STATE_DATA;
+				break;
+			case STATE_IACWONT:
+				switch(b) {
+				case TELOPT_ECHO:
+					if(debug > 2) 
+						System.out.println("ECHO");
+
+					vec = new Vector(2);
+					vec.addElement("LOCALECHO");
+					peer.notifyStatus(vec);
+					reply = DONT;
+					break;
+				case TELOPT_EOR:
+					if(debug > 2) 
+						System.out.println("EOR");
+					reply = DONT;
+					break;
+				default:
+					if(debug > 2) 
+						System.out.println(
+							"<UNKNOWN,"+b+">"
+						);
+					reply = DONT;
+					break;
+				}
+				if (	reply != sentDX[b+128] ||
+					WONT != receivedWX[b+128]
+				) {
+					sendbuf[0]=IAC;
+					sendbuf[1]=reply;
+					sendbuf[2]=b;
+					send(sendbuf);
+					sentDX[b+128] = reply;
+					receivedWX[b+128] = WILL;
+				}
+				neg_state = STATE_DATA;
+				break;
+			case STATE_IACDO:
+				switch (b) {
+				case TELOPT_ECHO:
+					if(debug > 2) 
+						System.out.println("ECHO");
+					reply = WILL;
+					vec = new Vector(2);
+					vec.addElement("LOCALECHO");
+					peer.notifyStatus(vec);
+					break;
+				case TELOPT_TTYPE:
+					if(debug > 2) 
+						System.out.println("TTYPE");
+					reply = WILL;
+					break;
+				case TELOPT_NAWS:
+					if(debug > 2) 
+						System.out.println("NAWS");
+					vec = new Vector(2);
+					vec.addElement("NAWS");
+					Dimension size = (Dimension)
+						peer.notifyStatus(vec);
+					receivedDX[b] = DO;
+					if(size == null)
+					{
+						/* this shouldn't happen */
+						send(IAC);
+						send(WONT);
+						send(TELOPT_NAWS);
+						reply = WONT;
+						sentWX[b] = WONT;
+						break;
+					}
+					reply = WILL;
+					sentWX[b] = WILL;
+					sendbuf[0]=IAC;
+					sendbuf[1]=WILL;
+					sendbuf[2]=TELOPT_NAWS;
+					send(sendbuf);
+					send(IAC);send(SB);send(TELOPT_NAWS);
+					send((byte) (size.width >> 8));
+					send((byte) (size.width & 0xff));
+					send((byte) (size.height >> 8));
+					send((byte) (size.height & 0xff));
+					send(IAC);send(SE);
+					break;
+				default:
+					if(debug > 2) 
+						System.out.println(
+							"<UNKNOWN,"+b+">"
+						);
+					reply = WONT;
+					break;
+				}
+				if (	reply != sentWX[128+b] ||
+					DO != receivedDX[128+b]
+				) {
+					sendbuf[0]=IAC;
+					sendbuf[1]=reply;
+					sendbuf[2]=b;
+					send(sendbuf);
+					sentWX[b+128] = reply;
+					receivedDX[b+128] = DO;
+				}
+				neg_state = STATE_DATA;
+				break;
+			case STATE_IACDONT:
+				switch (b) {
+				case TELOPT_ECHO:
+					if(debug > 2) 
+						System.out.println("ECHO");
+					reply	= WONT;
+					vec = new Vector(2);
+					vec.addElement("NOLOCALECHO");
+					peer.notifyStatus(vec);
+					break;
+				case TELOPT_NAWS:
+					if(debug > 2) 
+						System.out.println("NAWS");
+					reply	= WONT;
+					break;
+				default:
+					if(debug > 2) 
+						System.out.println(
+							"<UNKNOWN,"+b+">"
+						);
+					reply	= WONT;
+					break;
+				}
+				if (	reply	!= sentWX[b+128] ||
+					DONT	!= receivedDX[b+128]
+				) {
+					send(IAC);send(reply);send(b);
+					sentWX[b+128]		= reply;
+					receivedDX[b+128]	= DONT;
+				}
+				neg_state = STATE_DATA;
+				break;
+			case STATE_IACSBIAC:
+				if(debug > 2) System.out.println(""+b+" ");
+				if (b == IAC) {
+					sbcount		= 0;
+					current_sb	= b;
+					neg_state	= STATE_IACSBDATA;
+				} else {
+					System.out.println("(bad) "+b+" ");
+					neg_state	= STATE_DATA;
+				}
+				break;
+			case STATE_IACSB:
+				if(debug > 2) System.out.println(""+b+" ");
+				switch (b) {
+				case IAC:
+					neg_state = STATE_IACSBIAC;
+					break;
+				default:
+					current_sb	= b;
+					sbcount		= 0;
+					neg_state	= STATE_IACSBDATA;
+					break;
+				}
+				break;
+			case STATE_IACSBDATA:
+				if (debug > 2) System.out.println(""+b+" ");
+				switch (b) {
+				case IAC:
+					neg_state = STATE_IACSBDATAIAC;
+					break;
+				default:
+					sbbuf[sbcount++] = b;
+					break;
+				}
+				break;
+			case STATE_IACSBDATAIAC:
+				if (debug > 2) System.out.println(""+b+" ");
+				switch (b) {
+				case IAC:
+					neg_state = STATE_IACSBDATA;
+					sbbuf[sbcount++] = IAC;
+					break;
+				case SE:
+					handle_sb(current_sb,sbbuf,sbcount);
+					current_sb	= 0;
+					neg_state	= STATE_DATA;
+					break;
+				case SB:
+					handle_sb(current_sb,sbbuf,sbcount);
+					neg_state	= STATE_IACSB;
+					break;
+				default:
+					neg_state	= STATE_DATA;
+					break;
+				}
+				break;
+			default:
+				if (debug > 2) 
+					System.out.println(
+						"This should not happen: "+
+						neg_state+" "
+					);
+				neg_state = STATE_DATA;
+				break;
+			}
+		}
+		buf	= new byte[noffset];
+		System.arraycopy(nbuf, 0, buf, 0, noffset);
+		return buf;
+	}
+}
diff --git a/web/root/telnet/socket/TelnetWrapper.class b/web/root/telnet/socket/TelnetWrapper.class
new file mode 100644
index 0000000000000000000000000000000000000000..afd702d1c44a904c9966ced29ae10322d12a0098
Binary files /dev/null and b/web/root/telnet/socket/TelnetWrapper.class differ
diff --git a/web/root/telnet/socket/TelnetWrapper.java b/web/root/telnet/socket/TelnetWrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7f6c7fb2add0a1afd81cf0c1f077cdcc4fb10ad
--- /dev/null
+++ b/web/root/telnet/socket/TelnetWrapper.java
@@ -0,0 +1,396 @@
+package socket;
+
+import java.io.IOException;
+import java.util.Date;
+
+/** Wrapper for a Java Telnet call. 
+ * To use, make a new TelnetWrapper() with the name or IP address of a host.
+ * Then, for most uses, the easiest way is to call setPrompt() with the
+ * expected prompt, then call login(), and a sequence of sendLine()'s
+ * until you get what you want done.
+ * <P>
+ * If you don't know the prompt ahead of time, you have to do a sequence of
+ * send() and wait() or receiveUntil() calls.  send() sends a string across
+ * the telnet connection. Add a '\r' to the end if you want to
+ * complete a command. wait() waits for an exact string from the other side
+ * of the telnet connection, and returns nothing,
+ * receiveUntil() also waits for a string, but returns all the data
+ * that it received while waiting, including the string itself. 
+ * Use this if you want the output from a command. Please note that
+ * the telnet connection will usually echo the sent command. 
+ * <P>
+ * sendLine() is generally better, since it adds the '\r'
+ * automatically, waits for the prompt before returning, and returns all
+ * data received before the prompt, with the prompt itself cut off the
+ * end, and the sent command cut off the beginning. login() and
+ * sendLine() are implemented using send(), wait() and receiveUntil().
+ * They can be freely mixed and matched.
+ * <P>
+ * Here is a simple example of the use of TelnetWrapper:
+ * <PRE>
+ * // creates a new file in /tmp, lists the directory to prove it done
+ * {
+ *   TelnetWrapper telnet = new TelnetWrapper("123.45.78.90");
+ *
+ *   // setting the correct prompt ahead of time is very important 
+ *   // if you want to use login and sendLine
+ *   telnet.setPrompt("$ ");
+ *   telnet.login("loginname", "password");
+ *
+ *   // this is how you have to do it otherwise
+ *   telnet.send("touch /tmp/TELNET_WRAPPER" + "\r");
+ *   telnet.wait("$ ");
+ *
+ *   // sendLine 1: adds the \r automatically, 2: waits for the prompt
+ *   // before returning 3: returns what was printed from the command
+ *   String ls = telnet.sendLine("ls /tmp");
+ *   System.out.println(ls);
+ *
+ *   // clean up
+ *   telnet.disconnect();
+ * } 
+ * </PRE>
+ * @author George Ruban 3/4/97
+ * @version 0.2 5/15/97 - added comments, replaced String += with
+ *    StringBuffer.append() in receiveUntil(), added port constructor
+ * @version 0.3 7/30/97 - added optional timeout to receiveUntil() and wait()
+ * @see TelnetIO
+ */
+public class TelnetWrapper
+{
+  /** The telnet connection. That which is wrapped. */
+  TelnetIO tio;
+  /** Set to true for System.out.println debugging. */
+  public boolean debug = false;
+  /** The current prompt on the remote system. */
+  private String prompt;
+
+  /** The default prompt used by all TelnetWrappers unless specifically
+   * overridden.
+   * @see #setPrompt
+   */
+  private static String defaultPrompt = "$ ";
+
+  /** The default login name used by TelnetWrappers.
+   * If defaultLogin and defaultPassword are both non-null
+   * when a TelnetWrapper is created, the TelnetWrapper will attempt
+   * to login.
+   */
+  private static String defaultLogin = null;
+
+  /** The default password used by TelnetWrappers.
+   * If defaultLogin and defaultPassword are both non-null
+   * when a TelnetWrapper is created, the TelnetWrapper will attempt
+   * to login.
+   */
+  private static String defaultPassword = null;
+  
+  /** Skip any received data until the token appears. 
+   * More efficient than receiveUntil, but liable to fail on large
+   * tokens that can be spread over several "send"s. In that case,
+   * consider using receiveUntil and ignoring the return value.
+   * @param token String to wait for
+   * @exception IOException on problems with the socket connection
+   * @see #receiveUntil
+   */
+  public void wait(String token) throws IOException
+  {
+    wait(token, -1);
+  }
+
+  /** Wait for a String or a timeout. 
+   * If time runs out, throws a TimedOutException.
+   * Sleeps in intervals of 100 milliseconds until either receiving the
+   * token or timeout.
+   * <P>
+   * More efficient than receiveUntil, but liable to fail on large
+   * tokens that can be spread over several "send"s. In that case,
+   * consider using receiveUntil and ignoring the return value.
+   * @param token String to wait for
+   * @param timeout time in milliseconds to wait (negative means wait forever)
+   * @exception IOException on problems with the socket connection
+   * @exception TimedOutException if time runs out before token received
+   * @see #receiveUntil(String, long)
+   */
+  public void wait(String token, long timeout) 
+    throws IOException, TimedOutException
+  {
+    if(debug) System.out.println("wait(" + token + ", " + timeout + ")...");
+    String tmp = "";
+    long deadline = 0;
+    if(timeout >= 0) 
+      deadline = new Date().getTime() + timeout;
+    
+    do {
+      if(timeout >= 0)
+      {
+	while(available() <= 0)
+	{
+	  if(new Date().getTime() > deadline) 
+	    throw new TimedOutException();
+	  try{
+	    Thread.currentThread().sleep(100);
+	  }
+	  catch(InterruptedException ignored)
+	  {}
+	}
+      }
+      tmp = receive();
+    } while(tmp.indexOf(token) == -1);
+    if(debug) System.out.println("wait(" + token  + ", " + timeout + 
+				 ") successful.");
+  }
+
+  /** Returns bytes available to be read.  Since they haven't been
+   * negotiated over, this could be misleading...
+   */
+  public int available() throws IOException
+  {
+    return tio.available();
+  }
+	
+  /** Returns a String from the telnet connection. Blocks
+   * until one is available. No guarantees that the string is in
+   * any way complete.
+   * NOTE: uses Java 1.0.2 style String-bytes conversion.*/
+  public String receive() throws IOException
+  {
+    String s = new String(receiveBytes(), 0);
+    if(debug) System.out.println(s);
+    return s;
+  }
+
+  /** Returns a byte array. Blocks until data is available. */
+  public byte[] receiveBytes() throws IOException
+  {
+    return tio.receive();
+  }
+
+  /** Returns all data received up until a certain token. 
+   * @param token String to wait for
+   * @exception IOException on problems with the socket connection
+   * @see #wait
+   */
+  public String receiveUntil(String token) throws IOException
+  {
+    return receiveUntil(token, -1);
+  }
+  
+
+  /** Returns all data received up until a certain token. 
+   * @param token String to wait for
+   * @param timeout time in milliseconds to wait (negative means wait forever)
+   * @exception IOException on problems with the socket connection
+   * @exception TimedOutException if time runs out before token received
+   * @see #wait(String, long)
+   */
+  public String receiveUntil(String token, long timeout) 
+    throws IOException, TimedOutException
+  {
+    StringBuffer buf = new StringBuffer();
+    long deadline = 0;
+    if(timeout >= 0) 
+      deadline = new Date().getTime() + timeout;
+    do
+    {
+      if(timeout >= 0)
+      {
+	while(available() <= 0)
+	{
+	  if(new Date().getTime() > deadline) 
+	    throw new TimedOutException();
+	  try{
+	    Thread.currentThread().sleep(100);
+	  }
+	  catch(InterruptedException ignored)
+	  {}
+	}
+      }
+      buf.append(receive());
+    } while(buf.toString().indexOf(token) == -1);
+    return buf.toString();
+  }
+  
+  /** Sends a String to the remote host.
+   * NOTE: uses Java 1.0.2 style String-bytes conversion.
+   * @exception IOException on problems with the socket connection
+   */
+  public void send(String s) throws IOException
+  {
+    if(debug) System.out.println(s);
+    byte[] buf = new byte[s.length()];
+    s.getBytes(0, buf.length, buf, 0);
+    tio.send(buf);
+  }
+
+  /** Sends a line to the remote host, returns all data before the prompt.
+   * Since telnet seems to rely on carriage returns ('\r'), 
+   * one will be appended to the sent string, if necessary.
+   * @param command command line to send
+   * @return whatever data the command produced before the prompt.
+   * @see #setPrompt
+   */
+  public String sendLine(String command) throws IOException
+  {
+    if(command.charAt(command.length() -1) != '\r') 
+      command += "\r";
+    send(command);
+    String s = receiveUntil(prompt);
+
+    // telnet typically echoes the command with a \r\n ending...
+    return s.substring(command.length() + 1, s.indexOf(prompt));
+  }
+  
+  /** Sends bytes over the telnet connection. */
+  public void send(byte[] buf) throws IOException
+  {
+    tio.send(buf);
+  }
+  
+  /** Logs in as a particular user and password. 
+    * Returns after receiving prompt. */
+  public void login(String loginName, String password) throws IOException
+  {
+    wait("login:");
+    send(loginName + "\r");
+    wait("Password:");
+    sendLine(password + "\r");
+  }
+    
+  /** Connects to the default telnet port on the given host. 
+   * If the defaultLogin and defaultPassword are non-null, attempts login. */
+  public TelnetWrapper(String host) throws IOException
+  {
+    tio = new TelnetIO();
+    setPrompt(defaultPrompt);
+    tio.connect(host);
+    if(defaultLogin != null && defaultPassword != null)
+    {
+      login(defaultLogin, defaultPassword);
+    }
+  }
+
+  /** Connects to a specific telnet port on the given host. 
+   * If the defaultLogin and defaultPassword are non-null, attempts login. */
+  public TelnetWrapper(String host, int port) throws IOException
+  {
+    tio = new TelnetIO();
+    setPrompt(defaultPrompt);
+    tio.connect(host, port);
+    if(defaultLogin != null && defaultPassword != null)
+    {
+      login(defaultLogin, defaultPassword);
+    }
+  }
+  
+  /** Sets the expected prompt. 
+   * If this function is not explicitly called, the default prompt is used.
+   * @see #setDefaultPrompt
+   */
+  public void setPrompt(String prompt)
+  {
+    if(prompt == null) throw new IllegalArgumentException("null prompt.");
+    this.prompt = prompt;
+  }
+
+  /** Sets the default prompt used by all TelnetWrappers.
+   * This can be specifically overridden for a specific instance.
+   * The default prompt starts out as "$ " until this function is called.
+   * @see #setPrompt
+   */
+  public static void setDefaultPrompt(String prompt)
+  {
+    if(prompt == null) throw new IllegalArgumentException("null prompt.");
+    defaultPrompt = prompt;
+  }
+
+  /** Sets the default login used by TelnetWrappers.
+   * If this method is called with non-null login and password,
+   * all TelnetWrappers will attempt to login when first created.
+   * @param login login name to use
+   * @param password password to use
+   * @see #login
+   * @see #unsetLogin
+   */
+  public static void setLogin(String login, String password)
+  {
+    if(login == null || password == null)
+      throw new IllegalArgumentException("null login or password.");
+    defaultLogin = login;
+    defaultPassword = password;
+  }
+
+
+  /** Turns off the default login of TelnetWrappers.
+   * After this method is called, TelnetWrappers will not
+   * login until that method is explicitly called.
+   * @see #setLogin
+   * @see #login
+   */
+  public static void unsetLogin()
+  {
+    defaultLogin = defaultPassword = null;
+  }
+  
+  /** Ends the telnet connection. */
+  public void disconnect() throws IOException
+  {
+    if(tio != null) tio.disconnect();
+    tio = null;
+  }
+  
+  /** Ends the telnet connection. */
+  public void finalize()
+  {
+    try
+    {
+      disconnect();
+    }
+    catch(IOException e)
+    {} // after all, what can be done at this point?
+  }  
+
+  /** Telnet test driver.
+   * Modeled after the IOtest.java example in the Telnet Applet.
+   * Logs in to "host", creates a timestamped file in /tmp, lists the
+   * /tmp directory to System.out, disconnects.  Shows off several
+   * TelnetWrapper methods.
+   * @param args host login password prompt
+   */
+  public static void main(String args[]) throws IOException
+  {
+    if(args.length != 4) throw new 
+      IllegalArgumentException("Usage: TelnetWrapper host login password prompt");
+    
+    String host = args[0];
+    String login = args[1];
+    String password = args[2];
+    String prompt = args[3];
+
+    Date now = new Date();
+    String timestamp = now.getYear() + "-" +
+		(now.getMonth()+1) + "-" + now.getDate() + "-" +
+		  now.getHours() + ":" + now.getMinutes() + ":" +
+		    now.getSeconds();
+    TelnetWrapper telnet = new TelnetWrapper(host);
+    telnet.debug = true;
+
+    // setting the correct prompt ahead of time is very important 
+    // if you want to use login and sendLine
+    telnet.setPrompt(prompt);
+    telnet.login(login, password);
+
+    // this is how you have to do it otherwise
+    telnet.send("touch /tmp/TELNET_WRAPPER-" + timestamp + "\r");
+    telnet.wait(prompt);
+
+    // sendLine 1: adds the \r automatically, 2: waits for the prompt
+    // before returning 3: returns what was printed from the command
+    String ls = telnet.sendLine("ls /tmp");
+    System.out.println(ls);
+
+    // clean up
+    telnet.disconnect();
+  }
+}
+
diff --git a/web/root/telnet/socket/TimedOutException.class b/web/root/telnet/socket/TimedOutException.class
new file mode 100644
index 0000000000000000000000000000000000000000..274c0796a57b759a398048452383233ec17c6112
Binary files /dev/null and b/web/root/telnet/socket/TimedOutException.class differ
diff --git a/web/root/telnet/socket/TimedOutException.java b/web/root/telnet/socket/TimedOutException.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac9621714dac48a0d5b559aeed59480fe892624e
--- /dev/null
+++ b/web/root/telnet/socket/TimedOutException.java
@@ -0,0 +1,19 @@
+package socket;
+import java.io.IOException;
+
+/** Exception thrown when a Telnet connection takes too long
+ * before receiving a specified String token.
+ * @author George Ruban
+ * @version 0.1 7/30/97 */
+public class TimedOutException extends IOException
+{
+  public TimedOutException()
+  {
+  }
+
+  public TimedOutException(String message)
+  {
+    super(message);
+  }
+}
+
diff --git a/web/root/telnet/telnet.class b/web/root/telnet/telnet.class
new file mode 100644
index 0000000000000000000000000000000000000000..e7822f4e0c71d936672f69d8d21329454c375f05
Binary files /dev/null and b/web/root/telnet/telnet.class differ
diff --git a/web/root/telnet/telnet.java b/web/root/telnet/telnet.java
new file mode 100644
index 0000000000000000000000000000000000000000..4cd0e877212b829711a8cea2b71b3deabc2e50f1
--- /dev/null
+++ b/web/root/telnet/telnet.java
@@ -0,0 +1,576 @@
+/**
+ * telnet -- implements a simple telnet
+ * --
+ * $Id$
+ * $timestamp: Mon Aug  4 13:11:14 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+import java.applet.Applet;
+import java.awt.Frame;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Panel;
+import java.awt.Event;
+import java.util.Vector;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.io.IOException;
+
+import socket.TelnetIO;
+import socket.StatusPeer;
+
+import display.Terminal;
+import display.TerminalHost;
+
+import modules.Module;
+
+/**
+ * A telnet implementation that supports different terminal emulations.
+ * @version $Id$
+ * @author  Matthias L. Jugel, Marcus Meißner
+ */
+public class telnet extends Applet implements Runnable, TerminalHost, StatusPeer
+{
+  /**
+   * The telnet io methods.
+   * @see socket.TelnetIO
+   */
+  protected TelnetIO tio;
+
+  /**
+   * The terminal emulation (dynamically loaded).
+   * @see emulation
+   * @see display.Terminal
+   * @see display.TerminalHost
+   */
+  protected Terminal term;
+
+  /**
+   * The host address to connect to. This is retrieved from the PARAM tag
+   * "address".
+   */
+  protected String address;
+
+  /**
+   * The port number (default ist 23). This can be specified as the PARAM tag
+   * "port".
+   */
+  protected int port = 23;
+
+  /**
+   * The proxy ip address. If this variable is set telnet will try to connect
+   * to this address and then send a string to tell the relay where the
+   * target host is.
+   * @see address
+   */
+  protected String proxy = null;
+  /**
+   * The proxy port number. This is the port where the relay is expected to
+   * listen for incoming connections.
+   * @see proxy
+   * @see port
+   */
+  protected int proxyport;
+  
+  /**
+   * Emulation type (default is vt320). This can be specified as the PARAM
+   * tag "emulation".
+   * @see term
+   * @see display.Terminal
+   * @see display.TerminalHost
+   */
+  protected String emulation = "vt320";
+
+  /**
+   * Dynamically loaded modules are stored here.
+   */
+  protected Vector modules = null;
+
+  // some state variables;
+  private boolean localecho = true;
+  private boolean connected = false;
+
+  private Thread t;
+  private Container parent;
+
+  /**
+   * This Hashtable contains information retrievable by getParameter() in case
+   * the program is run as an application and the AppletStub is missing.
+   */
+  public Hashtable params;
+
+  /** 
+   * Retrieve the current version of the applet.
+   * @return String a string with the version information.
+   */
+  public String getAppletInfo()
+  {
+    String info = "The Java(tm) Telnet Applet\n$Id$\n";
+    info += "Terminal emulation: "+term.getTerminalType()+
+      " ["+term.toString()+"]\n";
+    info += "Terminal IO version: "+tio.toString()+"\n";
+    if(modules != null && modules.size() > 0) {
+      info += "Resident modules loaded: ("+modules.size()+")";
+      for(int i = 0; i < modules.size(); i++)
+        info += "   + "+(modules.elementAt(i)).toString()+"\n";
+    }
+    
+    return info;
+  }
+    
+  /**
+   * Retrieve parameter tag information. This includes the tag information from
+   * terminal and loaded modules.
+   * @return String an array of array of string with tag information
+   * @see java.applet.Applet#getParameterInfo
+   */
+  public String[][] getParameterInfo()
+  {
+    String pinfo[][];
+    String info[][] = {
+      {"address",  "String",   "IP address"},
+      {"port",     "Integer",  "Port number"},
+      {"proxy",    "String",   "IP address of relay"},
+      {"proxyport","Integer",  "Port number of relay"},
+      {"emulation","String",   "Emulation to be used (standard is vt320)"},
+      {"localecho","String",   "Localecho Mode (on/off/auto)"},
+    };
+    String tinfo[][] = (term != null ? term.getParameterInfo() : null);
+    if(tinfo != null) pinfo = new String[tinfo.length + 3][3];
+    else pinfo = new String[3][3];
+    System.arraycopy(info, 0, pinfo, 0, 3);
+    System.arraycopy(tinfo, 0, pinfo, 3, tinfo.length);
+    return pinfo;
+  }
+
+  /**
+   * We override the Applet method getParameter() to be able to handle 
+   * parameters even as application.
+   * @param name The name of the queried parameter.
+   * @return the value of the parameter
+   * @see java.applet.Applet#getParameter
+   */ 
+  public String getParameter(String name)
+  {
+    if(params == null) return super.getParameter(name);
+    return (String)params.get(name);
+  }
+
+  /**
+   * The main function is called on startup of the application.
+   */
+  public static void main(String args[]) 
+  {
+    // an application has to create a new instance of itself.
+    telnet applet = new telnet();
+
+    // create params from command line arguments
+    applet.params = new Hashtable();
+    switch(args.length) 
+    {
+    case 2: applet.params.put("port", args[1]);
+    case 1: applet.params.put("address", args[0]); 
+      break;
+    default: 
+      System.out.println("Usage: java telnet host [port]");
+      System.exit(0);
+    } 
+    applet.params.put("VTscrollbar", "true");
+    applet.params.put("module#1", "ButtonBar");
+    applet.params.put("1#Button", "Exit|\\$exit()");
+    applet.params.put("2#Button", "Connect|\\$connect(\\@address@,\\@port@)");
+    applet.params.put("3#Input", "address#30|"
+          +(args.length > 0 ? args[0] : "localhost"));
+    applet.params.put("4#Input", "port#4|23");
+    applet.params.put("5#Button", "Disconnect|\\$disconnect()");
+
+    // we put the applet in its own frame
+    Frame frame = new Frame("The Java Telnet Application ["+args[0]+"]");
+    frame.setLayout(new BorderLayout());
+    frame.add("Center", applet);
+    frame.resize(380, 590);
+
+    applet.init();
+
+    frame.pack();
+    frame.show();
+
+    applet.start();
+  }
+  
+  /**
+   * Initialize applet. This method reads the PARAM tags "address",
+   * "port" and "emulation". The emulation class is loaded dynamically.
+   * It also loads modules given as parameter "module#<nr>".
+   */
+  public void init()
+  {
+    String tmp; 
+
+    // save the current parent for future use
+    parent = getParent();
+    
+    // get the address we want to connect to
+    if((address = getParameter("address")) == null)
+      address = getDocumentBase().getHost();
+
+    if((tmp = getParameter("port")) == null) 
+      port = 23;
+    else
+      port = Integer.parseInt(tmp);
+
+    if((proxy = getParameter("proxy")) != null)
+      if((tmp = getParameter("proxyport")) == null)
+        proxyport = 31415;
+      else
+        proxyport = Integer.parseInt(tmp);
+    
+    if((emulation = getParameter("emulation")) == null)
+      emulation = "vt320";
+
+    // load the terminal emulation
+    try {
+      term = (Terminal)Class.forName("display."+emulation).newInstance();
+      System.out.println("telnet: load terminal emulation: "+emulation);
+    } catch(Exception e) {
+      System.err.println("telnet: cannot load terminal emulation "+emulation);
+      e.printStackTrace();
+    }
+    setLayout(new BorderLayout());
+    
+    // load modules, position is determined by the @<position> modifier
+    modules = new Vector();
+    int nr = 1;
+    while((tmp = getParameter("module#"+nr++)) != null) try {
+      Panel north = null, south = null, west = null, east = null;
+      String position = "North", initFile = null;
+
+      // try to get the initialization file name
+      if(tmp.indexOf(',') != -1) {
+        initFile = tmp.substring(tmp.indexOf(','+1));
+        tmp = tmp.substring(0, tmp.indexOf(','));
+        initFile = tmp.substring(tmp.indexOf(','+1));
+      }
+           
+      // find the desired location
+      if(tmp.indexOf('@') != -1) {
+        position = tmp.substring(tmp.indexOf('@')+1);
+        tmp = tmp.substring(0, tmp.indexOf('@'));
+      } 
+      Object obj = (Object)Class.forName("modules."+tmp).newInstance();
+
+      // probe for module (implementing modules.Module)
+      try {
+        ((Module)obj).setLoader(this);
+        modules.addElement((Module)obj);
+        System.out.println("telnet: module "+tmp+" detected");
+      } catch(ClassCastException e) {
+        System.out.println("telnet: warning: "+tmp+" may not be a "+
+                           "valid module");
+      }
+
+      // probe for visible component (java.awt.Component and descendants)
+      try {
+	Component component = (Component)obj;
+	if(position.equals("North")) {
+          if(north == null) { north = new Panel(); add("North", north); }
+          north.add(component);
+        } else if(position.equals("South")) {
+          if(south == null) { south = new Panel(); add("South", south); }
+          south.add(component);
+        } else if(position.equals("East")) {
+          if(east == null) { east = new Panel(); add("East", east); }
+          east.add(component);
+        } else if(position.equals("West")) {
+          if(west == null) { west = new Panel(); add("West", west); } 
+          west.add(component);
+        }
+        System.err.println("telnet: module "+tmp+" is a visible component");
+      } catch(ClassCastException e) {}
+
+    } catch(Exception e) {
+      System.err.println("telnet: cannot load module "+tmp);
+      e.printStackTrace();
+    }
+    if(modules.isEmpty()) modules = null;
+    add("Center", term);
+  }
+
+  /**
+   * Upon start of the applet try to create a new connection.
+   */
+  public void start()
+  {
+    if(!connect(address, port) && params == null)
+      showStatus("telnet: connection to "+address+" "+port+" failed");
+  }
+
+  /**
+   * Disconnect when the applet is stopped.
+   */
+  public final void stop()
+  {
+    disconnect();
+  }
+
+  /**
+   * Try to read data from the sockets and put it on the terminal.
+   * This is done until the thread dies or an error occurs.
+   */
+  public void run()
+  {
+    while(t != null)
+      try {
+        String tmp = new String(tio.receive(), 0);
+
+        // cycle through the list of modules
+        if(modules != null) {
+          Enumeration modlist = modules.elements();
+          while(modlist.hasMoreElements()) {
+            Module m = (Module)modlist.nextElement();
+            String modified = m.receive(tmp);
+            // call the receive() method and if it returns null
+            // remove the module from the list
+            if(modified == null) modules.removeElement(m);
+            else tmp = modified;
+          }
+        }
+        // put the modified string to the terminal
+        term.putString(tmp);
+    } catch(IOException e) {
+      disconnect();
+    }
+  }
+
+  /**
+   * Connect to the specified host and port but don't break existing 
+   * connections. Connects to the host and port specified in the tags. 
+   * @return false if connection was unsuccessful
+   */
+  public boolean connect()
+  {
+    return connect(address, port);
+  }
+
+  /**
+   * Connect to the specified host and port but don't break existing 
+   * connections. Uses the port specified in the tags or 23.
+   * @param host destination host address
+   */
+  public boolean connect(String host)
+  {
+    return connect(host, port);
+  }
+  
+  /**
+   * Connect to the specified host and port but don't break existing 
+   * connections.
+   * @param host destination host address
+   * @param prt destination hosts port
+   */
+  public boolean connect(String host, int prt)
+  {
+    address = host; port = prt;
+
+    if(address == null || address.length() == 0) return false;
+    
+    // There should be no thread when we try to connect
+    if(t != null && connected) {
+      System.err.println("telnet: connect: existing connection preserved");
+      return false;
+    } else t = null;
+    
+    try {
+      // In any case try to disconnect if tio is still active
+      // if there was no tio create a new one.
+      if(tio != null) try { tio.disconnect(); } catch(IOException e) {}
+      else (tio = new TelnetIO()).setPeer(this);
+
+      term.putString("Trying "+address+(port==23?"":" "+port)+" ...\n\r");
+      try {
+        // connect to to our destination at the given port
+        if(proxy != null) {
+          tio.connect(proxy, proxyport);
+          String str = "relay "+address+" "+port+"\n";
+          byte[] bytes = new byte[str.length()];
+          str.getBytes(0, str.length(), bytes, 0);
+          tio.send(bytes);
+        } else 
+          tio.connect(address, port);
+        term.putString("Connected to "+address+".\n\r");
+        // initial conditions are connected and localecho
+        connected = true;
+        localecho = true;
+	if ( (getParameter("localecho")!=null) && 
+	     getParameter("localecho").equals("no")
+        )
+	  localecho = false;
+
+        // cycle through the list of modules and notify connection
+        if(modules != null) {
+          Enumeration modlist = modules.elements();
+          while(modlist.hasMoreElements())
+            // call the connect() method
+            ((Module)modlist.nextElement()).connect(address, port);
+        }
+      } catch(IOException e) {
+        term.putString("Failed to connect.\n\r");
+        // to be sure, we remove the TelnetIO instance
+        tio = null;
+        System.err.println("telnet: failed to connect to "+address+" "+port);
+        e.printStackTrace();
+        return false;
+      }
+      // if our connection was successful, create a new thread and start it
+      t = new Thread(this);
+      t.setPriority(Thread.MIN_PRIORITY);
+      t.start();
+    } catch(Exception e) {
+      // hmm, what happened?
+      System.err.println("telnet: an error occured:");
+      e.printStackTrace();
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Disconnect from the remote host.
+   * @return false if there was a problem disconnecting.
+   */
+  public boolean disconnect()
+  {
+    if(tio == null) {
+      System.err.println("telnet: no connection");
+      return false;
+    }
+    try {
+      connected = false; t = null;
+      // cycle through the list of modules and notify connection
+      if(modules != null) {
+        Enumeration modlist = modules.elements();
+        while(modlist.hasMoreElements())
+          // call the disconnect() method
+          ((Module)modlist.nextElement()).disconnect();
+      }
+      term.putString("\n\rConnection closed.\n\r");
+      tio.disconnect();
+    } catch(Exception e) {
+      System.err.println("telnet: disconnection problem");
+      e.printStackTrace();
+      tio = null; t = null;
+      return false;
+    }
+    return true;
+  }
+  
+  /**
+   * Send a String to the remote host. Implements display.TerminalHost
+   * @param s String to be sent
+   * @return true if we are connected
+   * @see display.TerminalHost
+   */
+  public boolean send(String str)
+  {
+    if(connected) try {
+      byte[] bytes = new byte[str.length()];
+      str.getBytes(0, str.length(), bytes, 0);
+      tio.send(bytes);
+      if(localecho) {
+        if ((str.length()==2) && (str.charAt(0)=='\r') && (str.charAt(1)==0))
+          term.putString("\r\n");
+        else
+          term.putString(str);
+      }
+    } catch(Exception e) {
+      System.err.println("telnet.send(): disconnected");
+      disconnect();
+      return false;
+    }
+    else return false;
+    return true;
+  }
+
+  /**
+   * Send a String to the remote Host.
+   * @param str String to be sent
+   * @return true if we are connected
+   * @see modules.BSXModule
+   */
+  public boolean writeToSocket(String str)
+    {
+      if (connected) try {
+	byte[] bytes = new byte[str.length()];
+	str.getBytes(0, str.length(), bytes, 0);
+	tio.send(bytes);
+      } catch(Exception e) {
+	System.err.println("telnet.send(): disconnected");
+	disconnect();
+	return false;
+      }
+      else return false;
+      return true;
+    }
+  /**
+   * Send a String to the users terminal
+   * @param str String to be displayed
+   * @return void
+   * @see modules.BSXModule
+   */
+  public void writeToUser(String str)
+  {
+    if (term!=null)
+      term.putString(str);
+  }
+
+  /**
+   * This method is called when telnet needs to be notified of status changes.
+   * @param status Vector of status information.
+   * @return an object of the information requested.
+   * @see socket.StatusPeer
+   */
+  public Object notifyStatus(Vector status)
+  {
+    String what = (String)status.elementAt(0);
+
+    if(what.equals("NAWS"))
+      return term.getSize();
+    if(what.equals("TTYPE"))
+      if(term.getTerminalType() == null)
+        return emulation;
+      else return term.getTerminalType();
+
+    if(what.equals("LOCALECHO") || what.equals("NOLOCALECHO")) {
+      boolean nlocalecho = localecho ;
+    if(what.equals("LOCALECHO"))
+	nlocalecho = true;
+    if(what.equals("NOLOCALECHO")) 
+	nlocalecho = false;
+      if ( (getParameter("localecho")==null) ||
+	   getParameter("localecho").equals("auto")
+      )
+	localecho = nlocalecho;
+      /* else ignore ... */
+    }
+    return null;
+  }
+}
diff --git a/web/root/telnet/tools/Makefile b/web/root/telnet/tools/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..860d4590dc5bf416ef3e224ae7fd3a0f0833d562
--- /dev/null
+++ b/web/root/telnet/tools/Makefile
@@ -0,0 +1,43 @@
+#
+# This file is part of "The Java Telnet Applet".
+#
+# This is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# "The Java Telnet Applet" is distributed in the hope that it will be 
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with The JAVA Telnet Applet; see the file COPYING.  If not, write to 
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+OPT	= -O
+DEBUG	= -g
+
+.SUFFIXES: .java .class .html
+
+.java.class:
+	javac -classpath ../:$(CLASSPATH) $(OPT) $(DEBUG) $<
+
+.class.html:	
+	(env CLASSPATH=../:$(CLASSPATH); appletviewer $@)
+
+all: proxy.class 
+
+relay: mrelayd relayd
+
+clean:	
+	rm -f *~ 
+
+realclean:	clean
+	rm -f *.class relayd mrelayd
+
+# dependencies
+
+proxy.class: proxy.java
+redirector.class: proxy.java
diff --git a/web/root/telnet/tools/mrelayd b/web/root/telnet/tools/mrelayd
new file mode 100644
index 0000000000000000000000000000000000000000..0a3055f16fd0983a841829f111321214a51b3c42
Binary files /dev/null and b/web/root/telnet/tools/mrelayd differ
diff --git a/web/root/telnet/tools/mrelayd.c b/web/root/telnet/tools/mrelayd.c
new file mode 100644
index 0000000000000000000000000000000000000000..0b44785007916f39d6b4faf6dba7285b4ae1596f
--- /dev/null
+++ b/web/root/telnet/tools/mrelayd.c
@@ -0,0 +1,566 @@
+/**
+ * mrelayd.c -- a relay daemon
+ * --
+ * $Id$
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* mrelayd.c (c) 1996,1997 Marcus Meissner <marcus@mud.de> */
+
+/* Compile with: cc -o relayd relayd.c
+ *           or: gcc -o relayd relayd.c
+ * Solaris: (g)cc -o relayd relayd.c -lsocket -lnsl
+ */
+
+/* this program expects the string:
+ * "relay <hostname> <port>" or "relay <hostname>"
+ * after connecting. It will then try to connect to the specified host
+ * if failures occur, it will terminate the connection.
+ */
+
+/* adjust this to a reasonable limit */
+#define MAXUSERS  120
+
+/* message printed if all slots are used ... */
+#define FAILMESSAGE "Sorry, all slots are full.\r\n"
+
+/* string printed before connection */
+#define RELAYHEADER "Relayd $Revision$ (c) Marcus Meissner\r\n"
+
+/* the tcp port this demons is listening on ... */
+#define LISTENPORT  31415
+
+/* default connect port (telnet) */
+#define DEFAULTPORT 23
+
+/* default buffersize */
+#define DEFAULTSIZE	2000
+
+#include <stdio.h>
+#ifdef _WIN32
+#include <winsock.h>
+#include <signal.h>
+#define ioctl ioctlsocket
+#define read(a,b,c) recv(a,b,c,0)
+#define write(a,b,c) send(a,b,c,0)
+#define close _lclose
+#define EINTR WSAEINTR
+#define perror xperror
+void xperror(char *s) {
+	fprintf(stderr,"%s: %d\n",s,GetLastError());
+}
+#else
+#include <sys/time.h>
+#include <unistd.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <sys/errno.h>
+#include <sys/signal.h>
+#include <sys/fcntl.h>
+#include <sys/ioctl.h>
+#endif
+#include <memory.h>
+#include <malloc.h>
+#include <string.h>
+#include <sys/types.h>
+
+#if defined(sun) && defined(__GNUC__)
+int socket(int,int,int);
+int shutdown(int,int);
+int close(int);
+int bind(int,struct sockaddr*,int);
+int listen(int,int);
+void bzero(char*,int);
+int select(int,fd_set *,fd_set*,fd_set*,struct timeval*);
+int accept(int,struct sockaddr*,int*);
+int connect(int,struct sockaddr*,int);
+int recvfrom(int,char*,int,int,struct sockaddr*,int*);
+/*void perror(char*); SLOWLARIS HASS*/
+/*int sendto(int,char*,int,int,struct sockaddr*,int); SLOWLARIS HASS*/
+#endif
+
+#ifdef hpux
+/* redefinition... to avoid prototype in <time.h> */
+#define FD_CAST int
+#endif
+
+#ifdef sgi
+void bzero(void*,int);
+#endif
+
+#ifndef FD_CAST
+#define FD_CAST fd_set
+#endif
+
+extern int errno;
+
+struct relay {
+	char	*inbuf,*outbuf;
+	int	infd,outfd,incur,outcur,insize,outsize;
+	struct	sockaddr_in	inaddr,outaddr;
+	int	state;
+#define STATE_ACCEPTED		0
+#define STATE_OK		1
+	int	flags;
+#define FLAG_EOF_USER		1
+#define FLAG_EOF_TARGET		2
+#define FLAG_CLOSED_TARGET	4
+#define FLAG_CLOSED_USER	8
+} *relays = NULL;
+int nrofrelays = 0;
+
+void*
+xmalloc(int size) {
+	void*x;
+
+	x=malloc(size);
+	if (!x && size) {
+		fprintf(stderr,"Out of memory, exiting.\n");
+		exit(1);
+	}
+	return x;
+}
+
+void*
+xrealloc(void *y,int size) {
+	void*x;
+
+	x=realloc(y,size);
+	if (!x && size) {
+		fprintf(stderr,"Out of memory, exiting.\n");
+		exit(1);
+	}
+	return x;
+}
+
+static int
+fd_make_nonblocking(int fd) {
+  int     isnonblock=0;
+
+#ifdef FIONBIO
+  if (!isnonblock) {
+    int     b;
+    b=1;
+    if (-1==ioctl(fd,FIONBIO,&b)) {
+      perror("ioctl FIONBIO");
+    } else
+      isnonblock=1;
+  }
+#endif
+#ifdef O_NDELAY
+  if (!isnonblock) {
+    int     flags;
+
+    if (-1==(flags=fcntl(fd,F_GETFL))) {
+      perror("fcntl F_GETFL");
+    } else {
+      flags|=O_NDELAY;
+      if (-1==fcntl(fd,F_SETFL,flags)) {
+        perror("fcntl F_SETFL  O_NDELAY");
+      } else
+        isnonblock=1;
+    }
+  }
+#endif
+#ifdef O_NONBLOCK
+  if (!isnonblock) {
+    int     flags;
+
+    if (-1==(flags=fcntl(fd,F_GETFL))) {
+      perror("fcntl F_GETFL");
+    } else {
+      flags|=O_NONBLOCK;
+      if (-1==fcntl(fd,F_SETFL,flags)) {
+        perror("fcntl F_SETFL  O_NONBLOCK");
+      } else
+        isnonblock=1;
+    }
+  }
+#endif
+  return isnonblock;
+}
+
+void
+clean_connection(struct relay *relay) {
+  if (!relay) return;
+  if (relay->outfd>=0) {
+    if (-1==close(relay->outfd))
+      perror("close");
+    relay->outfd=-1;
+  }
+  if (relay->infd>=0) {
+    if (-1==close(relay->infd))
+      perror("close");
+    relay->infd=-1;
+  }
+  free(relay->outbuf);free(relay->inbuf);
+  memcpy(relay,relay+1,sizeof(struct relay)*(nrofrelays-(relay-relays)-1));
+  relays = xrealloc(relays,sizeof(struct relay)*(--nrofrelays));
+}
+
+void
+main(argc,argv)
+int argc;
+char  **argv;
+{
+  int i,j,res;
+  int acfd;
+  struct  sockaddr_in acsa;
+  char	readbuf[1000],relaystring[1000];
+  struct  in_addr targetaddr;
+#ifdef _WIN32 
+  {
+	WSADATA wsad;
+	
+	WSAStartup(0x0101,&wsad);
+  }
+#else
+  close(0);
+  close(1);
+#endif
+#ifdef SIGPIPE
+  signal(SIGPIPE,SIG_IGN);
+#endif
+#ifdef SIGHUP
+  signal(SIGHUP,SIG_IGN); /* don't terminate on session detach */
+#endif
+  strcpy(relaystring,FAILMESSAGE);
+  if (-1==(acfd=socket(PF_INET,SOCK_STREAM,0))) {
+    perror("socket(accept_socket)");
+    exit(1);
+  }
+
+  acsa.sin_family=AF_INET;
+  acsa.sin_port=htons(LISTENPORT);
+  acsa.sin_addr.s_addr=INADDR_ANY;
+#ifdef SO_REUSEADDR
+  {
+    int reuseit=1;
+    if (-1==setsockopt(acfd,SOL_SOCKET,SO_REUSEADDR,(char*)&reuseit,sizeof(reuseit)))
+	perror("setsockopt SOL_SOCKET SO_REUSEADDR");
+  }
+#endif
+  if (-1==bind(acfd,(struct sockaddr*)&acsa,sizeof(struct sockaddr_in))) {
+    perror("bind");
+    exit(1);
+  }
+  /* 5 is usual the maximum anyway */
+  if (-1==listen(acfd,5)) {
+    perror("listen");
+    exit(1);
+  }
+  while (1) {
+    fd_set  readfds,writefds;
+    int width;
+
+    width=3;
+    if (acfd>=width)
+      width=acfd+1;
+restart_select:
+    FD_ZERO(&readfds);FD_ZERO(&writefds);
+    FD_SET(acfd,&readfds);
+    for (i=nrofrelays;i--;) {
+      struct relay *relay = relays+i;
+
+      /* both sides closed? -> clean */
+      if ((relay->flags & (FLAG_CLOSED_TARGET|FLAG_CLOSED_USER)) ==
+      	(FLAG_CLOSED_TARGET|FLAG_CLOSED_USER)
+      ) {
+      	clean_connection(relay);
+	continue;
+      }
+      /* transmitted all stuff left to user? -> close */
+      if ((relay->flags&(FLAG_CLOSED_TARGET|FLAG_EOF_TARGET))&&(!relay->outcur)) {
+	clean_connection(relay);
+	continue;
+      }
+      /* transmitted all stuff left to target? -> close */
+      if ((relay->flags&(FLAG_CLOSED_USER|FLAG_EOF_USER))&&(!relay->incur)) {
+	clean_connection(relay);
+	continue;
+      }
+
+      if (relay->outfd>=0) {
+        /*need to do that... else it will cause load 1*/
+        if (relay->incur)
+          FD_SET(relay->outfd,&writefds);
+	if (!(relay->flags & FLAG_EOF_TARGET))
+	    FD_SET(relay->outfd,&readfds);
+        if (relay->outfd>=width)
+          width=relay->outfd+1;
+      }
+      if (relay->infd>=0) {
+        /*need to do that... else it will cause load 1*/
+        if (relay->outcur)
+          FD_SET(relay->infd,&writefds);
+	if (!(relay->flags & FLAG_EOF_USER))
+          FD_SET(relay->infd,&readfds);
+        if (relay->infd>=width)
+          width=relay->infd+1;
+      }
+    }
+    if (-1==select(   width,
+          (FD_CAST*)&readfds,
+          (FD_CAST*)&writefds,
+          NULL,/*no exceptfds.*/
+          0)
+    ) {
+      if (errno!=EINTR)
+        perror("select");
+      else
+        goto  restart_select;
+    }
+    if (FD_ISSET(acfd,&readfds)) {
+      int afd;
+      int aclen;
+      struct  sockaddr_in conaddr;
+      struct relay *relay = NULL;
+
+      aclen=sizeof(struct sockaddr_in);
+      if (-1==(afd=accept(acfd,(struct sockaddr*)&conaddr,&aclen)))
+        perror("accept");
+      if (relays)
+	  relays=(struct relay*)xrealloc(relays,sizeof(struct relay)*(nrofrelays+1));
+      else
+	  relays=(struct relay*)xmalloc(sizeof(struct relay));
+      nrofrelays++;
+      relay = relays+(nrofrelays-1);
+      relay->inbuf	= xmalloc(DEFAULTSIZE);
+      relay->outbuf	= xmalloc(DEFAULTSIZE);
+      relay->insize	= DEFAULTSIZE;
+      relay->outsize	= DEFAULTSIZE;
+      relay->flags	= 0;
+      relay->incur	= 0;
+      relay->outcur	= 0;
+      relay->infd	= afd;
+      relay->outfd	= -1;
+      relay->state	= STATE_ACCEPTED;
+      memcpy(&relay->inaddr,&conaddr,sizeof(struct sockaddr_in));
+      if (nrofrelays>=MAXUSERS) {
+        strcpy(relay->outbuf,relaystring);
+	relay->outcur = strlen(relaystring)+1;
+	relay->state = STATE_OK;
+	relay->flags = FLAG_CLOSED_TARGET;
+      }
+#ifdef SO_LINGER
+      {
+	struct linger sol;
+	sol.l_linger = 5;
+	sol.l_onoff = 1;
+	if (-1==setsockopt(acfd,SOL_SOCKET,SO_LINGER,(char*)&sol,sizeof(sol)))
+	    perror("setsockopt SOL_SOCKET SO_LINGER");
+      }
+#endif
+    }
+    for (i=nrofrelays;i--;) {
+      struct relay *relay = relays+i;
+
+      if ((relay->infd>=0) && FD_ISSET(relay->infd,&readfds)) {
+        do {
+          if (-1==(res=read(relay->infd,readbuf,1000))) {
+            if (errno==EINTR)
+              break;
+            /* user side has broken the connection */
+	    close(relay->infd);relay->infd=-1;
+	    relay->flags |= FLAG_CLOSED_USER;
+            break;
+          }
+          break;
+        } while (1);
+        if (res==0) {
+	  /* we read the End Of File marker. but we still have to write 
+	   * the rest of the text
+	   */
+	  relay->flags |= FLAG_EOF_USER;
+        }
+        if (res>0) {
+          readbuf[res]='\0';
+          while (relay->incur+res>=relay->insize) {
+            relay->inbuf=xrealloc(relay->inbuf,relay->insize*2);
+            relay->insize*=2;
+          }
+          memcpy(relay->inbuf+relay->incur,readbuf,res+1);
+          relay->incur+=res;
+        }
+        if (	(relay->outfd==-1) &&
+		(relay->state==STATE_ACCEPTED) &&
+		memchr(relay->inbuf,'\n',relay->incur)
+        ) {
+          char  sendbuf[200];
+          struct  hostent *hp;
+          char  *s,*nextchar,*tmp;
+          int port;
+
+          s = memchr(relay->inbuf,'\n',relay->incur);
+          if (!s)
+            continue;
+          *s='\0';
+          nextchar=s+1;
+          if ((s=memchr(relay->inbuf,'\r',(s-relay->inbuf))))
+            *s='\0';
+
+
+	  relay->state = STATE_OK;
+
+          tmp = (char*)xmalloc(strlen(relay->inbuf));
+          if (2!=sscanf(relay->inbuf,"relay %s %d",
+            tmp,&port
+          )) {
+            if (!sscanf(relay->inbuf,"relay %s",tmp)) {
+
+              free(tmp);
+              /* we avoid telling potential hackers how to use this relay */
+	      sprintf(relay->outbuf,"550 Bad syntax. Go away.\n",tmp);
+	      relay->outcur = strlen(relay->outbuf);
+	      relay->flags = FLAG_CLOSED_TARGET;
+              continue;
+            } else
+              port = DEFAULTPORT;
+          }
+          hp=gethostbyname(tmp);
+          if (!hp) {/* not found */
+	    sprintf(relay->outbuf,"No hostentry for '%s'!\n",tmp);
+            free(tmp);
+	    relay->outcur = strlen(relay->outbuf);
+	    relay->flags = FLAG_CLOSED_TARGET;
+            continue;
+          }
+          memcpy(&targetaddr,hp->h_addr_list[0],sizeof(struct in_addr));
+          relay->outaddr.sin_family=AF_INET;
+          relay->outaddr.sin_port=htons(port);
+          memcpy(&(relay->outaddr.sin_addr),&targetaddr,4);
+          strcpy(sendbuf,RELAYHEADER);
+          relay->outcur=strlen(sendbuf);
+          memcpy(relay->outbuf,sendbuf,strlen(sendbuf)+1);
+          if (-1==(relay->outfd=socket(PF_INET,SOCK_STREAM,0)))
+            perror("socket(connect_socket)");
+#ifndef _WIN32
+          (void)fd_make_nonblocking(relay->outfd);
+#endif
+          if (  (-1==connect( relay->outfd,
+              (struct sockaddr*)&(relay->outaddr),
+              sizeof(struct sockaddr_in))
+#ifdef _WIN32
+				) && (WSAGetLastError()!=WSAEINPROGRESS)
+#else
+				) && (errno!=EINPROGRESS)
+#endif
+          ) {
+            sprintf(readbuf,"Connect to %s failed: %s\n",tmp,strerror(errno));
+            perror("connect");
+	    close(relay->outfd);relay->outfd=-1;
+	    relay->state = STATE_OK;
+	    relay->flags |= FLAG_CLOSED_TARGET;
+	    strcpy(relay->outbuf,readbuf);
+	    relay->outsize = strlen(readbuf)+1;
+            free(tmp);
+            continue;
+          }
+          free(tmp);
+#ifdef SEND_REMOTEIP
+          /* only useful if you want to tell the
+           * remotemud the _real_ host the caller
+           * is calling from
+           */
+          tmphp=gethostbyaddr(
+            (char*)(&(conaddr.sin_addr)),
+            sizeof(struct in_addr),
+            AF_INET
+          );
+          if (!tmphp) {
+            sprintf(sendbuf,"remoteip %s %s\n",
+              inet_ntoa(conaddr.sin_addr),
+              inet_ntoa(conaddr.sin_addr)
+            );
+          } else {
+            sprintf(sendbuf,"remoteip %s %s\n",
+              inet_ntoa(conaddr.sin_addr),
+              tmphp->h_name
+            );
+          }
+          memcpy(relay->inbuf,sendbuf,strlen(sendbuf)+1);
+          relay->incur=strlen(sendbuf);
+#else
+          relay->inbuf[0]='\0';
+          relay->incur=0;
+#endif
+        }
+      }
+      if ((relay->outfd>=0) && FD_ISSET(relay->outfd,&readfds)) {
+        do {
+          if (-1==(res=read(relay->outfd,readbuf,1000))) {
+            if (errno==EINTR)
+              continue;
+            /* the mudside has broken the
+             * connection. we still have
+             * to transmit the rest of
+             * the text
+             */
+            close(relay->outfd);relay->outfd=-1;
+	    relay->flags |= FLAG_CLOSED_TARGET;
+            break;
+          }
+          break;
+        } while (1);
+        if (res==0) {
+	  /* we read the End Of File marker. but we still have to write 
+	   * the rest of the text
+	   */
+	  relay->flags |= FLAG_EOF_TARGET;
+	}
+        if (res>0) {
+          /* 0 is not automagically appended. */
+          readbuf[res]='\0';
+          while (relay->outcur+res>=relay->outsize) {
+            relay->outbuf=xrealloc(relay->outbuf,relay->outsize*2);
+            relay->outsize*=2;
+          }
+          memcpy(relay->outbuf+relay->outcur,readbuf,res+1);
+          relay->outcur+=res;
+        }
+      }
+      if ((relay->infd>=0) && FD_ISSET(relay->infd,&writefds)) {
+        j=relay->outcur;
+        if (-1==(res=write(relay->infd,relay->outbuf,j))) {
+          if (errno!=EINTR) {
+	    close(relay->infd);relay->infd=-1;
+	    relay->flags |= FLAG_CLOSED_USER;
+          }
+        }
+        if (res>0) {
+          memcpy(relay->outbuf,relay->outbuf+res,relay->outcur-res);
+          relay->outcur-=res;
+        }
+      }
+      if ((relay->outfd>=0) && FD_ISSET(relay->outfd,&writefds)) {
+        j=relay->incur;
+        if (-1==(res=write(relay->outfd,relay->inbuf,j))) {
+          if (errno!=EINTR) {
+            close(relay->outfd);relay->outfd=-1;
+	    relay->flags |= FLAG_CLOSED_TARGET;
+          }
+        }
+        if (res>0) {
+          memcpy(relay->inbuf,relay->inbuf+res,relay->incur-res);
+          relay->incur-=res;
+        }
+      }
+    }
+  }
+}
diff --git a/web/root/telnet/tools/mrelayd.exe b/web/root/telnet/tools/mrelayd.exe
new file mode 100755
index 0000000000000000000000000000000000000000..0a5ba6e832cc1a91229b0c264c1af42487238aff
Binary files /dev/null and b/web/root/telnet/tools/mrelayd.exe differ
diff --git a/web/root/telnet/tools/proxy.class b/web/root/telnet/tools/proxy.class
new file mode 100644
index 0000000000000000000000000000000000000000..c64e0eba0f001753af79ad00ba71688834e86782
Binary files /dev/null and b/web/root/telnet/tools/proxy.class differ
diff --git a/web/root/telnet/tools/proxy.java b/web/root/telnet/tools/proxy.java
new file mode 100644
index 0000000000000000000000000000000000000000..00ecfc85f3a18079935a12e23385a2946315332e
--- /dev/null
+++ b/web/root/telnet/tools/proxy.java
@@ -0,0 +1,225 @@
+/**
+ * proxy -- a proxy server for telnet
+ * --
+ * $Id$
+ * $timestamp: Tue May 27 15:08:19 1997 by Matthias L. Jugel :$
+ *
+ * This file is part of "The Java Telnet Applet".
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be 
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+import java.net.*;
+import java.io.*;
+import java.util.*;
+
+/**
+ * proxy class -- implements a proxy server to redirect network access
+ * @author Matthias L. Jugel, Marcus Meißner
+ * @version $Id$
+ */
+
+public class proxy implements Runnable
+{
+  String remoteHost;
+  int localPort, remotePort;
+
+  Thread listener, connection;
+
+  ServerSocket server;
+
+  /**
+   * Create a server socket and start listening on the local port.
+   * @param lport local port
+   * @param raddr address of the destination
+   * @param rport port on the destination host
+   */
+  public proxy(int lport, String raddr, int rport)
+  {
+    localPort = lport;
+    remoteHost = raddr; remotePort = rport;
+    
+    log("destination host is "+remoteHost+" at port "+remotePort);
+    try {
+      server = new ServerSocket(localPort);
+    } catch(Exception e) {
+      System.err.println("proxy: error: cannot create server socket");
+    }
+    log("listening on port "+localPort);
+
+    listener = new Thread(this);
+    listener.setPriority(Thread.MIN_PRIORITY);
+    listener.start();
+  }
+  
+  /**
+   * This method is called when the application is run on the commandline.
+   * It takes two or three arguments:
+   * usage: java proxy local-port destination-host destination-port
+   * @param args The command line arguments
+   */
+  public static void main(String args[]) 
+  {
+    String remoteHost = "";
+    int localPort = 0, remotePort = 0;
+    
+    if(args.length < 2)
+    {
+      System.err.println("proxy: usage: proxy <port> "+
+                         "<destination host> [<destination port>]");
+      System.exit(1);
+    }
+    try {
+      localPort = Integer.parseInt(args[0]);
+    } catch(Exception e) {
+      System.err.println("proxy: parameter <port>: number expected");
+      System.exit(1);
+    }
+    remoteHost = args[1];
+    if(args.length > 2)
+    {
+      try {
+        remotePort = Integer.parseInt(args[2]);
+      } catch(Exception e) {
+        System.err.println("proxy: parameter <destination port>: "+
+                           "number expected");
+        System.exit(1);
+      }
+    }
+
+    proxy me = new proxy(localPort, 
+                         remoteHost, (remotePort == 0 ? 23 : remotePort));
+  }
+
+  /**
+   * Cycle around until an error occurs and wait for incoming connections.
+   * An incoming connection will create two redirectors. One for
+   * local-host - destination-host and one for destination-host - local-host.
+   */
+  public void run()
+  {
+    while(true)
+    {
+      Socket localSocket = null;
+      try {
+        localSocket = server.accept();
+      } catch(Exception e) {
+        System.err.println("proxy: error: accept connection failed");
+        continue;
+      }
+      log("accepted connection from "+
+          localSocket.getInetAddress().getHostName());
+      try {
+        Socket destinationSocket = new Socket(remoteHost, remotePort);
+        log("connecting "+localSocket.getInetAddress().getHostName()+" <-> "+
+            destinationSocket.getInetAddress().getHostName());
+        redirector r1 = new redirector(localSocket, destinationSocket);
+        redirector r2 = new redirector(destinationSocket, localSocket);
+        r1.couple(r2);
+        r2.couple(r1);
+      } catch(Exception e) {
+        System.err.println("proxy: error: cannot create sockets");
+        try {
+          DataOutputStream os = new DataOutputStream(localSocket.getOutputStream());
+          os.writeChars("Remote host refused connection.\n");
+          localSocket.close();
+        } catch(IOException ioe) { ioe.printStackTrace(); }
+        continue;
+      }
+    }
+  }
+
+  private void log(String msg)
+  {
+    System.out.println("proxy: ["+new Date()+"] "+msg);
+  }
+}
+
+/**
+ * A class useful for the proxy server.
+ * This class takes over control of newly created connections and redirects
+ * the data streams.
+ */
+class redirector implements Runnable
+{
+  private redirector companion = null;
+  private Socket localSocket, remoteSocket;
+  private InputStream from;
+  private OutputStream to;
+  private byte[] buffer = new byte[4096];
+
+  /**
+   * redirector gets the streams from sockets
+   */
+  public redirector(Socket local, Socket remote)
+  {
+    try {
+      localSocket = local; 
+      remoteSocket = remote;
+      from = localSocket.getInputStream();
+      to = remoteSocket.getOutputStream();
+    } catch(Exception e) {
+      System.err.println("redirector: cannot get streams");
+    }
+  }
+
+  /**
+   * couple this redirector instance with another one (usually the other
+   * direction of the connection)
+   */
+  public void couple(redirector c) { 
+    companion = c; 
+    Thread listen = new Thread(this);
+    listen.start();
+  }
+
+  /**
+   * decouple us from our companion. This will let this redirector die after
+   * exiting from run()
+   */
+  public void decouple() { companion = null; }
+
+  /**
+   * read data from the input and write it to the destination stream until
+   * an error occurs or our companion is decoupled from us
+   */
+  public void run()
+  {
+    int count;
+    try {
+      while(companion != null) {
+        if((count = from.read(buffer)) < 0)
+          break;
+        to.write(buffer, 0, count);
+      }
+    } catch(Exception e) {
+      System.err.println("redirector: connection lost");
+    }
+    try {
+      from.close();
+      to.close();
+      localSocket.close();
+      remoteSocket.close();
+      // is our companion dead? no, then decouple, because we die
+      if(companion != null) companion.decouple();
+    } catch(Exception io) {
+      System.err.println("redirector: error closing streams and sockets");
+      io.printStackTrace();
+    }
+  }
+}
+
+      
diff --git a/web/root/telnet/tools/redirector.class b/web/root/telnet/tools/redirector.class
new file mode 100644
index 0000000000000000000000000000000000000000..4498f80091a1c4f9f291c23f9566a00b08ebb808
Binary files /dev/null and b/web/root/telnet/tools/redirector.class differ
diff --git a/web/root/telnet/tools/relayd b/web/root/telnet/tools/relayd
new file mode 100644
index 0000000000000000000000000000000000000000..8844ac1707c457d32930d644f461d030b5af9580
Binary files /dev/null and b/web/root/telnet/tools/relayd differ
diff --git a/web/root/telnet/tools/relayd.c b/web/root/telnet/tools/relayd.c
new file mode 100644
index 0000000000000000000000000000000000000000..82ccc9b85571db0318ce4f3b088e7c9bd0a52560
--- /dev/null
+++ b/web/root/telnet/tools/relayd.c
@@ -0,0 +1,448 @@
+/**
+ * relayd.c -- a relay daemon (using one targethost/port)
+ * --
+ * $Id$
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * "The Java Telnet Applet" is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* relayd.c (c) 1996,1997 Marcus Meissner <marcus@mud.de> */
+
+/* Compile with: cc -o relayd relayd.c
+ *           or: gcc -o relayd relayd.c
+ * Solaris: (g)cc -o relayd relayd.c -lsocket -lnsl
+ */
+
+/* this program expects the string:
+ * "relay <hostname> <port>" or "relay <hostname>"
+ * after connecting. It will then try to connect to the specified host
+ * if failures occur, it will terminate the connection.
+ */
+
+/* adjust this to a reasonable limit */
+#define MAXUSERS  120
+
+/* message printed if all slots are used ... */
+#define FAILMESSAGE "Sorry, all slots are full.\r\n"
+
+/* string printed before connection */
+#define RELAYHEADER "Relayd (c) Marcus Meissner\r\n"
+
+#include <stdio.h>
+#ifdef _WIN32
+#include <stdlib.h>
+#include <errno.h>
+#include <signal.h>
+#include <winsock.h>
+#include <io.h>
+#define ioctl ioctlsocket
+#define write(h,buf,size) send(h,buf,size,0)
+#define read(a,b,c) recv(a,b,c,0)
+#define close _lclose
+#define EINPROGRESS WSAEWOULDBLOCK
+#else
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <sys/errno.h>
+#include <sys/signal.h>
+#include <sys/fcntl.h>
+#include <sys/ioctl.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#endif
+#include <memory.h>
+#include <malloc.h>
+#include <string.h>
+#include <sys/types.h>
+
+
+
+#if defined(sun) && defined(__GNUC__)
+int socket(int,int,int);
+int shutdown(int,int);
+int close(int);
+int bind(int,struct sockaddr*,int);
+int listen(int,int);
+void bzero(char*,int);
+int select(int,fd_set *,fd_set*,fd_set*,struct timeval*);
+int accept(int,struct sockaddr*,int*);
+int connect(int,struct sockaddr*,int);
+int recvfrom(int,char*,int,int,struct sockaddr*,int*);
+/*void perror(char*); SLOWLARIS HASS*/
+/*int sendto(int,char*,int,int,struct sockaddr*,int); SLOWLARIS HASS*/
+#endif
+
+#ifdef hpux
+/* redefinition... to avoid prototype in <time.h> */
+#define FD_CAST int
+#endif
+
+#ifdef sgi
+void bzero(void*,int);
+#endif
+
+#ifndef FD_CAST
+#define FD_CAST fd_set
+#endif
+
+extern int errno;
+
+char  *inbuf[MAXUSERS],*outbuf[MAXUSERS];
+int insize[MAXUSERS],outsize[MAXUSERS];
+int incur[MAXUSERS],outcur[MAXUSERS];
+int outfd[MAXUSERS],infd[MAXUSERS];
+struct  sockaddr_in inaddr[MAXUSERS],outaddr[MAXUSERS];
+
+#ifdef _WIN32
+#define perror xperror
+void xperror(char *str) {
+	fprintf(stderr,"%s: %d\n",str,GetLastError());
+}
+#endif
+
+static int
+fd_make_nonblocking(int fd) {
+  int     isnonblock=0;
+
+#ifdef FIONBIO
+  if (!isnonblock) {
+    int     b;
+    b=1;
+    if (-1==ioctl(fd,FIONBIO,&b)) {
+      perror("ioctl FIONBIO");
+    } else
+      isnonblock=1;
+  }
+#endif
+#ifdef O_NDELAY
+  if (!isnonblock) {
+    int     flags;
+
+    if (-1==(flags=fcntl(fd,F_GETFL))) {
+      perror("fcntl F_GETFL");
+    } else {
+      flags|=O_NDELAY;
+      if (-1==fcntl(fd,F_SETFL,flags)) {
+        perror("fcntl F_SETFL  O_NDELAY");
+      } else
+        isnonblock=1;
+    }
+  }
+#endif
+#ifdef O_NONBLOCK
+  if (!isnonblock) {
+    int     flags;
+
+    if (-1==(flags=fcntl(fd,F_GETFL))) {
+      perror("fcntl F_GETFL");
+    } else {
+      flags|=O_NONBLOCK;
+      if (-1==fcntl(fd,F_SETFL,flags)) {
+        perror("fcntl F_SETFL  O_NONBLOCK");
+      } else
+        isnonblock=1;
+    }
+  }
+#endif
+  return isnonblock;
+}
+
+void
+clean_connection(i)
+int i;
+{
+  if (outfd[i]>=0) {
+    if (-1==close(outfd[i]))
+      perror("close");
+    outfd[i]=-1;
+  }
+  if (infd[i]>=0) {
+    if (-1==close(infd[i]))
+      perror("close");
+    infd[i]=-1;
+  }
+  incur[i]=outcur[i]=0;
+  outbuf[i][0]=inbuf[i][0]='\0';
+}
+
+void
+usage() {
+   fprintf(stderr,"Usage: relayd <listenport> <targethost> [<targetport>]\n");
+}
+
+void
+main(argc,argv)
+int argc;
+char  **argv;
+{
+  int i,j,res;
+  int acfd;
+  struct  sockaddr_in acsa;
+  char  readbuf[1000],relaystring[1000];
+  struct  in_addr targetaddr;
+  struct  hostent *hp;
+  char *targethost;
+  int  port,targetport;
+  
+#ifdef _WIN32 
+  {
+	WSADATA wsad;
+	
+	WSAStartup(0x0101,&wsad);
+  }
+#else
+  close(0);
+  close(1);
+#endif
+
+#ifdef SIGPIPE
+  signal(SIGPIPE,SIG_IGN);
+#endif  
+  switch (argc) {
+  default:
+  case 1:
+  case 2:
+    usage();
+    exit(1);
+  case 3:
+    if (!sscanf(argv[1],"%d",&port)) {
+      usage();
+      exit(1);
+    }
+    targethost = argv[2];
+    targetport = 23;
+    break;
+  case 4:
+    if (!sscanf(argv[1],"%d",&port)) {
+      usage();exit(1);
+    }
+    if (!sscanf(argv[3],"%d",&targetport)) {
+      usage();exit(1);
+    }
+    targethost=argv[2];
+    break;
+  }
+  strcpy(relaystring,FAILMESSAGE);
+  if (-1==(acfd=socket(PF_INET,SOCK_STREAM,0))) {
+    perror("socket(accept_socket)");
+    exit(1);
+  }
+  for (i=MAXUSERS;i--;) {
+    inbuf[i]=malloc(10000*sizeof(char));
+    outbuf[i]=malloc(10000*sizeof(char));
+    inbuf[i][0]='\0';outbuf[i][0]='\0';
+
+    insize[i]=10000;incur[i]=0;
+
+    outsize[i]=10000;outcur[i]=0;
+    outfd[i]=infd[i]=-1;
+  }
+
+  acsa.sin_family=AF_INET;
+  acsa.sin_port=htons(port);
+  acsa.sin_addr.s_addr=INADDR_ANY;
+  if (-1==bind(acfd,(struct sockaddr*)&acsa,sizeof(struct sockaddr_in))) {
+    perror("bind");
+    exit(1);
+  }
+  /* 5 is usual the maximum anyway */
+  if (-1==listen(acfd,5)) {
+    perror("listen");
+    exit(1);
+  }
+  while (1) {
+    fd_set  readfds,writefds;
+    int width;
+
+    width=3;
+    if (acfd>=width)
+      width=acfd+1;
+restart_select:
+    FD_ZERO(&readfds);FD_ZERO(&writefds);
+    FD_SET(acfd,&readfds);
+    for (i=MAXUSERS;i--;) {
+      if (outfd[i]>=0) {
+        /*need to do that... else it will cause load 1*/
+        if (incur[i])
+          FD_SET(outfd[i],&writefds);
+        FD_SET(outfd[i],&readfds);
+        if (outfd[i]>=width)
+          width=outfd[i]+1;
+      }
+      if (infd[i]>=0) {
+        /*need to do that... else it will cause load 1*/
+        if (outcur[i])
+          FD_SET(infd[i],&writefds);
+        FD_SET(infd[i],&readfds);
+        if (infd[i]>=width)
+          width=infd[i]+1;
+      }
+    }
+    if (-1==select(   width,
+          (FD_CAST*)&readfds,
+          (FD_CAST*)&writefds,
+          NULL,/*no exceptfds.*/
+          0)
+    ) {
+      if (errno!=EINTR)
+        perror("select");
+      else
+        goto  restart_select;
+    }
+    if (FD_ISSET(acfd,&readfds)) {
+      int afd;
+      int aclen;
+      struct  sockaddr_in conaddr;
+
+      aclen=sizeof(struct sockaddr_in);
+      if (-1==(afd=accept(acfd,(struct sockaddr*)&conaddr,&aclen)))
+        perror("accept");
+      for (i=MAXUSERS;i--;)
+        if ((infd[i]==-1) && (outfd[i]==-1))
+          break;
+      if (i==-1) {
+        write(afd,relaystring,strlen(relaystring));
+        close(afd);
+      } else {
+        char  sendbuf[200];
+        infd[i]=afd;
+        memcpy(&inaddr[i],&conaddr,sizeof(struct sockaddr_in));
+        /* outfd setting delayed until we get
+         * to the first line
+         */
+        hp=gethostbyname(targethost);
+        if (!hp) {/* not found */
+          clean_connection(i);
+          continue;
+        }
+        memcpy(&targetaddr,hp->h_addr_list[0],sizeof(struct in_addr));
+        outaddr[i].sin_family=AF_INET;
+        outaddr[i].sin_port=htons(targetport);
+        memcpy(&(outaddr[i].sin_addr),&targetaddr,4);
+        strcpy(sendbuf,RELAYHEADER);
+        outcur[i]=strlen(sendbuf);
+        memcpy(outbuf[i],sendbuf,strlen(sendbuf)+1);
+        if (-1==(outfd[i]=socket(PF_INET,SOCK_STREAM,0)))
+          perror("socket(connect_socket)");
+#ifndef _WIN32
+        (void)fd_make_nonblocking(outfd[i]);
+#endif        
+		if (  (-1==connect( outfd[i],
+            (struct sockaddr*)&outaddr[i],
+            sizeof(struct sockaddr_in))
+#ifdef _WIN32
+        ) && (WSAGetLastError()!=WSAEWOULDBLOCK)
+#else  
+        ) && (errno!=EINPROGRESS)
+#endif
+        ) {
+#ifdef _WIN32
+			sprintf(readbuf,"Connect to %s failed: %d\n",targethost,GetLastError());
+#else
+          sprintf(readbuf,"Connect to %s failed.\n",targethost);
+#endif
+          perror("connect");
+          if (-1==write(infd[i],readbuf,strlen(readbuf)))
+            perror("write");
+          clean_connection(i);
+          continue;
+        }
+        inbuf[i][0]='\0';
+        incur[i]=0;
+      }
+    }
+    for (i=MAXUSERS;i--;) {
+      if ((infd[i]>=0) && FD_ISSET(infd[i],&readfds)) {
+        do {
+          if (-1==(res=read(infd[i],readbuf,1000))) {
+            if (errno==EINTR)
+              continue;
+            /* user side has broken the connection */
+            clean_connection(i);
+            break;
+          }
+          break;
+        } while (1);
+        if (res==0) /* EOF */
+          clean_connection(i);
+        if (res>0) {
+          readbuf[res]='\0';
+          while (incur[i]+res>=insize[i]) {
+            inbuf[i]=realloc(inbuf[i],insize[i]*2);
+            insize[i]*=2;
+          }
+          memcpy(inbuf[i]+incur[i],readbuf,res+1);
+          incur[i]+=res;
+        }
+      }
+      if ((outfd[i]>=0) && FD_ISSET(outfd[i],&readfds)) {
+        do {
+          if (-1==(res=read(outfd[i],readbuf,1000))) {
+            if (errno==EINTR)
+              continue;
+            /* the mudside has broken the
+             * connection. we still have
+             * to transmit the rest of
+             * the text
+             */
+            outfd[i]=-1;
+            break;
+          }
+          break;
+        } while (1);
+        if (res==0)
+          clean_connection(i);
+        if (res>0) {
+          /* 0 is not automagically appended. */
+          readbuf[res]='\0';
+          while (outcur[i]+res>=outsize[i]) {
+            outbuf[i]=realloc(outbuf[i],outsize[i]*2);
+            outsize[i]*=2;
+          }
+          memcpy(outbuf[i]+outcur[i],readbuf,res+1);
+          outcur[i]+=res;
+        }
+      }
+      if ((infd[i]>=0) && FD_ISSET(infd[i],&writefds)) {
+        j=outcur[i];
+        if (-1==(res=write(infd[i],outbuf[i],j))) {
+          if (errno!=EINTR) {
+            clean_connection(i);
+          }
+        }
+        if (res>0) {
+          memcpy(outbuf[i],outbuf[i]+res,outcur[i]-res);
+          outcur[i]-=res;
+        }
+      }
+      if ((outfd[i]>=0) && FD_ISSET(outfd[i],&writefds)) {
+        j=incur[i];
+        if (-1==(res=write(outfd[i],inbuf[i],j))) {
+          if (errno!=EINTR) {
+            outfd[i]=-1;
+            /*clean_connection(i);*/
+          }
+        }
+        if (res>0) {
+          memcpy(inbuf[i],inbuf[i]+res,incur[i]-res);
+          incur[i]-=res;
+        }
+      }
+    }
+  }
+}
diff --git a/web/root/telnet/tools/relayd.exe b/web/root/telnet/tools/relayd.exe
new file mode 100755
index 0000000000000000000000000000000000000000..dec7203e0165ab34e6f255165cd12ffb0a183322
Binary files /dev/null and b/web/root/telnet/tools/relayd.exe differ