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
