> IMHO, TSR's have a lot of advantages over device drivers, and can still be
> installed in CONFIG.SYS if you actually want/need to do that (with the
> INSTALL= option).

You can even write a single executable which can be loaded both as "device
driver" (DEVICE= or DEVLOAD) and as normal program (INSTALL= or just usual
execution).

(Technical details in the next two paragraphs, skip at your leisure.)

The easy way to do that is to utilize MZ (.EXE) format files that have
another entry point specified in the header than (relative) address 0,
because for "device driver" executables address 0 must contain the device
header.

A more interesting (though usually not necessary) way to do that is to
realize that device loaders (including the one that's part of DOS's
initialization code) don't actually use the "next header" pointer in the
device header until after the initialization call returns. This allows one
to initialize a part of that field with a jump instruction in the source
code, which will be executed if the flat (.COM) format file is executed as
a normal program. The device initialization code of course needs to
overwrite the jump instruction with something else before returning to
DOS's device loader.


Most programs could already be loaded earlier in CONFIG.SYS if they were
adjusted in that way, though some of the DOS structures aren't available
yet in that case.

Regards,
Christian

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to