Update
[uemacs.git] / README
blob0fffdbb18f67c2fa6c07543713e469e1f6e79b41
1 +---------------+
2 | uemacs editor |
3 +---------------+
5 uemacs is a full screen editor based on uEmacs/PK 4.0. This particular
6 version is intended to run on current Linux systems as well as on BSD
7 variants and therefore cleans up legacy code from the old MSDOS and
8 friends era. Furthermore, this version got permission by aquest/Greg
9 Mowczko to be released under the terms of GPL, version 2.
11 The public GIT repository of this fork is available at:
12     http://repo.or.cz/w/uemacs.git
14 For questions or patches you are welcome to write an email to:
15     Daniel Borkmann <borkmann@gnumaniacs.org>
17 Have a look at the INSTALL file for setup instructions and at the
18 HACKING file for uemacs code hacking. Have fun!
20 Old READMEs:
22 +---------------+
23 | uEmacs/PK 4.0 |
24 +---------------+
26         Full screen editor based on MicroEMACS 3.9e
28         MicroEMACS was written by Dave G. Conroy and
29         greatly modified by Daniel M. Lawrence
31         Copyright Notices:
33         MicroEMACS 3.9 (c) Copyright 1987 Daniel M. Lawrence.
34         Reference Manual Copyright 1987 by Brian Straight and
35         Daniel M. Lawrence. No copyright claimed for modifications
36         made by Petri H. Kutvonen.
38         Original statement of copying policy:
40         MicroEMACS 3.9 can be copied and distributed freely for any
41         non-commercial purposes. MicroEMACS 3.9 can only be incorporated
42         into commercial software with the permission of the current author
43         [Daniel M. Lawrence].
46 WHAT IS uEmacs/PK?
48 uEmacs/PK 4.0 is an enhanced version of MicroEMACS 3.9e. Enhancements
49 have been incorporated by Petri H. Kutvonen, University of Helsinki,
50 Finland <kutvonen@cs.Helsinki.FI>.
53 WHY IS IT BASED ON AN OLD VERSION OF MicroEMACS?
55 In my opinion 3.9e was the best of all MicroEMACSes. Creeping
56 featurism, growing size, and reduced portability made versions 3.10 and
57 3.11 less attractive. MicroEMACS 3.9e was one of the few editors that
58 were truly portable between different flavours of UNIX, PC/MS-DOS, and
59 VAX/VMS. It was pretty robust - although not flawless. uEmacs/PK 4.0
60 includes numerous bug fixes, adds some new functionality and comfort but
61 does not sacrifice the best things (small size and portability).
64 WHAT IS NEW - COMPARED TO MicroEMACS 3.9e?
66 Enhachements:
68 o  advisory file locking on BSD-derived systems
69 o  new screen update algorithm, borrowed largely form "vile" by
70    Paul G. Fox <pgf@cayman.com>, uEmacs can now be used on slow (1200 bps)
71    connections because it uses terminal scrolling capabilities
72 o  new variables $scroll, $jump, and $overlap to control scrolling
73 o  uEmacs reacts to windows size change signals (UNIX), also from "vile"
74 o  automatic file name completion, works under UNIX and PC/MS-DOS
75 o  functions keys on VT200 style keyboards can be used
76 o  new command: justify-paragraph (Meta J)
77 o  something important for us Europeans: allow the use of 8 bit ISO Latin 1
78    alphabet (UNIX and VMS), on an IBM-PC the accented characters are
79    interpreted as letters too
80 o  the characters {|}[\] can be interpreted as letters, these are
81    frequently used as "national replacement characters" especially in
82    the Nordic countries
83 o  allow use of XON/XOFF flow control: alternative key sequences for
84    ^S and ^Q, don't disable flow control
85 o  speed up reading of files (under VMS especially)
86 o  new variable $tab, hardware tab stop (4 or 8)
87 o  automatic configuration on some common systems
88 o  new style mode line, includes percentage indicator
89 o  new help file
91 Bug fixes - not very interesting:
93 o  use TI and TE termcap strings, uEmacs works now correctly under
94    Sunview and OpenWindows
95 o  use old protection mask on existing files (VMS)
96 o  catch data overrun errors (VMS)
97 o  allow VMS file names with characters < and >, replacements for [ and ]
98 o  allow ANSI screens larger than 24 lines
99 o  fix add/delete(-global)-mode
100 o  display EOF as char = 0x0, not as garbage
101 o  allow upper case letters in answers
102 o  fix command interpreter spawning
103 o  don't use reverse video on some (TVI925 style) terminals
104 o  fix message line writing
105 o  fix replace/undo
106 o  fix &left and &mid functions
107 o  fix documentation
108 o  smaller bug fixes are too numerous to mention
110 Something is gone:
112 o  removed (obsolete and untested) support for Amiga, Atari, and Mac
115 WHERE HAS IT BEEN TESTED?
117 uEmacs/PK 4.0 has been tested by myself on the following platforms:
119         IBM PC and compatibles, PC/MS-DOS 3.2 and up
120         Sun 3, SunOS 4.1.1
121         SPARC, SunOS 4.1.X and 5.{2|3|4|5} (Solaris 2)
122         VAX 8800 and 6000-420, VMS 5.4
123         DECstation 3100, Ultrix V4.1
124         IBM RS/6000, AIX 3.1.5
125         IBM PS/2, UNIX System V/386 Release 3.2
126         uVAX II, Ultrix V2.0
127         AT&T 3B2/400, UNIX System V Release 2.0
128         Various Toshiba i486 laptops, Linux 0.99pl13 thru 2.0.21
130 I have no reason to believe that there would be any problems to port
131 uEmacs/PK 4.0 to any reasonable BSD-, OSF/1-, or SVR4-based UNIX system.
134 HOW CAN I GET IT?
136 uEmacs/PK is available by anonymous FTP from ftp.cs.Helsinki.FI (IP
137 address can change) in the directory pub/Software/Local/uEmacs-PK. You
138 cannot get it by email of uucp. Hopefully it will bee soon available
139 from other file servers too.
142 WHAT IS IN THE PACKAGE
144 o  em-4.0.<x>.tar.gz:   full source, make and command files to build the
145                         editor, reference manual as a MS-Write document,
146                         tarred and gzipped, for patchlevel <x>
148 o  there used to be a packages with binaries for PC/MS-DOS,
149    SPARC/SunOS4, Sun 3, MIPS/Ultrix, 386/ix, IBM RS/6000, VAX/VMS,
150    if you are really desperate you can try contacting me for an old
151    version of these
154 HOW TO INSTALL uEmacs/PK?
156 o  PC/MS-DOS: Compile the package with using Turbo C 2.0 or MSC 6.0.
157          (Pretty obsolete both of these.) There are some support files
158          you might find useful in the full distribution.
160 o  UNIX: Copy makefile.unx to makefile, edit to taste, look at estruct.h,
161          do a 'make', test the editor, 'make install'.
163 o  VMS:  To compile use '@VMSMAKE', install manually, uEmacs/PK uses a
164          logical name EMACS_DIR to locate its initialization files.
167 CONTACT INFORMATION
169 There will probably not be many new versions of uEmacs/PK, maybe just
170 some bug fixes. I have no intention to develope the code any further.
171 However, if you have some comments or good suggestions, you may find
172 the email address below useful.
174 Petri H. Kutvonen
175 Department of Computer Science
176 P.O.Box 26 (Teollisuuskatu 23)
177 FIN-00014 UNIVERSTITY OF HELSINKI
178 Finland
180 email: kutvonen@cs.Helsinki.FI
181 fax:   +358 9 70844441
184 ACKNOWLEDGEMENTS AND STATUS
186 I would like to thank Linus Torvalds and Jyrki Havia for their work on
187 some bugs. uEmacs/PK 4.0.10 included fixes for a number of bugs and it
188 was assumed to be the final release for the UNIX platform. However,
189 there has been a couple of maintenance releases, so the final version is
190 4.0.13. On other platforms there has been no new releases since 4.0.3 in
191 1991.
193 April 23, 1995
195 And yet another release (thanks Linus)! This is most definitely the
196 really last (not latest) version, 4.0.14. Hmm ... 14 looks nicer than 13.
198 May 2, 1996
200 Still one more release - or actually a small patch - which closes a
201 potential security hole. Now we are at 4.0.15. This IS the FINAL release!
203 September 25, 1996
206                 MicroEMACS 3.9 Release Notes    July 22, 1987
208 **********************************************************************
210         (C)opyright 1987 by Daniel M. Lawrence
211         MicroEMACS 3.9 can be copied and distributed freely for any
212         non-commercial purposes. MicroEMACS 3.9 can only be incorporated
213         into commercial software with the permission of the current author.
215 **********************************************************************
217         MicroEMACS 3.9 is availible in a couple of different ways. 
218 First, it is availible via my bulletin board system..... 
220         The Programmer's Room
221         FIDO 201/2
222         (317) 742-5533
223         24 hours  300/1200 baud
225         Also it should be online on the following BBS's:
227         The Starship Trooper    Fido 201/1      (317) 423-2281  2400
229         [These following two are open from 10pm till 5pm
230                                 and only while Purdue is in session]
231         The NightStaff          Fido 201/4      (317) 495-4270  1200
232         The Access Violation    Fido 201/5      (317) 495-4270  9600
234         There it is arranged as three MSDOS .ARC files, EMACSDOC.ARC
235 which contains the documentation and command files, EMACSSRC.ARC which
236 contains the sources and the UNIX Makefile, and EMACSEXE.EXE which
237 contains the MSDOS executables.  Also all the various executables are
238 available individually.
240 EMACSDOC.ARC includes the files:
242         README          This file
243         
244         (These four files should be in your path for the standard setup)
245         EMACS.RC        Standard startup file
246         NEWPAGE.CMD     Shifted Function key Pager
247         PPAGE.CMD       Programming page
248         WPAGE.CMD       Word processing page
249         BPAGE.CMD       Block and box manipulation page
251         ME110.RC        HP110 startup file
252         ME150.RC        HP150 startup file
253         AMIGA.RC        AMIGA ".emacsrc" startup file
254         ST520.RC        ATARI ST startup file
256         EMACS.HLP       Online help file
257         EMACS.MSS       MicroSCRIBE format of EMACS.TXT
258         EMACS.TXT       EMACS BEGINNER'S/REFERENCE MANUAL
260         AZMAP.CMD       Translate AZTEC .SYM files to .MAP
261         BDATA.CMD       BASIC Data statement builder
262         FINDCOM.CMD     Find mismatched C comments
263         FUNC.CMD        Allow function keys on systems with non (like UNIX)
264         MENU.CMD        Sample Menu system
265         MENU1              datafile for menu system
266         SHELL.CMD       Sample interactive MSDOS shell
267         TRAND.CMD       Generate random numbers and do statistics on them
269 EMACSSRC.ARC includes the files:
271         ALINE.H         Atari ST graphic header file
272         ANSI.C          ANSI screen driver
273         BASIC.C         basic cursor movement
274         BIND.C          key binding commands
275         BUFFER.C        buffer manipulation commands
276         CRYPT.C         encryption functions
277         DOLOCK          file locking stub routines
278         DG10.C          Data General 10 screen driver
279         DISPLAY.C       main display driver
280         EBIND.H         binding list
281         EDEF.H          global variable declarations
282         EFUNC.H         function name list
283         EPATH.H         default path settings
284         ESTRUCT.H       configuration and structure definitions
285         EVAL.C          expression evaluator
286         EVAR.H          EMACS macro variable declarations
287         EXEC.C          macro execution functions
288         FILE.C          user file functions
289         FILEIO.C        low level file I/O driver
290         HP110.C         HP110 screen driver
291         HP150.C         HP150(A or C) screen driver
292         IBMPC.C         IBM-PC CGA and MONOCHROME driver
293         INPUT.C         low level user input driver
294         ISEARCH.C       incremental search functions
295         LINE.C          text line manipulation functions
296         LOCK.C          file locking functions
297         MAIN.C          argument parsing and command loop
298         RANDOM.C        other random user functions
299         REGION.C        region cut & paste functions
300         SEARCH.C        search and replace functions
301         SPAWN.C         OS interface driver
302         ST520.C         ATARI ST1040 screen driver
303         TCAP.C          Termcap screen driver
304         TERMIO.C        low level I/O driver
305         TIPC.C          TI-PC screen driver
306         VMSVT.C         VMS screen driver
307         VT52.C          VT52 screen driver
308         WINDOW.C        window manipulation functions
309         WORD.C          word manipulation functions
310         Z309.C          Zenith 100 PC series terminal driver
312 EMACSEXE.ARC includes the files:
314         MEIBM.EXE       IBM-PC CGA/MONO/EGA version
315         MEANSI.EXE      MSDOS ANSI graphics version
316         ME110.EXE       HP110 portable version
317         ME150.EXE       HP150 version
318         ME309.EXE       Zenith 100 PC series version
319         ME520.PRG       Atari 520/1040ST version
320         MEAMIGA.        Amiga 1000 version
322         Recently, MicroSPELL 1.0 has been released.  This program allows
323 you to spell check text files and uses MicroEMACS to scan the file,
324 doing various corrections. 
326         MicroSCRIBE, a fairly SCRIBE compatible text formatter to go
327 along with these programs will probably be available for beta testing
328 early spring 1988.  This program is turning out to be a lot more complex
329 than I thought it would be, and is taking more time to get out.
331         I have in my possesion a port of MicroEMACS 3.8i to the
332 Macintosh, and I will be incorporating the needed changes for the current
333 version to support the Macintosh.
335         As before, I will continue to support these programs, and
336 encourage everyone to spread them around as much as they can.  If you
337 make what you think are changes that are useful to many, send me the
338 updates, and as time permits, I will incorporate the ones I understand,
339 and agree with into the master sources.
341         MicroEMACS is available on disk directly from my by sending me
342 $25 per order and a note specifying the disk format and the product that
343 you need.  I can fill orders for IBM-PC high/low density 5 1/4 and 3
344 1/5, ATARI ST single and double density, AMIGA disks and HP150 disks. 
345 (You do not need to send disks or mailers, I will provide these.) The
346 distribution set includes on disk all docs, executables and sources. 
347 Also I will register you and you will receive automatic notices of new
348 versions of all the programs I am releasing.
350         Commercial lisences to allow MicroEMACS to be incorporated into
351 other software packages are also available at a reasonable per package
352 price. Also I am available to do customization of MicroEMACS at an
353 hourly rate. Send all requests to the address below:
355         USmail: Daniel Lawrence
356                 617 New York St
357                 Lafayette, IN 47901
359         UUCP:   pur-ee!j.cc.purdue.edu!nwd
360         ARPA:   nwd@j.cc.purdue.edu
361         FIDO:   The Programmer's Room 201/2
362                 (317) 742-5533
363         ATT:    (317) 742-5153
365         
366                 New Features since version 3.8i
367                 ===============================
369 **      New standard startup file
371         The new emacs.rc file is segmented into more parts and loads much
372 faster than before. Separate "pages" of shifted function keys are
373 available. Users can write their own "pages".
375 ***     New Variables (there are a lot...)
377         $status         returns status of last command
378         $palette        color palette settings
379         $lastkey        returns last keystroke
380         $curchar        returns and set the ascii number of the
381                         character under the point
382         $progname       always returns "MicroEMACS"
383         $version        always returns the current version ("3.9")
384         $discmd         sets display of messages on the command
385                         line (except via the write-message command)
386         $disinp         sets echoing of characters during input on the
387                         command line
388         $wline          returns and sets # lines in current window
389         $cwline         returns and set current line within window
390         $target         returns/sets target for line moves
391         $search         returns/sets default search string
392         $replace        returns/sets default replace string
393         $match          returns last matched string in magic search
394         $cmode          returns/sets encoded mode of current buffer
395         $gmode          returns/sets encoded global mode (see appendix E
396                         in emacs.mss to decode this)
397         $tpause         returns/sets the pause for fence matching
398                         (this is in rather arbitrary units which
399                         WILL vary from machine to machine)
400         $line           return/sets the contents of the current line
401         $gflags         global operations flag (see emacs.txt Appendix G)
402         $rval           child process return value
404 ***     New computers supported
406         Atari 1040ST    all three graphics modes and 50 line mode on a
407                         monochrome monitor. The mouse is bound to the 
408                         cursor keys for now.
410 ***     New Compilers supported
412         Turbo C v1.0 under MSDOS is now a supported compiler.
413         Mark Williams C on the Atari ST is also supported.
415 **      New directives
417         !while <condition>      loops while <cond> is true
419                 !break          breaks out of the innermost !while
421         !endwhile               delimits the end of a !while loop
423         All !gotos are legal into and out of a !while loop.
425 ***     Autosave mode
427         This mode saves the file out to disk every time 256 have been
428 inserted. $asave controls the # of characters between saves, $acount
429 controls the # of chars to the next save.
431 ***     New functions
433         &and    <log> <log>     Logical AND
434         &or     <log> <log>     Logical OR
435         &len    <str>           returns length of <str>
436         &lower  <str>           lowercase <str>
437         &upper  <str>           uppercase <str>
438         &rnd    <int>           generate a random integer between 1 and <int>
439         &sindex <str1> <str2>   search for string 2 within string 1
440                                 returning its position, or zero if it fails
441         &env    <str>           return value of DOS environment
442                                 variable <str>
443         &bind   <str>           returns the function name bound to the
444                                 key <str>
445         &exist  <str>           Does file <str> exist?
446         &find   <str>           find file <str> along the PATH
447         &band   <num> <num>     bitwise and
448         &bor    <num> <num>     bitwise or
449         &bxor   <num> <num>     bitwise xor
450         &bnot   <num>           bitwise not
451         &xlate  <str1> <str2> <str3>
452                                 scan <str1> replacing characters in
453                                 <str2> with the coresponding characters
454                                 in <str3>
456 ***     Advanced word processing commands
458         ^X^T    trim-line       trim all trailing whitespace
459         ^X^E    entab-line      change all multiple char runs to tabs
460         ^X^D    detab-line      change all tabs to multiple spaces
462 ***     Merged EGA driver
464         The EGA driver is now part of the IBM-PC driver. This driver now
465 supports MONO, CGA and EGA cards/modes. (settable by using the $sres
466 variable)
468 ***     8 bit characters fully supported
470         Eight bit characters (including foreign language and line
471 drawing characters) are now supported on the various micro environments)
473 ***     List Buffers expanded
475         Given a numeric argument, ^X^B (list-buffers) will now also list
476 all the hidden internal buffers.
478 ***     -k switch enhanced
480         If you use the -k (encrypted file) switch on the command line
481 without a key immediatly following it, it will prompt you for the key to
482 use to decrypt with.
484 ***     word delete enhanced
486         with a zero (0) argument, M-D (delete-next-word) deletes the
487 next word and not any intervening whitespace or special characters.
489 ***     New File read hook
491         Whenever MicroEMACS reads a file from disk, right before it is
492 read, whatever function is bound to M-FNR (which is an illegal
493 keystroke) will execute. By default this would be (nop), but the
494 standard emacs.rc binds this to a file that examines the file name and
495 places the buffer int CMODE if the extension ends in a .c or .h. You can
496 of course redefine this macro to taste.
498 ***     Search Path modified
500         The order in which emacs looks for all .rc (startup) and
501 .cmd (command macros) is as follows:
503         $HOME                   (the HOME environment variable if it exists)
504         the current directory
505         $PATH                   (executable PATH)
506         default list contained in epath.h
508 ***     Line length limits removed
510         Lines of arbitrary length may be read, edited, and written.
512 ***     Out of memory handling improved
514         EMACS will announce "OUT OF MEMORY" when it runs out of dynamic
515 memory while reading files or inserting new text.  It should then be
516 safe to save buffers out IF THE CONTENTS OF THE BUFFER ARE COMPLETE at
517 that time.  When a buffer has been truncated while reading, a pound sign
518 "#" will appear in the first position of the mode line.  Also a # will
519 appear in a buffer listing.  If you attempt to save a truncated buffer,
520 EMACS will ask if you are certain before allowing the truncated file to
521 be written.  As before, still beware of killing blocks of text after you
522 have run out of memory. 
524 ***     DENSE mode on the Atari ST
526         On an Atari ST monochrome monitor, setting $sres to "DENSE" will
527 result in a 50 line display.
529 ***     Execute command
531         Execute-program (^X-$) will execute an external program without
532 calling up an intervening shell is possible.
534 ***     Better close braces in CMODE
536         The name says it all, try it.