Hi, trying to be an EMM386 groupie, I created
http://www.coli.uni-sb.de/~eric/emm386.asm.diff.gz
which is a diff to the 7 Feb EMM386 1.14 emm386.asm,
supposed to implement some new features. Note that I
do NOT have a compile environment for EMM386. However,
the patches are pretty tame, so please try using them:

- hardware EMS 3.0 only functions 49 / 4a now use a separate NOT_IMPL
  variant - can be useful if you activate "NOT_IMPL debugging".
- function 52 now has all subfunctions, but of course there is still
  no support for non-volatile (surviving warm boot) pages.
- function 59, subfunction 0, and functions 5b and 5d now all claim
  that the OS/E interface is already in use by the OS, giving a good
  excuse for not implementing alternate register sets and similar ;-).
- function 50 can now also use segment address style input - this was
  easy to do because this EMM386 only supports the classic 64k page
  frame (page numbers 0-3) as far as I can tell. Would be cool if this
  limitation could eventually be resolved...
- all subfunctions of function 54, handle directory / name stuff, are
  now supported, and (BUGFIX) handle names are zapped on alloc / free.
- VCPI functions de08 and de09, read/write debug registers, are now
  implemented.
- I *almost* implemented function 55, alter page map and jump: The open
  issue is modifying the stack to make the return to v86 mode "jump".

QUESTION: Should function 47 save the mapping state for the whole page
frame, not only for the handle which is specified by the caller? The
purpose of function 47 seems to be "backup mapping state before a TSR
starts to use EMS"...

Still completely unimplemented functions:
- 67.4f "get/set partial page map" (EMS 4.0 only, not handle oriented)
- 67.56 "alter page map and call" (EMS 4.0, for overlays / swapping)
  The problem here is that a RETF from the called code has to RESTORE
  the mapping state and then return to the int 67.56 caller. This is
  similar to having TWO 67.55 "alter and jump" invocations combined...
- 67.5c "prepare expanded memory hardware for warm boot" (EMS 4.0)
  I think this should 1:1 map the first 1 MB and un-hook int 15. Maybe
  it should even try to shut down all protected mode handling...
- 67.de0b "update IDT / handlers to reflect IRQ remapping" is a dummy:
  A proper implementation would attach the KBOARD call gate to the new
  IRQ 1 handler (instead of int 9), to keep trapping ctrl-alt-del, and
  (more important) should fix the V86_MONITOR code which does the V86
  virtual CLI (CLR_IF) for those interrupt vectors which handle IRQs
  (using fixed int numbers 8..f, 70..77 at the moment, no dynamic update).

Bugfix: function 58, subfunction 1, failed to return CX to the caller
(because esi, edi and ecx are saved on stack by the dispatcher).
Other: Some small comment fixes and db->dd instead of dw->dd movzx for
handle numbers.

Enjoy... And thanks for reading this / using my diff :-)).

Eric

PS: Still looking for somebody who can write glue code to make my
http://www.coli.uni-sb.de/~eric/emm386-monoumb-vgaumb-notes.txt
code fragments become part of a MONOUMB and VGAUMB feature. Neither
me nor Arkady is in position to do that - maybe Aitor or Michael?



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to