diff -uNr ../emacspeak-6.0.orig/Makefile ./Makefile
--- ../emacspeak-6.0.orig/Makefile	Mon May  5 13:08:48 1997
+++ ./Makefile	Sun Jun  1 13:29:54 1997
@@ -323,6 +323,7 @@
 	@echo "See Makefile for instructions." 
 	@echo "Type make info for  the online  manual."
 	@echo "Make sure you read the Emacs info pages" 
+	make config CWD=$(libdir)
 
 info:
 	cd info; make 
@@ -377,7 +378,6 @@
 # {{{  user level target-- install uninstall
 
 install:
-	make config CWD=$(libdir)
 	if test ! $(libdir) = $(CWD) ; then \
 	  if test ! -d $(libparentdir) ; then mkdir $(libparentdir); fi ; \
 	  if test ! -d $(libdir) ; then mkdir $(libdir); fi ; \
diff -uNr ../emacspeak-6.0.orig/Makefile.orig ./Makefile.orig
--- ../emacspeak-6.0.orig/Makefile.orig	Wed Dec 31 19:00:00 1969
+++ ./Makefile.orig	Mon May  5 13:08:48 1997
@@ -0,0 +1,575 @@
+# $Id: Makefile,v 6.2 1997/05/05 17:08:40 raman Exp $
+# $Author: raman $ 
+# Description:  Makefile for Emacspeak 
+# Keywords: Emacspeak, Dectalk, Makefile 
+# {{{ LCD Entry: 
+
+# LCD Archive Entry:
+# emacspeak| T. V. Raman |raman@crl.dec.com 
+# A speech interface to Emacs |
+# $date: $ |
+#  $Revision: 6.2 $ | 
+# Location undetermined
+#
+
+# }}}
+# {{{ Copyright:  
+
+
+# Copyright (c) 1994, 1995 by Digital Equipment Corporation.
+# All Rights Reserved. 
+#
+# This file is not part of GNU Emacs, but the same permissions apply.
+#
+# GNU Emacs 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.
+#
+# GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# }}}
+# {{{ Installation instructions:
+
+                # Set some Make  configuration variables here.
+# If you have a Dectalk connected to a serial port, for example, /dev/tty00 
+# specify it in the following line:
+DECTALK = > /dev/null 
+# and the installation will give you spoken feedback.
+# Alternately, you can specify this on the make command line as in
+#    make "DECTALK =>/dev/tty00"
+# Note: (the above is only for spoken feedback during compilation.)
+# If you're reading this, then you've already unpacked the tar archive
+# and extracted the sources in a directory.
+# cd to the  directory where you placed the sources.
+# This directory is referred to henceforth as EMACSPEAK_DIR.
+# and then type
+#    make config
+# Now type
+#    make emacspeak 
+# to compile the files, then (as superuser)
+#    make install
+# to install them.
+#
+# By default, files are installed in subdirectories of /usr --
+# that is, executables in /usr/bin, .info files in
+# /usr/info, and compiled files in /usr/share/lib/emacs/site-lisp/emacspeak. 
+# If you want them somewhere else, you may add a "PREFIX=" parameter to all
+# make commands.  For example, to place files in subdirectories /usr
+# instead of /usr, use these commands:
+#    make PREFIX=/usr install
+#
+#Note: The intent is to place emacspeak in a subdirectory of site-lisp.
+#Newer emacsuns have this under /usr/local/share (or /usr/share)
+#older emacsuns used /usr/local/lib/...
+# emacspeak uses tclx --extended tcl-- for the synthesizer driver.
+# Note:  Extended TCL  --tclx-- is *not* tclsh
+# Setting up synthesizer driver:
+# Emacspeak comes with two drivers written in TCL:
+# 1) dtk-exp for the Dectalk Express
+# 2) dtk-mv for the MultiVoice and older Dectalk 3 synthesizers
+# emacspeak uses the shell environment variable DTK_PROGRAM to determine 
+# which driver to use, and the shell environment variable DTK_PORT
+# to determine the port where the Dectalk is connected. 
+# Examples: If using csh or tcsh 
+#    setenv DTK_PROGRAM "dtk-exp"
+# or if using bash
+#    export DTK_PROGRAM=dtk-exp
+# By default the port is /dev/tty00 on ultrix/osf1, and /dev/ttyS0 on linux.
+#
+# Finally, make sure that tcl  is present in your search path by typing 
+#    which tcl
+# Assuming you're using dtk-exp: 
+# Check that the dtk-exp can be run by typing
+#    tcl <emacspeak-dir>/dtk-exp 
+# You should hear the Dectalk speak and get a TCL prompt if everything is okay.
+# Next, check that your serial port is working correctly, and that your stty 
+# settings are correct. You can do this by executing the following sequence 
+# of TCL commands in the TCL session you just started:
+#    dectalk_speak {this is a test. }
+# should speak the text within the braces.
+#    dectalk_stop
+# The above command stops speech.
+# You should see a TCL prompt when you execute it.
+# If things appear to hang when you execute dectalk_stop
+# i.e. you don't see a TCL prompt (%) then
+# a) The serial cable conecting your speech device is flaky
+# b) Your serial port is flaky
+# c) The stty settings on the port are incorrect for your system
+# In the case of (c) please report the problem
+# quit this tcl session by typing ctrl-d
+#
+# To use emacspeak you can do one of the following:
+# Add the line
+# (load-file (expand-file-name "<EMACSPEAK_DIR>/emacspeak-setup.el"))
+# to the start of your .emacs
+# This will start emacspeak every time you use emacs
+# or alternatively set the following alias.
+# If you use csh or tcsh  
+# alias emacspeak "emacs -q -l <EMACSPEAK_DIR>/emacspeak-setup.el -l $HOME/.emacs"
+# If you use bash (the default under linux)
+# alias emacspeak="emacs -q -l <EMACSPEAK_DIR>/emacspeak-setup.el -l $HOME/.emacs"
+# Note: in all of the above you should replace <EMACSPEAK_DIR> with your 
+# site-specific value. The distribution also creates a shell executable 
+# emacspeak.sh that does the same thing as the alias shown above. 
+
+# }}}
+# {{{  Site Configuration
+
+##### Site  Configuration #####
+PREFIX = /usr
+# where executables go
+bindir = ${PREFIX}/bin
+# where info files should go
+infodir = ${PREFIX}/info
+# where the emacspeak library directory should go
+#for older emacsuns use /usr/lib
+libparentdir = ${PREFIX}/share/emacs/site-lisp
+# where .elc files should go
+libdir =$(libparentdir)/emacspeak
+# what emacs is called on your system
+EMACS = emacs
+# How to run in batch mode
+BATCH = -batch -q -no-site-file
+# How to compile 
+COMPILE = -f batch-byte-compile
+# Assuming you're doing 'make' in the source directory: 
+CWD = `pwd`
+# How to install files
+INSTALL = install
+
+# }}}
+# {{{  define make variables and file groupings
+
+############## no user servicable parts beyond this point ###################
+SNAPSHOT = `date "+%h-%d-%y-%H-%M"`
+#New make rules 
+.SUFFIXES: .elc .el  .el .def 
+
+.el.elc:
+	$(EMACS) $(BATCH)  -l $(CWD)/emacspeak-load-path $(COMPILE) $(CWD)/$<
+	@echo  "Compiled  $<.  " $(DECTALK)
+
+# source files to distribute
+ID = README
+TABLE_SAMPLES=tables/*.tab tables/*.dat
+SOUNDS=sounds/*.au
+TCL_PROGRAMS = dtk-exp dtk-mv remote-tcl
+ELISP = dtk-css-speech.el \
+dtk-macros.el \
+dtk-speak.el \
+dtk-tcl.el \
+dtk-voices.el \
+emacspeak-actions.el \
+emacspeak-advice.el \
+emacspeak-auctex.el \
+emacspeak-bbdb.el \
+emacspeak-bibtex.el \
+emacspeak-buff-sel.el \
+emacspeak-c.el \
+emacspeak-calc.el \
+emacspeak-calendar.el \
+emacspeak-compile.el \
+emacspeak-dired.el \
+emacspeak-dismal.el \
+emacspeak-dmacro.el \
+emacspeak-ediff.el \
+emacspeak-eterm.el \
+emacspeak-fix-interactive.el \
+emacspeak-folding.el \
+emacspeak-forms.el \
+emacspeak-gnus.el \
+emacspeak-gud.el \
+emacspeak-hyperbole.el \
+emacspeak-info.el \
+emacspeak-ispell.el \
+emacspeak-keymap.el \
+emacspeak-kotl.el \
+emacspeak-load-path.el \
+emacspeak-man.el \
+emacspeak-message.el \
+emacspeak-new-ediff.el \
+emacspeak-oo-browser.el \
+emacspeak-outline.el \
+emacspeak-perl.el \
+emacspeak-pronounce.el \
+emacspeak-redefine.el \
+emacspeak-replace.el \
+emacspeak-rmail.el \
+emacspeak-sgml-mode.el \
+emacspeak-tapestry.el \
+emacspeak-enriched.el \
+emacspeak-setup.el \
+emacspeak-sounds.el \
+emacspeak-speak.el \
+emacspeak-table-ui.el \
+emacspeak-table.el \
+emacspeak-tabulate.el \
+emacspeak-tcl.el \
+emacspeak-tempo.el \
+emacspeak-view-process.el \
+emacspeak-view.el \
+emacspeak-vm.el \
+emacspeak-w3.el \
+emacspeak-widget.el \
+emacspeak-wrolo.el \
+emacspeak.el \
+html-voice.el \
+voice-lock.el \
+tapestry.el \
+w3-util.el 
+
+TEMPLATES = emacspeak-load-path.def \
+emacspeak-setup.def \
+emacspeak.def \
+play.def
+
+INFO = info/Makefile info/explain info/emacspeak.texinfo
+#INFO not listed in DISTFILES since we dont snapshot it
+DISTFILES =${ELISP}  ${TEMPLATES}     $(TCL_PROGRAMS) \
+	     Makefile COPYRIGHT HELP  
+# {{{  grouping files into dependent modules
+
+#The various modules:
+DTK_OBJECTS =  dtk-macros.elc\
+	dtk-speak.elc\
+	dtk-tcl.elc\
+        dtk-css-speech.elc \
+	dtk-voices.elc
+SPEAK_OBJECTS =   \
+	emacspeak-speak.elc  \
+        emacspeak-actions.elc \
+	voice-lock.elc  \
+        html-voice.elc \
+        emacspeak-pronounce.elc \
+	emacspeak-sounds.elc 
+
+CORE_OBJECTS =  \
+	emacspeak.elc \
+	emacspeak-advice.elc\
+	emacspeak-keymap.elc\
+	emacspeak-fix-interactive.elc\
+	emacspeak-redefine.elc\
+	emacspeak-replace.elc \
+        emacspeak-table.elc \
+        emacspeak-table-ui.elc \
+	emacspeak-tabulate.elc 
+
+AUX_OBJECTS = emacspeak-calendar.elc \
+emacspeak-calc.elc \
+emacspeak-c.elc \
+emacspeak-compile.elc \
+emacspeak-auctex.elc \
+emacspeak-bibtex.elc \
+emacspeak-dired.elc \
+emacspeak-info.elc\
+emacspeak-folding.elc \
+emacspeak-outline.elc \
+emacspeak-hyperbole.elc \
+emacspeak-kotl.elc \
+emacspeak-bbdb.elc \
+emacspeak-dmacro.elc \
+emacspeak-wrolo.elc \
+emacspeak-oo-browser.elc \
+emacspeak-tempo.elc \
+emacspeak-tcl.elc \
+emacspeak-perl.elc \
+emacspeak-gud.elc \
+emacspeak-man.elc \
+emacspeak-forms.elc \
+emacspeak-view.elc \
+emacspeak-message.elc \
+emacspeak-dismal.elc \
+emacspeak-buff-sel.elc \
+emacspeak-view-process.elc \
+emacspeak-vm.elc \
+emacspeak-rmail.elc \
+emacspeak-sgml-mode.elc \
+emacspeak-tapestry.elc \
+emacspeak-enriched.elc \
+emacspeak-widget.elc \
+emacspeak-w3.elc \
+emacspeak-ispell.elc \
+emacspeak-eterm.elc \
+emacspeak-ediff.elc \
+emacspeak-new-ediff.elc \
+emacspeak-gnus.elc\
+emacspeak-setup.el
+
+ADDON_OBJECTS=w3-util.elc tapestry.elc # custom.elc
+
+OBJECTS = $(DTK_OBJECTS) $(SPEAK_OBJECTS) $(CORE_OBJECTS)  \
+	$(AUX_OBJECTS) $(ADDON_OBJECTS)
+
+# }}}
+
+# }}}
+# {{{  User level targets emacspeak info print 
+
+emacspeak: $(OBJECTS)
+	@echo "Compiled on $(SNAPSHOT) by `whoami` on `hostname`" >> $(ID)
+	@echo "Now check installation of  the synthesizer driver. "  $(DECTALK)
+	@echo "See Makefile for instructions." $(DECTALK)
+	@echo "Type make info for  the online  manual." $(DECTALK)
+	@echo "Make sure you read the Emacs info pages" $(DECTALK)
+	@echo "Now check installation of  the synthesizer driver."  
+	@echo "See Makefile for instructions." 
+	@echo "Type make info for  the online  manual."
+	@echo "Make sure you read the Emacs info pages" 
+
+info:
+	cd info; make 
+
+print:
+	@echo "Please change to the info directory and type make print"
+
+# }}}
+# {{{  Maintainance targets tar snapshot dist 
+
+tar:
+	rm -f $(ID)
+	@echo "This is Emacspeak from  $(SNAPSHOT)" > $(ID)
+	@echo "Distribution created by `whoami` on `hostname`" >> $(ID)
+	@echo "Place  the files from this distribution in a directory" >> $(ID)
+	@echo "And type make config " >> $(ID)
+	@echo "To configure the source files. Then type make" >> $(ID)
+	@echo "See the Makefile for details. " >> $(ID)
+	@echo "If you have a Dectalk connected to a serial port," >>$(ID)
+	@echo 'e.g. /dev/tty00 then use make "DECTALK=>/dev/tty00"' >> $(ID)
+	@echo "And  get spoken feedback during make. " >> $(ID)
+	tar cvf  emacspeak.tar $(DISTFILES)   $(ID) \
+         ${TABLE_SAMPLES} ${SOUNDS} DOC $(INFO)
+snapshot: $(DISTFILES)
+	rcs -n$(SNAPSHOT):$$ $(DISTFILES)
+
+dist: $(DISTFILES) $(INFO)
+	make tar
+	make snapshot 
+	@echo "emacspeak $(SNAPSHOT)  prepared for distribution in emacspeak.tar"
+
+# }}}
+# {{{ User level target--  config 
+
+config:
+	@rm -f emacspeak-setup.el emacspeak-load-path.el  play emacspeak.sh
+	@sed "s@<emacspeak-dir>@$(CWD)@g" \
+		emacspeak.def > emacspeak.sh
+	@sed "s@<emacspeak-dir>@$(CWD)@g" \
+		emacspeak-load-path.def > emacspeak-load-path.el
+	@sed "s@<emacspeak-dir>@$(CWD)@g" \
+		emacspeak-setup.def  > emacspeak-setup.el
+	@sed "s@<emacspeak-dir>@$(CWD)@g" \
+		play.def > play
+	@chmod 444 emacspeak-setup.el emacspeak-load-path.el
+	@chmod 755 play  emacspeak.sh
+	@echo "Configured emacspeak in directory $(CWD)." $(DECTALK)
+	 @echo "Now type make emacspeak" $(DECTALK)
+	@echo "Configured emacspeak in directory $(CWD). Now type make emacspeak"
+
+# }}}
+# {{{  user level target-- install uninstall
+
+install:
+	make config CWD=$(libdir)
+	if test ! $(libdir) = $(CWD) ; then \
+	  if test ! -d $(libparentdir) ; then mkdir $(libparentdir); fi ; \
+	  if test ! -d $(libdir) ; then mkdir $(libdir); fi ; \
+	  chmod 755 $(libdir); \
+	  $(INSTALL) -m 0644  $(OBJECTS) dtk-exp dtk-mv remote-tcl  $(libdir); \
+	  $(INSTALL) -d $(libdir)/sounds; \
+	  $(INSTALL)  -m 0644 $(SOUNDS) $(libdir)/sounds; \
+	fi
+	if test ! -d $(bindir) ; then mkdir $(bindir); fi
+	$(INSTALL) emacspeak.sh $(bindir)/emacspeak
+	if test ! -d $(infodir) ; then mkdir $(infodir); fi
+	cd info; \
+	make install infodir=$(infodir);
+uninstall:
+	rm -rf $(infodir)/emacspeak.info* $(bindir)/emacspeak;
+	if test ! $(libdir) = $(CWD) ; then \
+	  (cd $(libparentdir); rm -rf $(libdir) ); \
+	fi
+
+# }}}
+# {{{  Make rules for the various modules
+
+# Do this in this brain-dead way because different makes do pattern
+# rules differently. grumble grumble...
+#dtk module:
+#dtk-tcl contains inline functions.
+#Compile dtk-tcl first, and make dtk-speak depend on it
+#Modules using functions from the dtk module should depend on dtk-speak
+dtk-macros.elc: dtk-macros.el
+dtk-speak.elc: dtk-speak.el dtk-tcl.el
+dtk-tcl.elc: dtk-tcl.el dtk-voices.elc emacspeak-pronounce.elc
+dtk-voices.elc: dtk-voices.el
+dtk-css-speech.elc: dtk-css-speech.el dtk-voices.elc
+voice-lock.elc: voice-lock.el
+html-voice.elc: html-voice.el voice-lock.elc 
+#Emacspeak module:
+emacspeak-sounds.elc: emacspeak-sounds.el
+emacspeak-pronounce.elc: emacspeak-pronounce.el
+emacspeak-advice.elc: emacspeak-advice.el dtk-speak.elc
+emacspeak-calendar.elc: emacspeak-calendar.el dtk-speak.el
+emacspeak-calc.elc: emacspeak-calc.el 
+emacspeak-c.elc: emacspeak-c.el dtk-speak.elc
+emacspeak-dired.elc: emacspeak-dired.el dtk-speak.elc
+emacspeak-auctex.elc: emacspeak-auctex.el dtk-speak.elc
+emacspeak-bibtex.elc: emacspeak-bibtex.el dtk-speak.elc
+emacspeak-info.elc: emacspeak-info.el dtk-speak.elc 
+emacspeak-folding.elc: emacspeak-folding.el dtk-speak.elc
+emacspeak-outline.elc: emacspeak-outline.el dtk-speak.elc
+emacspeak-hyperbole.elc: emacspeak-hyperbole.el dtk-speak.elc
+emacspeak-kotl.elc: emacspeak-kotl.el dtk-speak.elc
+emacspeak-bbdb.elc: emacspeak-bbdb.el dtk-speak.elc
+emacspeak-dmacro.elc: emacspeak-dmacro.el dtk-speak.elc
+emacspeak-wrolo.elc: emacspeak-wrolo.el dtk-speak.elc 
+emacspeak-oo-browser.elc: emacspeak-oo-browser.el dtk-speak.elc 
+emacspeak-tempo.elc: emacspeak-tempo.el dtk-speak.elc
+emacspeak-tcl.elc: emacspeak-tcl.el dtk-speak.elc
+emacspeak-perl.elc: emacspeak-perl.el dtk-speak.elc
+emacspeak-gud.elc: emacspeak-gud.el dtk-speak.elc
+emacspeak-man.elc: emacspeak-man.el dtk-speak.elc
+emacspeak-forms.elc: emacspeak-forms.el dtk-speak.elc
+emacspeak-view.elc: emacspeak-view.el dtk-speak.elc
+emacspeak-message.elc: emacspeak-message.el dtk-speak.elc
+emacspeak-dismal.elc: emacspeak-dismal.el dtk-speak.elc
+emacspeak-buff-sel.elc: emacspeak-buff-sel.el dtk-speak.elc
+emacspeak-view-process.elc: emacspeak-view-process.el dtk-speak.elc
+emacspeak-eterm.elc: emacspeak-eterm.el dtk-speak.elc
+emacspeak-ediff.elc: emacspeak-ediff.el dtk-speak.elc
+emacspeak-new-ediff.elc: emacspeak-new-ediff.el dtk-speak.elc
+emacspeak-fix-interactive.elc: emacspeak-fix-interactive.el dtk-speak.elc
+emacspeak-gnus.elc: emacspeak-gnus.el dtk-speak.elc
+emacspeak-ispell.elc: emacspeak-ispell.el dtk-speak.elc
+emacspeak-keymap.elc: emacspeak-keymap.el 
+emacspeak-load-path.elc: emacspeak-load-path.elc
+emacspeak-redefine.elc: emacspeak-redefine.el  dtk-speak.elc
+emacspeak-replace.elc: emacspeak-replace.el dtk-speak.elc
+emacspeak-table.elc: emacspeak-table.el
+emacspeak-table-ui.elc: emacspeak-table-ui.el emacspeak-tabulate.elc  \
+emacspeak-table.elc
+emacspeak-tabulate.elc: emacspeak-tabulate.el dtk-speak.elc
+emacspeak-setup.elc: emacspeak-setup.el
+emacspeak-speak.elc: emacspeak-speak.el dtk-speak.elc
+emacspeak-actions.elc: emacspeak-actions.el 
+emacspeak-vm.elc: emacspeak-vm.el dtk-speak.elc
+emacspeak-rmail.elc: emacspeak-rmail.el dtk-speak.elc
+emacspeak-sgml-mode.elc: emacspeak-sgml-mode.el dtk-speak.elc
+emacspeak-tapestry.elc: emacspeak-tapestry.el dtk-speak.elc
+emacspeak-enriched.elc: emacspeak-enriched.el dtk-speak.elc
+emacspeak-widget.elc: emacspeak-widget.el dtk-speak.elc
+emacspeak-w3.elc: emacspeak-w3.el dtk-speak.elc
+emacspeak.elc: emacspeak.el
+
+# }}}
+# {{{  complete build 
+
+#targets
+#the complete build 
+all: emacspeak 
+
+# }}}
+# {{{  shortcuts for building subsystems 
+
+#Compiling support for different packages:
+#this is done as part of make all.
+
+#You can recompile support for individual packages, e.g. calendar by typing
+# make calendar
+#
+actions: emacspeak-actions.elc 
+calendar: emacspeak-calendar.elc
+calc: emacspeak-calc.elc 
+c: emacspeak-c.elc
+compile: emacspeak-compile.elc
+auctex: emacspeak-auctex.elc
+bibtex: emacspeak-bibtex.elc
+dired: emacspeak-dired.elc  
+folding: emacspeak-folding.elc
+outline:emacspeak-outline.elc
+hyperbole: emacspeak-hyperbole.elc
+kotl: emacspeak-kotl.elc
+bbdb: emacspeak-bbdb.elc
+dmacro: emacspeak-dmacro.elc 
+wrolo: emacspeak-wrolo.elc
+oo-browser: emacspeak-oo-browser.elc
+table: emacspeak-table.elc
+table-ui: emacspeak-table-ui.elc
+tabulate: emacspeak-tabulate.elc
+tempo: emacspeak-tempo.elc
+tcl: emacspeak-tcl.elc
+perl: emacspeak-perl.elc
+gud: emacspeak-gud.elc 
+man: emacspeak-man.elc
+forms: emacspeak-forms.elc
+view: emacspeak-view.elc
+message: emacspeak-message.elc
+dismal: emacspeak-dismal.elc
+buff-sel: emacspeak-buff-sel.elc
+view-process: emacspeak-view-process.elc
+vm: emacspeak-vm.elc
+rmail: emacspeak-rmail.elc
+sgml-mode: emacspeak-sgml-mode.elc
+enriched: emacspeak-enriched.elc 
+widget: emacspeak-widget.elc
+w3: emacspeak-w3.elc  
+ispell: emacspeak-ispell.elc  
+eterm: emacspeak-eterm.elc
+ediff: emacspeak-ediff.elc
+new-ediff: emacspeak-new-ediff.elc
+gnus: emacspeak-gnus.elc
+
+# }}}
+# {{{  user level target-- clean
+
+clean:
+	rm -f *.elc 
+		cd info; make clean
+
+# }}}
+# {{{ labeling releases 
+
+#label  releases when ready
+LABEL=
+label: $(DISTFILES)
+	co -l $(DISTFILES)
+	   ci -f -u${LABEL} -m"Releasing ${LABEL}" \
+        -n$(SNAPSHOT) $(DISTFILES)
+
+
+release: #supply LABEL=NN.NN
+	make label LABEL=$(LABEL)
+	make dist 
+	mkdir release; \
+mv emacspeak.tar release; \
+	cd release; \
+	mkdir emacspeak-$(LABEL); \
+	cd emacspeak-$(LABEL); \
+	tar xvf ../emacspeak.tar ; \
+	cd ..; \
+	rm -f emacspeak.tar ; \
+	tar cvf emacspeak.tar emacspeak-$(LABEL); \
+	gzip -9 emacspeak.tar; \
+	mv  emacspeak.tar.gz ../ems.tgz; \
+	cd .. ; \
+	/bin/rm -rf release 
+	@echo "Prepared Emacspeak-$(LABEL) in ems.tgz"
+
+# }}}
+# {{{ end of file 
+
+#local variables: 
+#major-mode: makefile-mode
+#eval:  (fold-set-marks "# {{{" "# }}}")
+#folded-file: t
+#end:
+
+# }}}
diff -uNr ../emacspeak-6.0.orig/emacspeak-eterm.el ./emacspeak-eterm.el
--- ../emacspeak-6.0.orig/emacspeak-eterm.el	Thu May  1 14:06:44 1997
+++ ./emacspeak-eterm.el	Sun Jun  1 13:29:54 1997
@@ -183,7 +183,7 @@
 ;;; ie without any interpretation.
 ;;; Ensure you're in a terminal before sending it through."
 (defun emacspeak-eterm-maybe-send-raw ()
-  "Send a raw character through if in the terminal buffer
+  "Send a raw character through if in the terminal buffer.
 Execute end of line if
  in a non eterm buffer if executed via C-e C-e"
   (interactive)
@@ -514,7 +514,7 @@
 
 (defun emacspeak-eterm-toggle-review ()
   "Toggle state of eterm review. 
-In review mode, you can move around the terminal and listen to the contnets 
+In review mode, you can move around the terminal and listen to the contents 
 without sending input to the terminal itself. "
   (interactive)
   (declare (special emacspeak-eterm-review-p 
diff -uNr ../emacspeak-6.0.orig/emacspeak-eterm.el.orig ./emacspeak-eterm.el.orig
--- ../emacspeak-6.0.orig/emacspeak-eterm.el.orig	Wed Dec 31 19:00:00 1969
+++ ./emacspeak-eterm.el.orig	Thu May  1 14:06:44 1997
@@ -0,0 +1,1263 @@
+;;; $Id: emacspeak-eterm.el,v 6.0 1997/05/01 18:06:27 raman Exp $
+;;; $Author: raman $ 
+;;; Description:  Emacspeak extension to speech enable eterm. 
+;;; Keywords: Emacspeak, Eterm, Terminal emulation, Spoken Output
+;;{{{  LCD Archive entry: 
+;;; LCD Archive Entry:
+;;; emacspeak| T. V. Raman |raman@crl.dec.com 
+;;; A speech interface to Emacs |
+;;; $date: $ |
+;;;  $Revision: 6.0 $ | 
+;;; Location undetermined
+;;;
+
+;;}}}
+;;{{{  Copyright:
+
+;;; Copyright (c) 1994, 1995 by Digital Equipment Corporation.
+;;; All Rights Reserved. 
+;;;
+;;; This file is not part of GNU Emacs, but the same permissions apply.
+;;;
+;;; GNU Emacs 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.
+;;;
+;;; GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to
+;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;}}}
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;{{{ required packages:
+
+(require 'advice)
+(require 'cl)
+(declaim  (optimize  (safety 0) (speed 3)))
+
+(require 'dtk-voices )
+(require 'voice-lock)
+(require 'emacspeak-speak)
+(require 'emacspeak-sounds)
+(require 'emacspeak-keymap)
+(eval-when (compile)
+  (require 'emacspeak-fix-interactive)
+  (condition-case nil
+      (progn
+        (require 'term)
+        (require 'tshell))
+    (error nil )))
+
+;;}}}
+;;{{{  Introduction:
+;;; This module makes eterm talk.
+;;; Eterm is the new terminal emulator for Emacs.
+;;; Use of emacspeak with eterm really needs an info page.
+;;; At present, the only documentation is the source level documentation.
+;;; This module uses Control-t as an additional prefix key to allow the user
+;;; To move around the terminal and have different parts spoken. 
+
+;;}}}
+;;{{{  keybindings:
+
+(defvar emacspeak-eterm-keymap (make-keymap)
+  "Keymap used to navigate a terminal without moving the cursor. ")
+(defvar emacspeak-eterm-prefix "\C-t"
+  "Prefix char used by emacspeak for navigating an eterm")
+
+(defun emacspeak-eterm-setup-keys()
+   "Make eterm usable with emacspeak"
+   (declare (special emacspeak-prefix emacspeak-eterm-prefix
+                     emacspeak-eterm-keymap  term-mode-map ))
+   (define-prefix-command 'emacspeak-eterm-prefix-command
+     'emacspeak-eterm-keymap)
+   (define-key term-mode-map emacspeak-eterm-prefix
+     'emacspeak-eterm-prefix-command)
+   (suppress-keymap emacspeak-eterm-keymap)
+   (let  ((i 0))
+     (while (< i 10)
+       (define-key emacspeak-eterm-keymap
+         (format "%s" i) 'emacspeak-eterm-speak-predefined-window )
+       (incf i )))
+   (define-key emacspeak-eterm-keymap "\C-i" 'emacspeak-eterm-speak-cursor )
+   (define-key emacspeak-eterm-keymap "\C-q" 'emacspeak-toggle-eterm-autospeak)
+   (define-key emacspeak-eterm-keymap " "  'emacspeak-eterm-speak-screen)
+   (define-key emacspeak-eterm-keymap '[up] 'emacspeak-eterm-pointer-up )
+   (define-key emacspeak-eterm-keymap '[down] 'emacspeak-eterm-pointer-down )
+   (define-key emacspeak-eterm-keymap '[left] 'emacspeak-eterm-pointer-left )
+   (define-key emacspeak-eterm-keymap '[right] 'emacspeak-eterm-pointer-right )
+   (define-key emacspeak-eterm-keymap "a" 'emacspeak-eterm-pointer-to-left-edge)
+   (define-key emacspeak-eterm-keymap "e" 'emacspeak-eterm-pointer-to-right-edge)
+   (define-key emacspeak-eterm-keymap "\M-b" 'emacspeak-eterm-pointer-backward-word)
+   (define-key emacspeak-eterm-keymap "\M-f"  'emacspeak-eterm-pointer-forward-word)
+   (define-key emacspeak-eterm-keymap "." 'emacspeak-eterm-pointer-to-cursor )
+   (define-key emacspeak-eterm-keymap "," 'emacspeak-eterm-speak-pointer)
+   (define-key emacspeak-eterm-keymap "c" 'emacspeak-eterm-speak-pointer-char)
+   (define-key emacspeak-eterm-keymap "w" 'emacspeak-eterm-speak-pointer-word)
+   (define-key emacspeak-eterm-keymap "l" 'emacspeak-eterm-speak-pointer-line)
+   (define-key emacspeak-eterm-keymap "p"  'emacspeak-eterm-pointer-up )
+   (define-key emacspeak-eterm-keymap "n" 'emacspeak-eterm-pointer-down )
+   (define-key emacspeak-eterm-keymap "b"  'emacspeak-eterm-pointer-left )
+   (define-key emacspeak-eterm-keymap "f" 'emacspeak-eterm-pointer-right )
+   (define-key emacspeak-eterm-keymap "h"
+     'emacspeak-eterm-pointer-to-next-color-change)
+   (define-key emacspeak-eterm-keymap "H"
+     'emacspeak-eterm-pointer-to-previous-color-change)
+   (define-key emacspeak-eterm-keymap "t" 'emacspeak-eterm-pointer-to-top)
+   (define-key emacspeak-eterm-keymap "<" 'emacspeak-eterm-pointer-to-top)
+   (define-key emacspeak-eterm-keymap ">" 'emacspeak-eterm-pointer-to-bottom)
+   (define-key emacspeak-eterm-keymap "g" 'emacspeak-eterm-goto-line)
+   (define-key emacspeak-eterm-keymap "s" 'emacspeak-eterm-search-forward )
+   ;(define-key emacspeak-eterm-keymap "r" 'emacspeak-eterm-search-backward)
+   (define-key emacspeak-eterm-keymap "y"
+     'emacspeak-eterm-kill-ring-save-region)
+   (define-key emacspeak-eterm-keymap "x" 'emacspeak-eterm-copy-region-to-register)
+   (define-key emacspeak-eterm-keymap "m" 'emacspeak-eterm-set-marker )
+   (define-key emacspeak-eterm-keymap "\C-p"
+     'emacspeak-eterm-toggle-pointer-mode)
+   (define-key emacspeak-eterm-keymap "\C-w" 'emacspeak-eterm-define-window)
+   (define-key emacspeak-eterm-keymap "\C-y" 'emacspeak-eterm-yank-window)
+   (define-key emacspeak-eterm-keymap "\C-f" 'emacspeak-eterm-set-focus-window)
+   (define-key emacspeak-eterm-keymap "\C-d" 'emacspeak-eterm-describe-window)
+   (define-key emacspeak-eterm-keymap "\C-m" 'emacspeak-eterm-speak-window)
+   (define-key emacspeak-eterm-keymap "r" 'emacspeak-eterm-toggle-review)
+   (define-key emacspeak-eterm-keymap "q" 'emacspeak-eterm-toggle-review)
+   (and term-raw-escape-map
+        (mapcar
+    (function 
+     (lambda (key)
+       (define-key term-raw-escape-map key 
+         (lookup-key (current-global-map) key))))
+    '("\M-x" "\C-h")))
+   t)
+
+(defvar emacspeak-eterm-raw-prefix
+"\C-r"
+  "Prefix key to use  to send out raw term input. 
+Useful when eterm is in review mode. ")
+
+(defun emacspeak-eterm-setup-raw-keys ()
+  "Setup emacspeak keys for raw terminal mode. "
+  (declare (special term-raw-map 
+                    emacspeak-eterm-keymap
+                    emacspeak-eterm-raw-prefix))
+  (when term-raw-map 
+    (define-key term-raw-map emacspeak-prefix 'emacspeak-prefix-command)
+    (define-key term-raw-map (concat emacspeak-prefix emacspeak-prefix)
+      'emacspeak-eterm-maybe-send-raw)
+    (define-key term-raw-map emacspeak-eterm-prefix
+      'emacspeak-eterm-prefix-command)
+    (define-key term-raw-map emacspeak-eterm-raw-prefix term-raw-map)
+    (define-key term-raw-map
+      (concat emacspeak-eterm-raw-prefix emacspeak-eterm-raw-prefix)
+      'emacspeak-eterm-maybe-send-raw)
+    (define-key term-raw-map
+      (concat emacspeak-eterm-prefix emacspeak-eterm-prefix) 'emacspeak-eterm-maybe-send-raw)
+    (define-key emacspeak-eterm-keymap emacspeak-eterm-raw-prefix term-raw-map)
+    ))
+
+;;}}}
+;;{{{  voice definitions  for eterm  highlight, underline etc
+
+(dtk-define-voice 'eterm-highlight-personality "[:nh]")
+(dtk-define-voice 'eterm-bold-personality "[:nb]")
+(dtk-define-voice  'eterm-underline-personality "[:np :dv ap 142 pr 150]")
+(dtk-define-voice 'eterm-default-personality "[:np]")
+
+;;}}}
+;;{{{  functions
+
+;;; nuke term cache info 
+(defsubst emacspeak-eterm-nuke-cached-info ()
+  (declare (special term-current-row term-current-column ))
+  (setq term-current-row nil
+        term-current-column nil ))
+
+;;;Send the last input character as a  raw key,
+;;; ie without any interpretation.
+;;; Ensure you're in a terminal before sending it through."
+(defun emacspeak-eterm-maybe-send-raw ()
+  "Send a raw character through if in the terminal buffer
+Execute end of line if
+ in a non eterm buffer if executed via C-e C-e"
+  (interactive)
+  (declare (special last-input-event))
+  (cond
+   ((or (eq major-mode 'term-mode)
+        (eq major-mode 'tshell-mode))
+    (term-send-raw ))
+   ((= last-input-event 5) (end-of-line ))
+   (t (beep))))
+
+(defun emacspeak-eterm-speak-cursor ()
+  "Speak cursor position"
+  (interactive)
+  (message
+   "Cursor at Row %s, Column %s"
+   (term-current-row)
+   (term-current-column)))
+
+(defun emacspeak-eterm-speak-pointer ()
+  "Speak current pointer position. "
+  (interactive)
+  (declare (special emacspeak-eterm-pointer  ))
+  (let ((coordinates (emacspeak-eterm-position-to-coordinates
+                      (marker-position emacspeak-eterm-pointer ))))
+    (message 
+      "Pointer at row %s column %s "
+      (cdr coordinates ) (car coordinates ))))
+
+
+(defun emacspeak-eterm-speak-screen (&optional flag )
+  "Speak the screen. Default is to speak from the emacspeak pointer  to point.
+Prefix arg causes region above
+the Emacspeak pointer to be spoken. "
+  (interactive "P")
+  (declare (special term-home-marker emacspeak-eterm-pointer ))
+  (if flag
+      (emacspeak-speak-region term-home-marker  emacspeak-eterm-pointer)
+    (emacspeak-speak-region  emacspeak-eterm-pointer (point-max ))))
+
+;;}}}
+;;{{{  Speaking the screen pointer:
+
+;;; The pointer is an invisible marker that is
+;;; moved around to speak the screen.
+;;; The pointer is emacspeak-eterm-pointer and starts off at the cursor.
+;;; Speaking relative to the pointer:
+
+(defun emacspeak-eterm-speak-pointer-line ()
+  "Speak the line the pointer is on"
+  (interactive)
+  (declare (special emacspeak-eterm-pointer ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer)
+    (emacspeak-speak-line nil )))
+
+(defun emacspeak-eterm-speak-pointer-word ()
+  "Speak the word  the pointer is on"
+  (interactive)
+  (declare (special emacspeak-eterm-pointer ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer)
+    (emacspeak-speak-word nil )))
+
+(defun emacspeak-eterm-speak-pointer-char (&optional prefix)
+  "Speak char under eterm pointer.
+Pronounces character phonetically unless  called with a prefix arg."
+  (interactive "P")
+  (declare (special emacspeak-eterm-pointer ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer)
+    (emacspeak-speak-char prefix)))
+
+;;}}}
+;;{{{  moving the screen pointer: 
+
+(defun emacspeak-eterm-pointer-to-cursor ()
+  "Move the pointer to the cursor "
+  (interactive)
+  (declare (special emacspeak-eterm-pointer ))
+  (set-marker emacspeak-eterm-pointer (point ))
+  (when (interactive-p)
+    (emacspeak-auditory-icon 'large-movement)
+    (emacspeak-eterm-speak-cursor)))
+
+(defun emacspeak-eterm-pointer-to-top () 
+  "Move the pointer to the top of the screen. "
+  (interactive)
+  (declare (special term-home-marker emacspeak-eterm-pointer ))
+  (save-excursion
+  (goto-char term-home-marker)  
+    (set-marker emacspeak-eterm-pointer (point))
+    (when (interactive-p)
+      (emacspeak-auditory-icon 'large-movement)
+    (emacspeak-speak-line nil ))))
+
+(defun emacspeak-eterm-pointer-to-bottom  () 
+  "Move the pointer to the bottom  of the screen. "
+  (interactive)
+  (declare (special  emacspeak-eterm-pointer ))
+  (save-excursion
+    (goto-char (point-max))
+    (set-marker emacspeak-eterm-pointer (point ))
+    (when (interactive-p)
+      (emacspeak-auditory-icon 'large-movement)
+    (emacspeak-speak-line nil ))))
+
+(defun emacspeak-eterm-pointer-up (count)
+  "Move the pointer up a line. "
+  (interactive "P")
+  (declare (special emacspeak-eterm-pointer 
+                    term-home-marker))
+  (setq count (or count 1 ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer )
+    (forward-line (- count ))
+    (beginning-of-line )
+    (cond 
+     ((<= (marker-position term-home-marker ) (point))
+      (set-marker emacspeak-eterm-pointer (point ))
+      (emacspeak-speak-line nil ))
+     (t (error "At top of screen. "  )))))
+
+(defun emacspeak-eterm-pointer-down (count )
+  "Move the pointer down a line. "
+  (interactive "P")
+  (declare (special emacspeak-eterm-pointer))
+  (setq count (or count 1 ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer )
+    (forward-line count)
+    (beginning-of-line )
+    (cond 
+     ((<= (point) (point-max)) 
+      (set-marker emacspeak-eterm-pointer (point ))
+      (emacspeak-speak-line nil ))
+     (t (error "Not that many lines on the screen" )))))
+
+(defun emacspeak-eterm-pointer-left (count)
+  "Move the pointer left a line. "
+  (interactive "P")
+  (declare (special emacspeak-eterm-pointer ))
+  (setq count (or count 1 ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer )
+    (backward-char count)
+    (set-marker emacspeak-eterm-pointer (point ))
+    (when (interactive-p)
+      (dtk-stop)
+    (emacspeak-speak-char t ))))
+
+(defun emacspeak-eterm-pointer-right (count)
+  "Move the pointer right. "
+  (interactive "P")
+  (declare (special emacspeak-eterm-pointer ))
+  (setq count (or count 1 ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer )
+    (forward-char  count )
+    (set-marker emacspeak-eterm-pointer (point ))
+    (when (interactive-p)
+      (dtk-stop)
+    (emacspeak-speak-char t))))
+
+(defun emacspeak-eterm-pointer-to-right-edge ()
+       "Move the pointer to the right edge. "
+       (interactive)
+       (declare (special emacspeak-eterm-pointer ))
+       (save-excursion
+         (goto-char emacspeak-eterm-pointer )
+         (end-of-line)
+         (set-marker emacspeak-eterm-pointer (point ))
+         (when (interactive-p) 
+         (dtk-stop)
+         (emacspeak-auditory-icon 'large-movement)
+         (emacspeak-speak-char t))))
+
+(defun emacspeak-eterm-pointer-to-left-edge ()
+       "Move the pointer to the right edge. "
+       (interactive)
+       (declare (special emacspeak-eterm-pointer ))
+       (save-excursion
+         (goto-char emacspeak-eterm-pointer )
+         (beginning-of-line)
+         (set-marker emacspeak-eterm-pointer (point ))
+         (when (interactive-p)
+           (dtk-stop)
+           (emacspeak-auditory-icon 'large-movement)
+         (emacspeak-speak-char t))))
+
+(defun emacspeak-eterm-pointer-backward-word (count)
+  "Move the pointer backward  by words. 
+Interactive numeric prefix arg specifies number of words to move. "
+  (interactive "P")
+  (declare (special emacspeak-eterm-pointer ))
+  (setq count (or count 1 ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer )
+    (condition-case nil 
+        (forward-word  (- count ))
+      (error nil ))
+    (set-marker emacspeak-eterm-pointer (point ))
+    (when (interactive-p)
+      (emacspeak-speak-word))))
+
+(defun emacspeak-eterm-pointer-forward-word (count)
+  "Move the pointer forward by words. 
+Interactive numeric prefix arg specifies number of words to move. "
+  (interactive "P")
+  (declare (special emacspeak-eterm-pointer ))
+  (setq count (or count 1 ))
+  (save-excursion
+    (goto-char emacspeak-eterm-pointer )
+    (condition-case nil 
+        (forward-word  count )
+      (error nil ))
+    (skip-syntax-forward " ")
+    (set-marker emacspeak-eterm-pointer (point ))
+    (when (interactive-p)
+      (emacspeak-speak-word))))
+
+(defun emacspeak-eterm-goto-line (line)
+  "Move emacspeak eterm pointer to a specified line. "
+  (interactive "nGo to line:")
+  (declare (special emacspeak-eterm-pointer
+                    term-home-marker))
+  (save-excursion 
+    (goto-char term-home-marker )
+    (forward-line line)
+    (set-marker emacspeak-eterm-pointer (point ))
+      (emacspeak-auditory-icon 'large-movement )
+    (emacspeak-speak-line)))
+
+(emacspeak-fix-interactive-command-if-necessary 'emacspeak-eterm-goto-line) 
+
+(defun emacspeak-eterm-search-forward ()
+  "Search forward on the terminal. "
+  (interactive)
+  (emacspeak-eterm-search 1))
+
+(defun emacspeak-eterm-search-backward ()
+  "Search backward on the terminal. "
+  (interactive)
+  (emacspeak-eterm-search -1))
+
+;;; Helper function for searching:
+
+(defun emacspeak-eterm-search(direction)
+  "Prompt for a string,
+and try and locate it on the terminal.
+If found, the Emacspeak pointer is left at the hit. "
+  (declare (special emacspeak-eterm-pointer
+                    term-home-marker ))
+  (let ((found nil)
+        (start nil)
+        (end nil)
+        (string (read-from-minibuffer "Enter search string: ")))
+    (if (= 1 direction)                 ; forward search
+        (setq start  (marker-position emacspeak-eterm-pointer )
+              end (point-max))
+                                        ; backward search 
+      (setq start (marker-position emacspeak-eterm-pointer )
+            end (marker-position term-home-marker )))
+    (save-excursion
+      (goto-char start)
+      (save-restriction
+        (narrow-to-region start end )
+        (save-match-data 
+          (if (= 1 direction)           ;forward search 
+              (setq found (search-forward  string  end t))
+            (setq found (search-backward   string end t))))
+        (cond
+         (found (set-marker emacspeak-eterm-pointer (point-marker))
+                (emacspeak-auditory-icon 'search-hit)
+                (emacspeak-eterm-speak-pointer-line))
+         (t(emacspeak-auditory-icon 'search-miss)
+          (message "%s not found. " string )))))))
+
+;;}}}
+;;{{{  Highlight tracking:
+
+;;; Moving pointer  to the next highlighted portion of the screen:
+
+(defun emacspeak-eterm-pointer-to-next-color-change  (&optional count)
+  "Move the eterm pointer to the next color change.
+This allows you to move between highlighted regions of the screen. "
+  (interactive "p")
+  (declare (special emacspeak-eterm-pointer))
+  (setq count (or count 1 ))
+  (let ((current (get-text-property emacspeak-eterm-pointer 'personality ))
+        (found nil))
+    (save-excursion
+      (goto-char emacspeak-eterm-pointer)
+      (setq found (text-property-not-all (point) (point-max)
+                                         'personality current ))
+      (cond
+       (found (set-marker emacspeak-eterm-pointer found )
+              (emacspeak-auditory-icon 'large-movement)
+              (emacspeak-eterm-speak-pointer-line))
+       (t (message "No color change found on the screen. "))))))
+
+(defun emacspeak-eterm-pointer-to-previous-color-change  (&optional count)
+  "Move the eterm pointer to the next color change.
+This allows you to move between highlighted regions of the screen. "
+  (interactive "p")
+  (declare (special emacspeak-eterm-pointer term-home-marker))
+ (setq count (or count 1 ))
+  (let ((current (get-text-property emacspeak-eterm-pointer 'personality ))
+        (found nil))
+    (save-excursion
+      (goto-char emacspeak-eterm-pointer)
+      (setq found (text-property-not-all (point)  term-home-marker
+                                         'personality current ))
+      (cond
+       (found (set-marker emacspeak-eterm-pointer found )
+              (emacspeak-auditory-icon 'large-movement)
+              (emacspeak-eterm-speak-pointer-line))
+       (t (message "No color change found on the screen. "))))))
+
+;;}}}
+;;{{{  reviewing the terminal:
+
+(defvar emacspeak-eterm-review-p nil 
+"T if eterm is in review mode. 
+In review mode, you can move around the terminal and listen to parts of it.
+Do not set this variable by hand.
+Use command \\[emacspeak-eterm-toggle-review].")
+
+(defun emacspeak-eterm-toggle-review ()
+  "Toggle state of eterm review. 
+In review mode, you can move around the terminal and listen to the contnets 
+without sending input to the terminal itself. "
+  (interactive)
+  (declare (special emacspeak-eterm-review-p 
+                    eterm-char-mode
+                    buffer-read-only emacspeak-eterm-keymap term-raw-map))
+  (emacspeak-eterm-nuke-cached-info )
+  (or (assq 'emacspeak-eterm-review-p  minor-mode-alist)
+      (setq minor-mode-alist
+            (append minor-mode-alist
+                    '((emacspeak-eterm-review-p " Review")))))
+  (if eterm-char-mode 
+      (cond 
+       (emacspeak-eterm-review-p        ;turn it off 
+        (message "Returning to terminal character mode. ")
+        (setq emacspeak-eterm-review-p nil)
+        (use-local-map term-raw-map))
+       (t                               ; turn it on
+        (message "Entering terminal review mode, press  q  to return to normal")
+        (setq emacspeak-eterm-review-p t)
+        (use-local-map emacspeak-eterm-keymap)))
+    (message "Terminal review should be used when eterm is in
+character mode. "))
+  (emacspeak-auditory-icon
+   (if emacspeak-eterm-review-p
+       'on
+     'off)))
+
+;;}}}
+;;{{{  Cut and paste while reviewing:
+
+(defvar emacspeak-eterm-marker nil 
+"Marker used by emacspeak to yank when in eterm review mode.")
+
+(defun emacspeak-eterm-set-marker ()
+  "Set the emacspeak eterm marker to the position pointed 
+to by the emacspeak eterm pointer."
+  (interactive)
+  (declare (special emacspeak-eterm-pointer 
+                    emacspeak-eterm-marker))
+  (let ((coordinates nil))
+  (set-marker emacspeak-eterm-marker 
+              (marker-position emacspeak-eterm-pointer ))
+  (setq coordinates
+        (emacspeak-eterm-position-to-coordinates
+         (marker-position emacspeak-eterm-pointer)))
+  (when (interactive-p)
+    (emacspeak-auditory-icon 'mark-object)
+  (dtk-stop)
+  (message "Set eterm mark at row %s column %s"
+           (cdr coordinates)
+           (car coordinates)))))
+
+(defun emacspeak-eterm-kill-ring-save-region  ()
+  "Copy region delimited by the emacspeak eterm marker 
+set by command \\[emacspeak-eterm-set-marker] and the 
+emacspeak eterm pointer. "
+  (interactive)
+  (declare (special emacspeak-eterm-marker 
+                    emacspeak-eterm-pointer ))
+  (kill-ring-save (marker-position emacspeak-eterm-marker )
+                  (marker-position emacspeak-eterm-pointer))
+  (emacspeak-auditory-icon 'mark-object)
+  (message "Snarfed %s characters. "
+           (abs (- (marker-position emacspeak-eterm-marker )
+                   (marker-position emacspeak-eterm-pointer)))))
+
+(defun emacspeak-eterm-copy-region-to-register  (register)
+  "Copy region delimited by the emacspeak eterm marker 
+set by command \\[emacspeak-eterm-set-marker] and the 
+emacspeak eterm pointer to a register."
+  (interactive "cCopy to register:")
+  (declare (special emacspeak-eterm-marker 
+                    emacspeak-eterm-pointer ))
+  (copy-to-register register 
+   (marker-position emacspeak-eterm-marker)
+                  (marker-position emacspeak-eterm-pointer)
+                  nil)
+  (emacspeak-auditory-icon 'mark-object)
+  (message "Snarfed %s characters to register %c. "
+           (abs (- (marker-position emacspeak-eterm-marker )
+                   (marker-position emacspeak-eterm-pointer)))
+           register))
+(emacspeak-fix-interactive-command-if-necessary 'emacspeak-eterm-copy-region-to-register)
+;;}}}
+;;{{{  Defining and speaking terminal windows:
+
+;;; A window structure is of the form
+;;; [column row right-stretch left-stretch ]
+
+(defsubst emacspeak-eterm-make-window (top-left bottom-right right-stretch left-stretch )
+  (let ((win (make-vector 4  nil)))
+    (aset win 0 top-left )
+    (aset win 1 bottom-right )
+    (aset win 2 right-stretch )
+    (aset win 3 left-stretch )
+    win))
+
+  
+(defsubst emacspeak-eterm-window-top-left (w) (aref w 0 ))
+(defsubst emacspeak-eterm-window-bottom-right (w) (aref w 1 ))
+(defsubst emacspeak-eterm-window-right-stretch (w) (aref w 2 ))
+(defsubst emacspeak-eterm-window-left-stretch  (w) (aref w 3 ))
+
+(defun  emacspeak-eterm-coordinate-within-window-p (coordinate id  )
+  "Predicate to test if coordinate is within window "
+  (let*  ((window  (emacspeak-eterm-get-window id ))
+  (row (cdr coordinate))
+       (column (car coordinate ))
+       (left-stretch (emacspeak-eterm-window-left-stretch window ))
+       (right-stretch (emacspeak-eterm-window-right-stretch window ))
+       (top-left-row (cdr
+                      (emacspeak-eterm-window-top-left window )))
+                     (top-left-column (car
+                                       (emacspeak-eterm-window-top-left window)))
+                     (bottom-right-row (cdr 
+                      (emacspeak-eterm-window-bottom-right window )))
+                     (bottom-right-column (car
+                                           (emacspeak-eterm-window-bottom-right window  ))))
+(not
+ (or  (< row top-left-row )
+      (> row bottom-right-row )
+      (and (not left-stretch ) (< column top-left-column ))
+      (and (not right-stretch ) (> column bottom-right-column ))))))
+ 
+;;; Translate a screen position to a buffer position
+
+(defun emacspeak-eterm-coordinates-to-position (coordinates)
+  "Translate  screen coordinates specified
+as a cons cell (column . row ) to a buffer position in the eterm buffer"
+  (declare (special term-home-marker))
+  (let ((column (car coordinates ))
+        (row (cdr coordinates )))
+    (save-excursion
+      (save-restriction
+        (emacspeak-eterm-nuke-cached-info)
+        (narrow-to-region term-home-marker (point-max ))
+        (term-goto row column )
+        (emacspeak-eterm-nuke-cached-info)
+        (point )))))
+
+;;; Translate buffer position to screen coordinates.
+;;; returns a cons cell (column . row )
+(defun emacspeak-eterm-position-to-coordinates (position)
+  "Translate a buffer position in the eterm buffer to screen coordinates"
+  (declare (special term-home-marker))
+  (save-excursion
+    (save-restriction
+      (narrow-to-region term-home-marker (point-max ))
+      (goto-char position)
+      (emacspeak-eterm-nuke-cached-info)
+      (let ((coordinates (cons
+                          (term-current-column)
+                          (term-current-row ))))
+        (emacspeak-eterm-nuke-cached-info)
+        coordinates ))))
+
+;;; return contents of a term window 
+(defun emacspeak-eterm-return-window-contents (eterm-window)
+  "Return  the contents of a window as a string"
+  (declare (special term-home-marker))
+  (let ((start nil)
+        (end nil)
+        (right-stretch (emacspeak-eterm-window-right-stretch eterm-window))
+        (left-stretch (emacspeak-eterm-window-left-stretch eterm-window))
+        (contents nil)
+        (top-left
+         (emacspeak-eterm-window-top-left eterm-window))
+        (bottom-right
+         (emacspeak-eterm-window-bottom-right eterm-window)))
+    (save-excursion
+      (save-restriction
+        (narrow-to-region term-home-marker (point-max))
+        (setq start (emacspeak-eterm-coordinates-to-position top-left)
+              end (emacspeak-eterm-coordinates-to-position bottom-right))
+        (setq contents
+              (cond
+               ((and left-stretch right-stretch );; stretchable window
+                (goto-char start )
+                (beginning-of-line )
+                (setq start (point))
+                (goto-char end)
+                (end-of-line )
+                (buffer-substring start (point)))
+               (right-stretch
+                (let  ((lines nil))
+                  (goto-char start )
+                  (while (< start end )
+                    (end-of-line)
+                    (push
+                     (buffer-substring start (point))
+                     lines)
+                    (forward-line 1)
+                    (beginning-of-line)
+                    (forward-char (car top-left))
+                    (setq start (point)))
+                  (setq lines (nreverse lines ))
+                  (mapconcat 'identity
+                             lines " \n ")))
+               (left-stretch
+                (let  ((lines nil))
+                  (goto-char start )
+                  (beginning-of-line)
+                  (setq start (point))
+                  (while (< start end )
+                    (forward-char (car bottom-right ))
+                    (push
+                     (buffer-substring start (point ))
+                     lines)
+                    (forward-line 1)
+                    (beginning-of-line)
+                    (setq start (point)))
+                  (setq lines (nreverse lines ))
+                  (mapconcat 'identity
+                             lines " \n ")))
+               (t (mapconcat 'identity
+                             (extract-rectangle start end )
+                             " \n "))))
+        (emacspeak-eterm-nuke-cached-info)
+        contents ))))
+
+(defvar emacspeak-eterm-maximum-windows 20
+  "Variable specifying how many windows can be defined.")
+
+(defvar emacspeak-eterm-window-table
+  (make-vector emacspeak-eterm-maximum-windows  nil)
+  "Vector of window positions.
+A terminal window is recorded by the  positions of its top left
+and bottom right.")
+
+(defun emacspeak-eterm-record-window  (window-id top-left bottom-right
+                                                 &optional right-stretch left-stretch )
+  "Insert this window definition into the table of
+terminal windows"
+  (declare (special emacspeak-eterm-window-table
+                    emacspeak-eterm-maximum-windows))
+  (assert (< window-id emacspeak-eterm-maximum-windows)  t
+          "Your installation of Emacspeak only supports %d windows"
+          emacspeak-eterm-maximum-windows )
+  (aset emacspeak-eterm-window-table window-id 
+        (emacspeak-eterm-make-window top-left bottom-right
+                                     right-stretch left-stretch)))
+
+(defun emacspeak-eterm-get-window (id)
+  "Retrieve a window"
+  (declare (special emacspeak-eterm-window-table
+                    emacspeak-eterm-maximum-windows))
+  (assert (<  id emacspeak-eterm-maximum-windows)  t
+          "Your installation of Emacspeak only supports %d windows"
+          emacspeak-eterm-maximum-windows )
+  (or (aref emacspeak-eterm-window-table  id)
+      (error "Window %s is not defined" id )))
+
+(defun emacspeak-eterm-define-window (id)
+  "Prompt for a window id
+and define it to be the rectangle delimited by point and eterm mark.
+This is to be used when emacspeak is
+set to review mode inside an eterm."
+  (interactive "nDefine window: ")
+  (declare (special emacspeak-eterm-marker emacspeak-eterm-pointer
+                    emacspeak-eterm-maximum-windows))
+  (assert (<  id emacspeak-eterm-maximum-windows)  t
+          "Your installation of Emacspeak only supports %d windows"
+          emacspeak-eterm-maximum-windows )
+  (let  ((top-left
+          (emacspeak-eterm-position-to-coordinates (marker-position emacspeak-eterm-marker)))
+         (bottom-right
+          (emacspeak-eterm-position-to-coordinates (marker-position
+                                                    emacspeak-eterm-pointer)))
+         (right-stretch
+          (y-or-n-p "Should the window stretch to the right as required "))
+         (left-stretch
+          (y-or-n-p "Should the window stretch to the left as required ")))
+        (emacspeak-eterm-record-window  id top-left bottom-right
+                                        right-stretch left-stretch)
+        (message "Defined %s window %s
+with top left at %s %s
+and bottom right at %s %s"
+                 (cond
+                  ((and left-stretch right-stretch)
+                   " stretchable ")
+                  (left-stretch " left stretchable")
+                  (right-stretch " right stretchable ")
+                  (t " "))
+                 id (cdr top-left) (car top-left)
+                 (cdr bottom-right) (car bottom-right ))))
+
+(emacspeak-fix-interactive-command-if-necessary 'emacspeak-eterm-define-window)
+
+(defun emacspeak-eterm-speak-window (id)
+  "Speak an eterm window. "
+  (interactive "nSpeak window")
+  (declare (special emacspeak-eterm-maximum-windows
+                    term-home-marker ))
+  (assert (<  id emacspeak-eterm-maximum-windows)  t
+          "Your installation of Emacspeak only supports %d windows"
+          emacspeak-eterm-maximum-windows )
+  (save-excursion
+    (save-restriction
+      (narrow-to-region term-home-marker (point-max ))
+       (dtk-speak
+        (emacspeak-eterm-return-window-contents
+         (emacspeak-eterm-get-window id ))))))
+
+
+
+(emacspeak-fix-interactive-command-if-necessary 'emacspeak-eterm-speak-window)
+(defun emacspeak-eterm-yank-window (id)
+  "Yank contents of  an eterm window
+at point. "
+  (interactive "nYank contents of window")
+  (declare (special emacspeak-eterm-maximum-windows
+                    term-home-marker ))
+  (assert (<  id emacspeak-eterm-maximum-windows)  t
+          "Your installation of Emacspeak only supports %d windows"
+          emacspeak-eterm-maximum-windows )
+  (insert 
+   (save-excursion
+     (save-restriction
+       (narrow-to-region term-home-marker (point-max ))
+       (emacspeak-eterm-return-window-contents
+        (emacspeak-eterm-get-window id )))))
+  (emacspeak-auditory-icon 'yank-object)
+  (message "Yanked contents of window %s at point" id ))
+(emacspeak-fix-interactive-command-if-necessary 'emacspeak-eterm-yank-window )
+
+
+
+(defun emacspeak-eterm-describe-window  (id)
+  "Describe an eterm  window.
+Description indicates eterm window coordinates and whether it is stretchable"
+  (interactive "nDescribe window: ")
+  (let* ((window (emacspeak-eterm-get-window id ))
+    (top-left (emacspeak-eterm-window-top-left window))
+    (bottom-right (emacspeak-eterm-window-bottom-right window ))
+    (right-stretch (emacspeak-eterm-window-right-stretch window))
+    (left-stretch (emacspeak-eterm-window-left-stretch window )))
+    (message " %s window %s
+has  top left at %s %s
+and bottom right at %s %s"
+             (cond
+              ((and left-stretch right-stretch)
+               " stretchable ")
+              (left-stretch " left stretchable")
+              (right-stretch " right stretchable ")
+              (t " "))
+             id (cdr top-left) (car top-left)
+             (cdr bottom-right) (car bottom-right ))))
+
+(emacspeak-fix-interactive-command-if-necessary
+ 'emacspeak-eterm-describe-window)
+
+
+
+
+(defvar emacspeak-eterm-focus-window nil
+  "Current window that emacspeak eterm focuses on")
+
+(defun emacspeak-eterm-set-focus-window (flag)
+  "Prompt for the id of a predefined window,
+and set the `focus' window to it.
+Non-nil interactive prefix arg `unsets' the focus window;
+this is equivalent to having the entire terminal as the focus window (this is
+what eterm starts up with).
+Setting the focus window results in emacspeak only monitoring screen
+activity in that area of the screen."
+  (interactive "P")
+  (declare (special emacspeak-eterm-focus-window ))
+  (let  ((window-id nil))
+    (cond
+     (flag (setq emacspeak-eterm-focus-window nil)
+      (message "Emacspeak eterm focus set to entire screen "))
+        (t
+         (setq window-id
+               (read-minibuffer  "Specify eterm window to focus on "))
+         (assert (numberp window-id) t
+                 "Please specify a valid window id, a non-negative integer ")
+    (setq emacspeak-eterm-focus-window window-id )
+    (message "Set emacspeak eterm's focus window  to %d " window-id )))))
+
+(defun emacspeak-eterm-speak-predefined-window ()
+  "Speak a predefined eterm window between 1 and 10."
+  (interactive)
+        (emacspeak-eterm-speak-window
+         (condition-case nil
+             (read (format "%c" last-input-event ))
+           (error nil ))))
+
+;;}}}
+;;{{{  advice emulator
+
+(defvar eterm-current-personality nil
+  "Current personality for eterm. ")
+
+(defadvice term (before emacspeak pre act)
+"Single window please!"
+(delete-other-windows))
+
+(defadvice term-mode   (after emacspeak pre act )
+  "Customize eterm to work with Emacspeak.
+Additional commands provided by emacspeak under eterm are
+available with the prefix emacspeak-eterm-prefix and are listed below:
+\\{emacspeak-eterm-keymap}"
+  (declare (special emacspeak-eterm-pointer emacspeak-eterm-marker))
+  (emacspeak-eterm-setup-keys )
+  (emacspeak-eterm-setup-raw-keys)
+  (make-local-variable 'eterm-current-personality)
+  (setq eterm-current-personality 'eterm-default-personality)
+  (voice-lock-mode 1)
+  (make-local-variable 'emacspeak-eterm-pointer)
+  (setq emacspeak-eterm-pointer  (copy-marker (point)))
+  (make-local-variable 'emacspeak-eterm-marker)
+  (setq emacspeak-eterm-marker  (copy-marker (point))))
+
+(defvar emacspeak-eterm-row nil
+  "Record the eterm row last spoken")
+
+(defvar emacspeak-eterm-column nil
+  "Record the column last spoken")
+
+(defvar emacspeak-eterm-pointer nil
+  "Terminal pointer. Can be moved around to listen to the contents of the
+terminal. See commands provided by the emacspeak extension to eterm:
+\\{emacspeak-eterm-keymap}.
+Each term-mode buffer has a buffer local value of this variable. ")
+
+(defvar emacspeak-eterm-marker nil
+  "Mark set in an eterm buffer. Used to cut and paste from the terminal.")
+
+(defvar emacspeak-eterm-autospeak t
+  "Tells if eterm output is automatically spoken when in line mode.
+Use command emacspeak-toggle-eterm-autospeak bound to
+\\[emacspeak-toggle-eterm-autospeak] to set this.")
+  
+(make-variable-buffer-local 'emacspeak-eterm-autospeak)
+  
+(defun emacspeak-toggle-eterm-autospeak (&optional prefix)
+  "Toggle state of eterm autospeak.
+When eterm autospeak is turned on and the terminal is in line mode,
+all output to the terminal is automatically spoken. 
+  Interactive prefix arg means toggle  the global default value, and then set the
+  current local  value to the result. "
+  (interactive  "P")
+  (declare (special emacspeak-eterm-autospeak))
+  (let ((dtk-stop-immediately nil ))
+  (cond
+   (prefix
+    (setq-default  emacspeak-eterm-autospeak
+                   (not  (default-value 'emacspeak-eterm-autospeak )))
+    (setq emacspeak-eterm-autospeak (default-value 'emacspeak-eterm-autospeak )))
+   (t (setq emacspeak-eterm-autospeak 
+	    (not emacspeak-eterm-autospeak ))))
+  (message "Turned %s eterm autospeak %s"
+           (if emacspeak-eterm-autospeak "on" "off")
+            (if prefix "globally" "locally"))
+  (emacspeak-auditory-icon
+   (if emacspeak-eterm-autospeak 'on 'off))))
+
+(defvar eterm-line-mode nil 
+  "T if eterm is in line mode.")
+
+(defvar eterm-char-mode t
+  "Flag indicating if eterm is in char mode.")
+
+
+(defvar emacspeak-eterm-pointer-mode t 
+  "If T then the emacspeak pointer will not track the terminal cursor.
+Do not set this by hand.
+Use command emacspeak-eterm-toggle-pointer-mode bound to
+\\[emacspeak-eterm-toggle-pointer-mode].")
+
+
+(defadvice  term-emulate-terminal (around emacspeak pre act compile )
+  "Record position, emulate, then speak what happened.
+Also keep track of terminal highlighting etc.
+If a `current window`
+is set (see command emacspeak-eterm-set-focus-window
+bound to \\[emacspeak-eterm-set-focus-window].
+How output is spoken  depends on whether the terminal is in
+character or line mode.
+When in character mode, output is spoken like off a real terminal.
+When in line mode,
+behavior resembles that of comint mode;
+i.e. you hear the output if emacspeak-eterm-autospeak is t.
+Do not set this variable by hand:
+See command emacspeak-toggle-eterm-autospeak bound to 
+\\[emacspeak-toggle-eterm-autospeak]"
+  (declare (special emacspeak-eterm-row emacspeak-eterm-column
+                    eterm-line-mode eterm-char-mode
+                    emacspeak-eterm-focus-window emacspeak-eterm-pointer-mode
+                    emacspeak-eterm-autospeak 
+                    term-current-row term-current-column))
+  (let ((emacspeak-eterm-row (term-current-row ))
+        (emacspeak-eterm-column (term-current-column ))
+        (end (point-max))
+        (current-char (preceding-char ))
+        (new-end nil)
+        (new-row nil)
+        (new-column nil )
+        (old-point (point))
+        (dtk-stop-immediately (not eterm-line-mode)))
+    (save-match-data 
+      (ad-enable-advice  'put-text-property 'after 'eterm )
+      (ad-activate-on 'put-text-property) 
+      ad-do-it
+      (ad-disable-advice  'put-text-property 'after 'eterm )
+      (ad-activate-off 'put-text-property))
+    (setq new-row (term-current-row )
+          new-column (term-current-column )
+          new-end (point-max))
+    (when (and 
+           (window-live-p
+            (get-buffer-window (process-buffer (ad-get-arg 0))))
+           (or  (not emacspeak-eterm-focus-window )
+                (and (emacspeak-eterm-coordinate-within-window-p
+                      (cons new-column new-row )
+                      emacspeak-eterm-focus-window )
+                     (emacspeak-eterm-coordinate-within-window-p
+                      (cons emacspeak-eterm-column emacspeak-eterm-row )
+                      emacspeak-eterm-focus-window ))))
+      (cond
+       ((and  eterm-line-mode
+              emacspeak-eterm-autospeak)
+        (setq dtk-stop-immediately nil)
+        (emacspeak-dtk-sync)
+        (condition-case nil 
+            (emacspeak-speak-region
+             (1- old-point)
+             (1- (point )))
+          (error nil )))
+       ((and (= last-input-event 127)
+             (= new-row emacspeak-eterm-row )
+             (= -1 (- new-column emacspeak-eterm-column ))
+             current-char)              ;you backspaced?
+        (emacspeak-speak-this-char current-char)
+        (delete-char  1)
+        (dtk-tone 500 50))
+       ((and (= new-row emacspeak-eterm-row )
+             (= 1 (- new-column emacspeak-eterm-column ))
+             (> new-end end ))          ;you inserted a character:
+        (if (= 32 (preceding-char ))
+            (save-excursion
+              (backward-char 2)
+              (emacspeak-speak-word nil))
+          (emacspeak-speak-this-char (preceding-char ))))
+       ((and (= new-row emacspeak-eterm-row )
+             (= 1 (abs(- new-column emacspeak-eterm-column ))))
+        (emacspeak-speak-this-char (following-char )))
+       ((= emacspeak-eterm-row new-row)
+        (emacspeak-speak-word ))
+       (t (emacspeak-speak-line nil )))
+      (when (and (not  emacspeak-eterm-pointer-mode )
+                 emacspeak-eterm-pointer)
+        (emacspeak-eterm-pointer-to-cursor)))))
+
+
+
+
+
+ (defun emacspeak-eterm-toggle-pointer-mode (flag)
+   "Toggle emacspeak eterm pointer mode.
+With optional interactive prefix  arg, turn it on.
+When emacspeak eterm is in pointer mode, the eterm read pointer
+stays where it is rather than automatically moving to the terminal cursor when
+there is terminal activity."
+   (interactive "P")
+   (declare (special emacspeak-eterm-pointer-mode ))
+   (cond
+    (flag (setq emacspeak-eterm-pointer-mode t ))
+    (t (setq emacspeak-eterm-pointer-mode
+          (not emacspeak-eterm-pointer-mode ))))
+   (message "Turned %s emacspeak eterm pointer mode"
+            (if emacspeak-eterm-pointer-mode
+                "on" "off")))
+
+   
+(defadvice term-dynamic-complete (around emacspeak pre act)
+  "Speak the completion. "
+  (declare (special emacspeak-eterm-row term-current-row))
+  (let  ((saved-point (point)))
+    ad-do-it
+    (unless (= saved-point (point))
+      (emacspeak-speak-region saved-point (point)))
+    ad-return-value )
+  )
+
+(defadvice put-text-property (after eterm pre act) 
+  "Used by emacspeak to highlight successfully in eterm. "
+  (let ((start (ad-get-arg 0))
+        (end (ad-get-arg 1 ))
+        (prop (ad-get-arg 2))
+        (value (ad-get-arg 3 )))
+    (if (eq prop 'face) 
+        (save-match-data
+          (cond
+           ((eq value 'bold)
+            (put-text-property start end
+                               'personality 'eterm-bold-personality))
+           ((eq value 'highlight)
+            (put-text-property start end
+                               'personality 'eterm-highlight-personality ))
+           ((eq value 'term-underline-face )
+            (put-text-property start end
+                               'personality 'eterm-underline-personality))
+           (t  nil )))))
+  )
+
+(defadvice term-line-mode (after emacspeak pre act)
+  "Announce that you entered line mode. "
+  (declare (special eterm-char-mode  eterm-line-mode))
+  (make-local-variable 'eterm-line-mode)
+  (or (assq 'eterm-line-mode minor-mode-alist)
+      (setq minor-mode-alist
+            (append minor-mode-alist
+                    '((eterm-line-mode " Line")))))
+  (setq eterm-char-mode nil 
+        eterm-line-mode t )
+  (when (interactive-p)
+    (dtk-speak "Terminal line mode. "))
+  )
+
+(defadvice term-char-mode (after emacspeak pre act)
+  "Announce you entered character mode. "
+  (declare (special eterm-char-mode  eterm-line-mode))
+  (make-local-variable'term-char-mode)
+  (or (assq 'eterm-char-mode minor-mode-alist)
+      (setq minor-mode-alist
+            (append minor-mode-alist
+                    '((eterm-char-mode " Character")))))
+  (setq eterm-char-mode t
+        eterm-line-mode nil )
+  (emacspeak-eterm-setup-raw-keys)
+  (when (interactive-p)
+    (dtk-speak "Terminal character mode. "))
+  )
+
+;;}}}
+;;{{{  Advice term functions that duplicate functionality of their comint
+
+counterparts
+
+(defadvice term-next-input (after emacspeak pre act)
+  "Speak the line. "
+  (when (interactive-p)
+    (emacspeak-speak-line )))
+
+(defadvice term-next-matching-input (after emacspeak pre act)
+  "Speak the line. "
+  (when (interactive-p)
+    (emacspeak-speak-line )))
+
+
+(defadvice term-previous-input (after emacspeak pre act)
+  "Speak the line. "
+  (when (interactive-p)
+    (emacspeak-speak-line )))
+
+(defadvice term-previous-matching-input (after emacspeak pre act)
+  "Speak the line. "
+  (when (interactive-p)
+    (emacspeak-speak-line )))
+
+(defadvice term-send-input (after emacspeak pre act)
+  "Flush any ongoing speech"
+  (when (interactive-p)
+    (dtk-stop)))
+
+(defadvice term-previous-prompt (after emacspeak pre act )
+  "Provide spoken feedback"
+  (when (interactive-p)
+    (emacspeak-auditory-icon 'large-movement)
+    (if (eolp)
+        (emacspeak-speak-line)
+    (emacspeak-speak-line 1))))
+
+(defadvice term-next-prompt (after emacspeak pre act )
+  "Provide spoken feedback"
+  (when (interactive-p)
+    (emacspeak-auditory-icon 'large-movement)
+    (if (eolp)
+        (emacspeak-speak-line)
+    (emacspeak-speak-line 1))))
+(defadvice term-dynamic-list-input-ring (after emacspeak pre act)
+  "Provide auditory feedback"
+  (message  "Switch to the other window to browse the input history. "))
+
+(defadvice term-kill-output (after emacspeak pre act )
+  "Provide auditory feedback"
+  (when (interactive-p)
+    (emacspeak-auditory-icon 'delete-object)
+    (message "Nuked output of last command ")))
+
+(defadvice term-quit-subjob (after emacspeak pre act )
+  "Provide auditory feedback"
+  (when (interactive-p)
+    (message "Sent quit signal to subjob ")))
+
+(defadvice term-stop-subjob (after emacspeak pre act )
+  "Provide auditory feedback"
+  (when (interactive-p)
+    (message "Stopped the subjob")))
+
+(defadvice term-interrupt-subjob (after emacspeak pre act )
+  "Provide auditory feedback"
+  (when (interactive-p)
+    (message "Interrupted  the subjob")))
+
+(defadvice term-kill-input (before emacspeak pre act )
+  "Provide spoken feedback"
+  (when (interactive-p)
+    (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
+    (when  (> (point) (marker-position pmark))
+      (emacspeak-auditory-icon 'delete-object )
+	(emacspeak-speak-region  pmark (point))))))
+
+(defadvice term-dynamic-list-filename-completions (after emacspeak pre act )
+  "Provide auditory feedback"
+  (when (interactive-p)
+    (message "Switch to the completions window to browse the possible
+completions for filename at point")))
+
+;;}}}
+;;{{{  Launch remote terminals
+
+(defun emacspeak-remote-term (host )
+  "Start a terminal-emulator in a new buffer."
+  (interactive "sEnter remote host name: ")
+  (require 'term)
+  (require 'tshell)
+  (set-buffer (make-term (format "%s-terminal" host)
+                         "rlogin"nil  host))
+  (tshell-mode)
+  (term-char-mode)
+  (switch-to-buffer (format "*%s-terminal*" host) ))
+
+     (emacspeak-fix-interactive-command-if-necessary 'emacspeak-remote-term)
+  
+
+;;}}}
+ (provide 'emacspeak-eterm)
+;;{{{  emacs local variables
+
+;;; local variables:
+;;; folded-file: t
+;;; end: 
+
+;;}}}
diff -uNr ../emacspeak-6.0.orig/info/Makefile ./info/Makefile
--- ../emacspeak-6.0.orig/info/Makefile	Mon May  5 13:59:32 1997
+++ ./info/Makefile	Sun Jun  1 13:29:54 1997
@@ -4,6 +4,11 @@
 infodir =/usr/info#normally supplied by caller
 INSTALL = install
 
+docs: emacspeak.html info
+
+emacspeak.html: emacspeak-main.texinfo
+	texi2html -monolithic emacspeak.texinfo
+
 info: emacspeak.texinfo emacspeak-main.texinfo
 	makeinfo emacspeak.texinfo
 install: emacspeak.info
diff -uNr ../emacspeak-6.0.orig/info/Makefile.orig ./info/Makefile.orig
--- ../emacspeak-6.0.orig/info/Makefile.orig	Wed Dec 31 19:00:00 1969
+++ ./info/Makefile.orig	Mon May  5 13:59:32 1997
@@ -0,0 +1,126 @@
+PERL = perl
+TEXINDEX=texindex
+MAKEINFO = makeinfo 
+infodir =/usr/info#normally supplied by caller
+INSTALL = install
+
+info: emacspeak.texinfo emacspeak-main.texinfo
+	makeinfo emacspeak.texinfo
+install: emacspeak.info
+	if test ! -f $(infodir)/dir ; then \
+		echo '  --- PLEASE ADD DOCUMENTATION TO THIS TREE. (See INFO topic first.) ---' >$(infodir)/dir ; \
+	  echo '* Menu:' >>$(infodir)/dir ; \
+	fi 
+	if fgrep emacspeak $(infodir)/dir 1> /dev/null 2> /dev/null; then \
+	  echo >/dev/null; \
+	else \
+	  echo '* Emacspeak:(emacspeak).  A speech interface to Emacs' >>$(infodir)/dir ;\
+	fi
+	$(INSTALL)  -m 644 emacspeak.info* $(infodir)
+
+emacspeak.info: emacspeak.texinfo emacspeak-main.texinfo
+	$(MAKEINFO) emacspeak.texinfo
+
+emacspeak-main.texinfo: all.el explain
+	$(PERL) explain all.el >all.log
+
+ELISP=../*.el
+
+# all.el is all of the elisp files concatenated (with some substitutions)
+all.el: $(ELISP)
+	cat $(ELISP) | sed \
+	-e 's/\\\\\[dtk-emergency-restart\]/@samp{M-x dtk-emergency-restart}/'\
+	-e 's/\\\\\[dtk-initialize\]/@samp{M-x dtk-initialize}/' \
+	-e 's/\\\\\[keyboard-quit\]/@samp{C-g}/' \
+	-e 's/\\\\\[yank\]/@samp{C-y}/' \
+	-e 's/\\\\\[yank-pop\]/@samp{ESC y}/' \
+	-e 's/\\\\\[voice-lock-voiceify-buffer\]/@samp{M-x voice-lock-voiceify-buffer}/' \
+	> all.el
+
+SRC= emacspeak.texinfo  explain Makefile 
+
+dist: $(SRC)
+	distname=`sed -e '/\$Revision:/!d' \
+		-e 's/[^0-9]*\([0-9.]*\).*/emacspeak-texi-\1/' \
+		-e q emacspeak.texinfo`; \
+	rm -fr $$distname; \
+	mkdir $$distname; \
+	for file in $(SRC); do \
+	  ln $$file $$distname/$$file \
+	  || { echo copying $$file instead; cp -p $$file $$distname/$$file;}; \
+	done; \
+	chmod -R a+rX $$distname; \
+	tar -chz -f $$distname.tar.gz $$distname; \
+	rm -fr $$distname
+
+TEXINFO = dtk-speak.texinfo \
+dtk-tcl.texinfo \
+emacspeak-advice.texinfo \
+emacspeak-auctex.texinfo \
+emacspeak-bbdb.texinfo \
+emacspeak-bibtex.texinfo \
+emacspeak-buff-sel.texinfo \
+emacspeak-c.texinfo \
+emacspeak-calc.texinfo \
+emacspeak-calendar.texinfo \
+emacspeak-compile.texinfo \
+emacspeak-dired.texinfo \
+emacspeak-dismal.texinfo \
+emacspeak-dmacro.texinfo \
+emacspeak-ediff.texinfo \
+emacspeak-enriched.texinfo \
+emacspeak-eterm.texinfo \
+emacspeak-fix-interactive.texinfo \
+emacspeak-folding.texinfo \
+emacspeak-forms.texinfo \
+emacspeak-gnus.texinfo \
+emacspeak-hyperbole.texinfo \
+emacspeak-info.texinfo \
+emacspeak-keymap.texinfo \
+emacspeak-kotl.texinfo \
+emacspeak-main.texinfo \
+emacspeak-man.texinfo \
+emacspeak-message.texinfo \
+emacspeak-new-ediff.texinfo \
+emacspeak-oo-browser.texinfo \
+emacspeak-outline.texinfo \
+emacspeak-perl.texinfo \
+emacspeak-pronounce.texinfo \
+emacspeak-redefine.texinfo \
+emacspeak-rmail.texinfo \
+emacspeak-sgml-mode.texinfo \
+emacspeak-sounds.texinfo \
+emacspeak-speak.texinfo \
+emacspeak-table-ui.texinfo \
+emacspeak-tabulate.texinfo \
+emacspeak-tapestry.texinfo \
+emacspeak-tcl.texinfo \
+emacspeak-tempo.texinfo \
+emacspeak-view-process.texinfo \
+emacspeak-view.texinfo \
+emacspeak-vm.texinfo \
+emacspeak-w3.texinfo \
+emacspeak-widget.texinfo \
+emacspeak-wrolo.texinfo \
+variables.texinfo \
+voice-lock.texinfo 
+
+
+clean:
+	rm -rf all.el all.log $(TEXINFO)
+
+veryclean: clean
+	rm -rf emacspeak.info*
+
+
+emacspeak.dvi:		emacspeak.texinfo
+	tex emacspeak.texinfo
+	$(TEXINDEX) emacspeak.cp  emacspeak.fn  emacspeak.ky  emacspeak.pg  emacspeak.tp  emacspeak.vr
+	tex emacspeak.texinfo
+	rm -f 	emacspeak.cp  emacspeak.fn  emacspeak.ky  emacspeak.pg  emacspeak.tp  emacspeak.vr 	\
+		emacspeak.cps emacspeak.fns emacspeak.kys emacspeak.pgs emacspeak.tps emacspeak.vrs	\
+		emacspeak.log emacspeak.toc emacspeak.aux
+
+print: emacspeak.dvi
+	dvips emacspeak.dvi
+