               MSGED 4.00   released 1996-08-10

            
NOTE!  Before contacting me for support, please make sure you are 
using the latest archive produced by *me*.  If you use another
version of MSGED, contact the author of that for support, even
if the problem also occurs in my version, as that is only fair, and
helps spread the workload.  Plus the fact that even if I do fix it,
you're not going to be using my fixed version anyway, so there is
little point in reporting it to me.  I am busy enough as it is, and
have many other PD projects to work on.


                     
INTRODUCTION               

This archive is a message editor that works under 16-bit DOS,
32-bit OS/2, and has more limited versions for Amigados and
Linux as well.  It works with *.MSG messagebases, QuickBBS
(Hudson) messagebases and Squish messagebases.



EVOLUTION

The original MSGED was written by Jim Nutt and released to the
public domain.  It worked on *.MSG and Quickbbs messagebases,
at least by version 2.00, under DOS 16-bit and OS/2 16-bit.
The last release Jim did before "disappearing" was 2.08 dos,
which was 2.06 os/2.

MSGED/SQ was later created by John Dennis, who originally kept
all his changes copyrighted, but later he then went and released 
all his stuff to the public domain.  This version worked on 
both *.MSG and Squish messagebases, and worked under 16-bit DOS 
and 16-bit OS/2.  The last release from John was 2.2e, after 
which he explicitly said he was no longer interested in maintaining 
it.  The source was released in an archive called MSQ22SRC.LZH.

MSGED/SQ 2.2e was then modified by Paul Edwards to make it work
with *.MSG and Squish under 16-bit DOS and 32-bit OS/2.  Plus
a few bug fixes and enhancments.  The first version of this
released was 3.00.  The last version released was MSGED/SQ 3.35.

The "MSGED" name was then retaken, starting with version 4.00.
If Jim ever comes back, he is welcome to have the name back, but
until then, this is by far the most actively developed strain
of MSGED, so I thought it was better to be on the "main trunk".
The main thing that MSGED 2.08 appeared to have that MSGED/SQ 
3.35 didn't, was quickbbs support, so I used the quickbbs code
from MSGED 2.08 and modified it to work with MSGED/SQ 3.35.



EXECUTABLES

