It has a simple serial protocol to allow a remote client (usually Forth) to access the keyboard, display and file system on another system (usually a PC).
It was originally written on an amiga-500 fitted with transputer link adapters. It could send the transputer forth binary into a transputer to boot it up and then act as a server.
The protocol now has some unnecessary overhead because it was intended for a Transputer network. It has provision for routing over multiple hops and this has never been needed.
I did not assume the keyboard, vdu and file system would be on the same processor.
In 1992 the program was ported to the PC and support added for standard PC com ports.
It uses delay loops so I had to recompile it when PCs became too fast.
I has not been recompiled for many years (I don't have a C compiler).
I used it extensively up until 1999 with 68hc11 and 68hc16 micro-controllers.
I then stopped using forth because it wasn't suited to AVRs I've work with since then.
This year I wrote SAM7 FORTH and dusted off emserver and luckily it still runs on my 3.4 gig dual core PC.
The code uses direct port access so it can only use "real" serial ports.
Emserver is badly in need of being rewritten in a modern language but it is off the agenda for me at the moment.
It should let windows do the i/o so usb-serial converters can be used.
Ethernet support could also be added.
I don't fancy doing a TCPIP stack on the micro but UDP would be enough.
After a decade of using Delphi I've have enough of commercial compilers.
The product is great but the current owner is terrible.
The price is a little steep for writing free software and there is all the registration BS with keys and single PC licenses etc. The free version doesn't let me add a serial component (there is a work around).
Ideally the code should be multi-platform.
At the moment sharpdevelop/#develop looks promising. It is an open sourced C# IDE.
C# uses .NET and the Mono project provides open sourced .NET framework for Linux etc.
Mono also has a nice looking IDE but no ready to use windows builds.
I'm hoping emserver can be ported to C# so I can fix some of the problems it has.
Known issues are..
1 - Problems releasing file buffers if the client crashes.
2 - Hogging the CPU to poll the serial port.
3 - Direct serial port access - unlikely to work with USB/serial adaptors or non-standard serial cards.
4 - Console only app with limited console size.