Hi, I finally found out what the background of that (patched by Win
if it finds it, by adding a breakpoint) "cmp al,7 / jb check /
cmp al,9 / jbe skipcheck / check: ..." code sequence means!
It is in int 21 functions 5d0x, and the check is for "computer ID"
(dosds:33c, 0 for "local computer") and "process/user ID" (PSP seg
of calling process on calling, possibly local, computer).
So I assume if we
- lack those network redirector functions anyway
- would support the "patch yourself" function int 2f.1607.15.bit 1
  to allow suppression of the check
then we would have one problem less.

Other "patch yourself" issues:
- win386 sysinit stack fault: should not happen anyway
- int 21.3f stdin read made a polling loop: is one anyway
- enable critical sections: would that mean calling int 2a.80/81
  whenever InDOS flag is modified, or would that be a too simple
  implementation? At least we already call int 2a.82 ("end of
  all critical sections in 0..7 category, where only 0/1 are kernel
  anyway, the rest is network drives, ifsfunc, assign, cdrom, ibm lan,
  where the critical section flagging is probably job of the respective
  drivers anyway?").
- trap DJ mechanism message: This can be avoided by simply asking
  int 2f.4a00 whether IT has already shown the message / waited for
  confirmation, and then skipping the message.
[- user id checking: as above, but I wonder if this would also mean
  making int 21.4bxx / 21.50 / 21.55 zombie in some way (so that it
  does not set current PSP segment itself but leaves that to Win386???).
  Probably user id and psp seg are SEPARATE copies of the same value,
  I cannot believe that DOS would be deprived of the ability to update
  the "current PSP" value itself!?]

Bonus problem: Can we place the "enable critical sections" (in other
words "enable calling int 2a.8x") flag at dosds:d0c, or would it be
too hard to make that place free? Is our SDA exact enough to have the
5 words at offset -11 "zero-terminated list of offsets which need to be
patched to enable critical-section calls" (which ought to be 4 times
d0c and the terminating zero, plus the byte at dosds:d0c being 0 or 1
to disable or enable the int 2a.80/81 calls)?

Eric

PS: What is the name of our "umb head" variable (first UMB segment,
ffff if no UMBs present)? And of the int 21.a readline buffer?



-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to