The main DOS executable is MSGED.EXE.  The main OS/2 executable
is MSGEDP.EXE.  The Amigados executable is called msgedam.  The 
Linux executable is called msgedunx.  The 32-bit DOS executable 
is called msged32.  The 16-bit OS/2 version is not actually 
compiled, as it is not expected that anyone actually wants it 
(although maybe there are some Windows/NT users who want it - 
unless someone requests it, it won't be coming).  Also it doesn't 
work with MSGAPI.



MSGED32 EXECUTABLE

This 32-bit DOS-extended version of MSGED has been linked with 
the PMODE/W DOS-extender.  You can FREQ this from 3:711/934 with
name "PMW122.ZIP".  If you would rather use the DOS4GW dos-extender,
which allows you to use disk space if you run out of memory, then
FREQ "DOS4GW.ZIP" from 3:711/934, put DOS4GW.EXE in your path, set
DOS4G=QUIET in your autoexec.bat, and run MSGED32 by going
"DOS4GW MSGED32".



DOCUMENTATION

See MSGED.DOC for the documentation.  The documentation is not
up-to-date.  Volunteers to do the work, please contact me.



OTHER FILES

There is a configuration file MSGED.CFG which you will probably
need to make a fair few changes to to get MSGED up and running.
Other files include MSGED.COL, MSGHELP.DAT, TEMPLATE.MSG.  For
OS/2 users, there is a "MSGED.ICO" icon.



SOURCE

Full source code is included in the SRC subdirectory.  MSGED
can be compiled using:

MAKEFILE.WAT - OS/2 makefile for Watcom
MAKEFILE.IBM - OS/2 makefile for CSET
MAKEFILE.EMX - OS/2 makefile for GNU/EMX
MAKEFILE.BCC - OS/2 makefile for Borland

MAKEFILE.DOS - DOS makefile for Borland
MAKEFILE.TCC - DOS makefile for Turbo C++
MAKEFILE.W16 - DOS makefile for Watcom 16-bit
MAKEFILE.MSC - DOS makefile for Microsoft C
PACIFIC.PRJ  - DOS makefile for Pacific C (needs PACIFIC.PAT)

MAKEFILE.W32 - DOS-extended makefile for Watcom 32-bit

MAKEFILE.UNX - Linux makefile for dmake (with "-B") using gcc

MAKEFILE.SAS - Amiga makefile for SAS/C 6.55

MAKEFILE.MSO - OS/2 16-bit Microsoft C compile

MAKEFILE.ANS - Watcom, OS/2, 32-bit, ANSI screens

MAKEFILE.PDP - EMX, OS/2, 32-bit, PDPCLIB, not yet working

MAKEFILE.WNT - Watcom, Windows/NT, 32-bit, not yet working

As shipped, the OS/2 version has been compiled with Watcom 10.0
32-bit compiler with full optimization, the DOS version has
been compiled with Watcom 10.0 DOS with full optimization.  The
Linux version has been compiled with gcc with optimization on, and
the Amigados version has been compiled with SAS/C with optimization
on.  The DOS 32-bit version has been compiled with Watcom C with
optimization on.

Both the DOS and OS/2 executables have been statically linked 
with MSGAPI38, which is a modification of the original MSGAPI0.
You can FREQ this from 3:711/934 as MSGAPI38.*.  The date of
the version used to compile MSGED is 1996-07-24.  Squish messagebase
support does not exist for the Linux and Amigados versions, which
isn't any real problem, since those platforms don't use that 
messagebase format anyway.  Be warned that the QuickBBS format
messagebase may change on Linux and Amigados environments, so I
wouldn't get too attached to it, use *.MSG for now instead.



COPYRIGHT

All of the source code in this archive is public domain.
However, to access Squish messagebases requires use of Scott
Dudley's MSGAPI routines, which are copyrighted by him, and
linked in to the executable.  This is allowed according to
the license that the MSGAPI is distributed under.  If someone
has some public domain C code to access the Squish messagebases,
please let me know so that I can use that in MSGED.  Also, the
PMODE/W 32-bit DOS-extender is copyrighted, as indeed is the
relevant compiler's C runtime library.



SUPPORT

You can reach the current author, Paul Edwards at 3:711/934@fidonet.
However, it would be preferable if you posted your questions in
MSGED_ECHO in a message to "All" so that others can help answer your
question.

What I would REALLY like is for you to get a local C expert to find 
the bug and just send me the bug fix so that I can incorporate it 
into the next release.  This avoids the headache of me trying to
reproduce your problem here.  Note that since there are FREE compilers
available to compile MSGED, namely EMX for OS/2, Pacific C for DOS,
gcc for Linux, and also (untested) gcc for Amigados, there is no
excuse not to do the work yourself instead of piling it on to me.
The whole idea of free software is you are meant to contribute to
it.

As for enhancement requests, please send C source code that 
implements the enhancement (and explicitly state that the code
is public domain, too).  I have a long list of enhancements
which I personally want, and when I have finished all of them,
and all of my other public domain projects, I will start
soliciting other enhancement requests.  Hell might freeze over
before that time though.  If you don't know how to program in C,
then get one of those 14 year-old's that spends most of their
spare time hacking into the US DOD computers to spend 10 minutes
of their expertise on your MSGED enhancement.  It takes me DAYS
to add enhancements.

By the way, the best way to send me changes is by using a utility
called "DIFF".  This is a "standard unix" command which is
available for OS/2, and I presume also DOS.  I actually use CVS
(in conjunction with RCS) to do the diffs.  I know all of this
stuff is available for OS/2, and I think it is also available for
DOS.  The stuff is available for FREQ from 3:711/934.  Anyway,
if you have changed say msged.c, then you can go:
diff --context \old\msged.c \new\msged.c and get just a list of
changes that you have made.  I prefer to get all the differences
in one file, so that I can feed it directly into another program,
called "PATCH", which is also available from here.  I can then
check all this stuff in to CVS, and apply the differences to my
own version.  I would HIGHLY RECOMMEND that anyone who does any
serious programming should get these tools.  They are all free.
If you're a developer, and you don't know what a "3-way diff" is, 
then you're in for an ABSOLUTELY BRILLIANT surprise (cvs update -j).



INDENTATION

I use GNU Indent 1.8 with some patches of my own, which you can
find in an archive "INDENTPE.ZIP" available from 3:711/934.  The
options I use are:
-kr
-bl
-bli0
-i4
-ts1
-nce
-ncs
-fca
-nfc1

Note that I am open to suggestion on improvements in this area,
and I am already aware that there are some things that are
formatted badly by indent, but I am of the opinion that whatever
style is used, it must be machine-generatable, and the above is
the best "machine" I have been able to obtain (for free, anyway).
Oh, the reason for the machine-generation is so that we can all
reformat it ourselves to the style we like, and that includes
when you send me patches in a style I don't like (or you use tabs!).



OBTAINING

You can obtain the latest version of MSGED by FREQing "MSGED"
from 3:711/934.  I have a magic name set up so that you can get
this.  Although this is (at time of writing) the official place 
to get MSGED from, you may or MAY NOT be able to obtain it from:

1:106/2000@fidonet
juge.com (/c/file/c, /os2)
http://snoopy.apana.org.au/randy/msged/
www.closer.brisnet.org.au (/pdomain)
http://rosebay.matra.com.au/~avon/



OTHER VERSIONS

There are other versions of MSGED floating around, supported by
different people.  Make sure that if you are reporting a bug with
my version of MSGED that you really are using my version!  Go to
the other authors for support for their version of MSGED.  



HISTORY

2.00 Jim Nutt's version that MSGED/SQ was cloned off
2.2e John Dennis's last release of MSGED/SQ
3.04 Paul Edwards's first widely-distributed version, including
     revamped documentation from Bill Grimsley.
3.05 Bug fixes to 3.04
3.10 Many random changes and many bug fixes
3.20 Quite a lot of bug fixes combined with the major philosophical 
     change of making the area front-focus.
3.30 Many modifcations by Kieran Haughey, including personal mail 
     scanner, and file name displayed when importing files.  Random 
     bug fixes added.  Spawn.asm now compiles with Watcom, thanks to
     Matthew Parker.
3.35 Contributions from David Begley, Bill Bond, Matthew Parker and
     Andrew Clarke.  Both enhancements and bug fixes, but not major
     enough to go up by a complete .1. 
4.00 Amigados and Linux ports, support of Quickbbs messagebase,
     support of a straight C compile for DOS, enabling a Pacific C
     port, 32-bit DOS-extended version and many other enhancements
     and bug fixes.  And a name change too!


BUGS

None that I know of at the moment for sure



UPDATES

It is my intention to only ship source code patches for minor
version changes, you have to recompile yourself.  If this is the
case, then you will need to use the "PATCH" program, available
for FREQ from 3:711/934 to apply the diffs.  E.g. the patch might
be called MSGED401.PAT and you go "PATCH <MSGED401.PAT" to apply
it.  Then you can recompile.  Similarly, if there is a MSGED402.PAT,
then you can apply that as well.  The patches will need to be
applied in order.  Note that this may not actually get off the
ground, because usually there are so many enhancements made, that
MSGED skips up as major version changes.



AMIGADOS + UNIX PORTS

These ports are very new, and the screen-handling is very poor.
Because Alt-key support is not coded (mainly due to lack of ability
on my part), you will have to redefine all the functions to some
control keys that you are able to use on your system.  E.g. try
this:

; The following defines allow you to use purely control-keys
; to operate msged.
; E.g. 0x0004 = decimal 4 = 4th letter in alphabet, ie D, ie
; ctrl-d will go down when you're in the reader
; The words corresponding to the letter are functions which
; are documented in msged.doc appendix a and b
Readkey 0x0004 down
Readkey 0x0012 next
Readkey 0x000c previous
Readkey 0x0015 up
Readkey 0x0005 newmsg
Readkey 0x0008 change
Readkey 0x000d list
Editkey 0x0014 quit
Editkey 0x0004 down
Editkey 0x0012 next
Editkey 0x000c previous
Editkey 0x0015 up

IN ADDITION you will need to strip CR's from the various control
files, including msged.cfg, template.msg, msged.col etc.  Failure
to do so will result in bizaare errors.



PROGRAMMING TASKS

If you find you have some spare time, these are some things I would
like to see done technically in MSGED:

Do the Amigados and Linux screen I/O properly, instead of using ANSI.
Be able to use the EMX dos-extender instead of the Watcom one.
Stop relying on compiler alignment in quick.c (e.g. see WATCOM code).
See if the 16-bit OS/2 version can be made to use MSGAPI.
Create Windows/NT (text) port.
Get JAM et al support in.
Create public domain + portable version of MSGAPI for Squish support.



ADDENDUM

I discovered that if you do an import, you need to strip the
CRs if you don't want lines doubled-up. Because I started using
msged as a way to reformat long lines. ie if you have a file
created in notepad with wordwrap (or in msged the same way), you
can import it into msged, and then if you do a quote reply, you
will get lines wrapped, and then you can export that, and use
microemacs (ESC r xx>  ESC ESC) to replace all the quotes with
nothing. I didn't see an option to directly do that in microemacs.
