lane@dalcs.UUCP (John Wright/Dr. Pat Lane) (02/20/88)
Hi.
Here's a question for you folks who have debugged the heck out of DOS.
I have noticed that in the enviroment of a running program there are
the environment strings each terminated by a zero byte and the last one
terminated by a second zero bytes. Everybody knows that and it's documented
but then there's a byte which always contains '01' (and Iv'e debugged into
COMMAND.COM to determine that it should always be '01'), followed by
another zero byte, floowed by the path and filename of the program which
is running, followed by a zero byte, followed by garbage (and I've debugged
COMMAND.COM to find out that is unpredictable what goes here) up to the
next paragraph boundary (I think). I've never seen any of that documented
and I'd be curious to know if anybody out there has more detailed knowledge
of this phenomenon or knows if/where it is documented.
This is an interesting feature of DOS because it allows programs to determin
in what directory thier executable file is and provides a sensible way to
determin the "home" directory, ie. where the program can find overlays, help
files, etc. Two major application programs I am aware of, WordPerfect (4.1)
and Ashton-Tate's Rapidfile have no problem finding their overlay and help
files when run by using a pathname other than the default in the command
and I assume that is how they do it. Other programs, including programs from
the above two firms, insists that you specify the home dircetory by some
clumsy, arcane procedure such as including it on the PATH variable, setting
a specific environment variable, or using a command line parameter. yeuchh.
Why don't all programs use the sensible approach (dumb question I know)? Is
is because this is an undocumented (an therefore unguarenteed) feature? May-
be it was not around in DOS 1 (who cares?). Curious.
PS to the above: As an alternative solution to the home directory problem
for programs that do not support any means of specifying it, I am fond of
using the APPEND program supplied with DOS 3.20. It's a nice way to set a
temporary PATH without messing with enviroment variables and potentially
running out of environment size. (BTW, I discovered how to set my default
enviroment size with a patch to COMMAND.COM so this doesn't happen to me
much anymore, but anyway...). Why, oh why, didn't Microsoft(-in-the-head :-)
have APPEND hook the functions for EXEC, FIND FIRST and FIND NEXT. The
omission of FIND FIRST is particularly galling as this is how most Fortrans
(and C's i expect), *including Microsoft's*, open files. Oh well, I guess
we all have our little crosses to bear.
I'll be bearing mine away now. Anybody with comments to the above, please
E-mail them as I had to give up reading the net regularly (:-() due to the
fact that I have a job and a life (:-) no time anymore, you know).
Cheers.
JW.
John Wright ////////////////// Phone: 902-424-3805 or 902-424-6527
Post: c/o Dr Pat Lane, Biology Dept, Dalhousie U, Halifax N.S., CANADA B3H-4H8
Cdn/Bitnet: lane@cs.dal.cdn Arpa: lane%dalcs.uucp@uunet.uu.net
Uucp: lane@dalcs.uucp or {uunet,watmath,utai,garfield}!dalcs!lane
--
John Wright ////////////////// Phone: 902-424-3805 or 902-424-6527
Post: c/o Dr Pat Lane, Biology Dept, Dalhousie U, Halifax N.S., CANADA B3H-4H8
Cdn/Bitnet: lane@cs.dal.cdn Arpa: lane%dalcs.uucp@uunet.uu.net
Uucp: lane@dalcs.uucp or {uunet,watmath,utai,garfield}!dalcs!lane ralf@B.GP.CS.CMU.EDU (Ralf Brown) (02/21/88)
In article <2781@dalcs.UUCP> lane@dalcs.UUCP (John Wright/Dr. Pat Lane) writes: [all about the full pathname of the program following the environment] }Why don't all programs use the sensible approach [of finding their directory]? }is because this is an undocumented (an therefore unguarenteed) feature? May- }be it was not around in DOS 1 (who cares?). Curious. It is also not around in DOS 2.x, and a lot of people still run 2.x. The sensible thing to do (like Turbo C does) is to use this feature if running 3.x, and require some other way of finding the support files otherwise. }John Wright ////////////////// Phone: 902-424-3805 or 902-424-6527 }Post: c/o Dr Pat Lane, Biology Dept, Dalhousie U, Halifax N.S., CANADA B3H-4H8 }Cdn/Bitnet: lane@cs.dal.cdn Arpa: lane%dalcs.uucp@uunet.uu.net }Uucp: lane@dalcs.uucp or {uunet,watmath,utai,garfield}!dalcs!lane -- {harvard,uunet,ucbvax}!b.gp.cs.cmu.edu!ralf -=-=- AT&T: (412)268-3053 (school) ARPA: RALF@B.GP.CS.CMU.EDU |"Tolerance means excusing the mistakes others make. FIDO: Ralf Brown at 129/31 | Tact means not noticing them." --Arthur Schnitzler BITnet: RALF%B.GP.CS.CMU.EDU@CMUCCVMA -=-=- DISCLAIMER? I claimed something?
rde@eagle.ukc.ac.uk (R.D.Eager) (02/23/88)
Expires:
Sender:
Followup-To:
This is documented in the Technical Reference for DOS 3.x. Not in an obvious
place, but it's with all the stuff that says what's in the registers on entry
to a program (I think).
--
Bob Eager
rde@ukc.UUCP
...!mcvax!ukc!rde
Phone: +44 227 764000 ext 7589madd@bu-cs.BU.EDU (Jim Frost) (02/26/88)
In article <4489@eagle.ukc.ac.uk> rde@ukc.ac.uk (R.D.Eager) writes: >This is documented in the Technical Reference for DOS 3.x. Not in an obvious >place, but it's with all the stuff that says what's in the registers on entry >to a program (I think). In the IBM Disk Operating System Technical Reference for PC-DOS 3.20, under "4BH - Load or Execute a Program (EXEC)", p. 6-173, is says: "Also inherited (or copied from the parent) is an "environment." This is a block of text strings (less than 32K bytes total) that convey various configuration parameters. The following is the format of the environment (always on a paragraph boundary): [table deleted] Typically the environment strings have the form: parameter=value Following the byte of zero in the environment, is a WORD that indicates the number of other strings following. Following this is a copy of the DS:DX filename passed to the child process. For example, the string VERIFY=ON could be passed. [...]" This is word-for-word. I have no clue why they put the description in the middle of the discussion of the environment, but that's where it is. I could not locate it in any other location, including the discussion of the PSP and the PSP map. This is for MS/PC-DOS 3.0 and greater only. This has all be said before, but it's sufficiently confusing that it comes up every few months. jim frost madd@bu-it.bu.edu