GremNOS v.03d is now available, containing a fix/workaround for the problems caused by ASCII 0 ("NUL") bytes in incoming SMTP and NNTP messages.


GremNOS is a variant of KA9Q, developed in 1997 by Graham E Kinns (GeK) from Demon Internet's 2.16d version. Graham produced two versions in 1997, v0.1 in (17 August 1997) and v0.2 (28 November 1997); they are both huge improvements on the Demon version, containing numerous bug fixes and program enhancements. However, GeK has since moved on to other projects, and no further GremNOS development was carried out after v0.2. These versions are available from GeK's web site, and the v0.2 files are also available from this site.

Simon Turner and Pete Disdale, long-term GremNOS users, had made a handful of tweaks to their local versions of the program; after discussion of a few issues in the newsgroup in 2001, it became apparent that some other users might appreciate having the changed versions, so a couple of (entirely unofficial) tweaked extensiones to v0.2 were released in August 2001 under the names v0.2b (22 August 2001) and v0.2c (28 August 2001).

A spate of problems with Demon's mail2news gateway in early 2002 prompted Pete to finish GeK's incomplete 1997 work with direct NNTP posting. Pete's new NNTP posting code, with a few other enhancements, are available in v0.3 (8 April 2002).

Things were quiet for a year or so after that, but a minor bug fix to the socket code, some privacy additions to the SMTP server (taken from Richard Clayton's changes to Demon's KA9Q 2.18) and a bug fix to the NNTP kill file processing are now available as v0.3b (24 May 2003). (v0.3a was an internal version from March 2003, featuring the socket code bug fix, which was never publically released.) The changes in v0.3b have been carefully tested, and no problems have been found, so it can probably be regarded as a safe upgrade for others to use.

After a 17-month hiatus, complaints in about the SMTP server stalling right at the end of receiving a message - caused by ASCII 0 ("NUL") bytes in the final line of the mail message - led to the release of v0.3d (12 October 2004), which fixes (or works around) the problem by translating the NUL bytes to 255 as they are received. (v0.3c was an internal version from earlier in the year, featuring the NUL fix code, but which was never publically released.) The NUL fix code has been running on my (rather unusual) personal version of GremNOS for some months without problems, so it should be suitable for all to use.

There is some documentation available for all the versions of GremNOS (v0.1 to v0.3d); it basically consists of Demon's KA9Q documentation, with change lists and/or readme files for all the GremNOS versions. The complete collection of files is also available as a zip file.

Available builds of GremNOS v0.3d

GremNOS has always been available in various different builds; some fully featured and large, some lean and mean, some with TextWin etc. The currently available builds of v0.3d are as follows:

Changes in the post-v0.2 versions


Source code

The source files for GremNOS v0.2 were somewhat scattered; Graham never collected it all together in one place, but distributed the files he'd changed from the Demon 2.16d version of KA9Q; while this was a actually a sensible strategy, since the full source distribution is huge and people would probably rather download a small update than the whole thing every time, tracking down and collating the complete set of files needed to produce the Large, Lite and TW_Lite versions of GremNOS v0.2 took a while!

In the v02 directory are the four separate source archives that resulted from this collation effort:

The "extra" bits in include a config.h file for the TW_Lite build, and a slightly modified makefile and build.bat batch file which enable you to compile binaries identical to GeK's distributed v0.2 ones (GeK's original distributed makefile is preserved as makefile.gek).

This is interesting and useful for v0.2 historians, but for people who just want to get on with compiling one of the newer SCT/PJD versions, downloading four separate files seems a bit silly. The "new" file (859,286 bytes) contains all the necessary files from the above four v0.2 archives, with an already updated hardware.h (which would otherwise be overwritten by a copy of pc.h during the make process), and excluding the original GeK makefile.

GremNOS is compiled with Borland C++ 3.1; you will need this compiler to get identical binary files to the distributed ones. GeK did do some work with using Borland C++ 4.0, but (a) his distributes binaries were compiled with 3.1 and (b) 4.0 was known to have quite a few bugs, so I don't recommend using that. It should be possible to modify things for 4.5, 5.0 etc. but it doesn't seem worth the bother to me.

To compile any version of GremNOS from v0.2 onwards, download - which enables you to build v0.2 - and any specific source updates:

Unzip into a directory on its own, followed by the update(s), allowing the updated files to overwrite the original ones. You can then use build.bat to compile the distributions (Large, Lite, TW_Lite and - from v0.3d onwards - PK_Lite and TP_Lite): run it with no arguments for usage instructions.

If you have any problems compiling it, or the instructions are wrong, or anything else, please e-mail me at gremnos at and I'll look into it.

Suggestions, comments etc.

If you have any suggestions, bug reports, gripes, comments etc. or would simply like further information, please send e-mail to gremnos at, or post to the newsgroup.

Written by Simon Turner (simon at
Last updated 13 October 2004