Hi,

Just to come back and add to this (in the vain hopes of being
constructive), ....

On Mon, Oct 19, 2015 at 7:02 PM, Bret Johnson <[email protected]> wrote:
>> EMS is quite obsolete, even in DOS circles. I'm not saying it's "bad",
>> but there are "better" ways to do things (e.g. DPMI).
>
> Depends on what you're doing.  DPMI is good for "regular" programs, but not
> necessarily for TSR's and device drivers.  EMS is specifically designed to
> be compatible with TSR's (allowing you to store both TSR code and data in
> EMS memory and "hide" it from both conventional and upper memory).  XMS
> can't be used directly to "hide" TSR code (though it can hide some TSR
> data), and you have to play lots of games with DPMI to get TSR's to work
> with it.  DPMI really isn't a good solution for TSR's (and apparently even
> M$ agrees with this, which is why they came up with a special TSR interface
> for Windows that AFAIK nobody really ever used but which Japheth emulated in
> JEMM).
>
> Much like the "DOS is Dead" mantra, EMS is not necessarily dead either.  I'm
> not saying that EMS is the best way to do things, but it is viable and even
> necessary in certain cases.

I'm really not trying to be cynical or discourage anyone, but it's an
uphill battle.

My main stumbling block, besides having never programmed EMS, is one
of availability. It's much harder to find/repair/replace old 16-bit
harder than it used to be. A 386 clone is easy to find, there are
millions more of those than 16-bit. Look, I'm totally sympathetic to
8086 (obviously??), but we long ago jumped the shark, so a lot of
stuff these days, even for DOS, is "386 only". That is not easy to
fix, even with decent compilers, because some things have to be
(re)designed from the start. So you're almost forced to rewrite
everything. For instance, a lot of 16-bit DOS software never supported
EMS at all (e.g. Unzip, NASM16), even when it would've been
convenient.

We can't even guarantee that all 16-bit machines have 640 kb of RAM. I
remember CWS telling me he had an old laptop he tested with CWSDPMI,
but that was a 386 with only 512 kb!! Can you imagine? So it's hard,
as a developer, to support everything. Even if we assume 640 kb, we
can't assume EMS is always available. And how much is enough? 2 MB?
What is the minimum (and maximum) RAM needed for xyz apps? So you have
to be careful not to require something that no end user has available.
Clearly it's better to support more than one method (EMS, XMS, maybe
even hard disk swapping), if possible.

I haven't looked lately, but I'm not directly aware of any 16-bit EMS
drivers for DOS that are either freeware or open source. So, AFAIK,
the only choice provided by FreeDOS is EMM386, which needs 386, which
defeats the point. I forgot that you could technically develop with
that (on a 386) supporting EMS in whatever project you're working on,
then hope that any potential 16-bit users could find the necessary
driver for their old machine and get it working. But that's far from
ideal. Sure, you can do it, but I'm not aware of many people having
done so.

The only projects, in the FreeDOS Software List, that I know of that
use EMS (but not counting 4DOS for swapping) are as follows:  TDSK
("UTIL") and Dr. Track ("SOUND"). Anyone know of others??

1). http://freedos.sourceforge.net/software/?prog=tdsk
2). http://freedos.sourceforge.net/software/?prog=drtrack

The latter is the one that I pointed to Jim Leonard years ago. Like I
said, he's the only person I know of who has used hardware EMS in
recent years, but he's smart enough (huge understatement) to not need
our help, so he never hangs around here. Without developers or
testers, not much will get done, and frankly we have very few.

There are also two samples that I found that might prove useful to any
future developers:

1). 
http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/devel/libs/ems/tc_ems.zip
2). http://swag.outpostbbs.net/MEMORY/0038.PAS.html

The first was from 1999, ported by Louis Santillan (who's still active
here, AFAIK) from MicroC to TurboC.

The second was actually included in Turbo Pascal 5.5, which as a whole
isn't redistributable. But it's explicitly declared "public domain",
so I have no qualms about propagating it. Presumably they too grabbed
it from somewhere else (did SWAG even exist back then??). As mentioned
before, FPC's ppcross8086 works pretty well nowadays, so it's not true
that nobody cares about 8086.

------------------------------------------------------------------------------
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to