György 'Nog' Jeney wrote:
ChangeLog:
- dlls/winedos/dosconf.c
- include/callback.h
- msdos/dmpi.c
- msdos/dosconf.c (removed)
- dlls/ntdll/Makefile.in
- dlls/winedos/winedos.spec
- dlls/winedos/Makefile.in Move dosconf to winedos.
This still won't work if Dos3Call is called directly before winedos.dll has been loaded. If this is fixed, I don't see any reason why this patch couldn't be applied.
This reminds me that int21 handling is quite messy. Interrups call first DOSVM_Int21Handler and might be chained to Dos3Call. But, if you call Dos3Call directly, execution does not go through DOSVM_Int21Handler. This causes some code duplication and makes things like dosconf unnecessarily complicated. I was hoping that I could leave this stuff to its current state until I had cleaned up other interrupts. Simple solution would be to make Dos3Call load winedos.dll and call DOSVM_Int21Handler through function pointer, move all common code from old Dos3Call to DOSVM_Int21Handler and move code that is difficult to handle in winedos to INT_Int21Handler which would be chained to from DOSVM_Int21Handler when a few selected functions need to be emulated. But this requires lots of work because each int21 function must be separately evaluated in order to see how it must be emulated to properly support both Win16 and DOS; first step would probably just add check if(DOSVM_IsWin16()) to each DOSVM_Int21Handler function and chain to INT_Int21Handler if true.
This reminds me that int21 handling is quite messy. Interrups call first DOSVM_Int21Handler and might be chained to Dos3Call. But, if you call Dos3Call directly, execution does not go through DOSVM_Int21Handler. This causes some code duplication and makes things like dosconf unnecessarily complicated. I was hoping that I could leave this stuff to its current state until I had cleaned up other interrupts. Simple solution would be to make Dos3Call load winedos.dll and call DOSVM_Int21Handler through function pointer, move all common code from old Dos3Call to DOSVM_Int21Handler and move code that is difficult to handle in winedos to INT_Int21Handler which would be chained to from DOSVM_Int21Handler when a few selected functions need to be emulated. But this requires lots of work because each int21 function must be separately evaluated in order to see how it must be emulated to properly support both Win16 and DOS; first step would probably just add check if(DOSVM_IsWin16()) to each DOSVM_Int21Handler function and chain to INT_Int21Handler if true.
The whole reason that I want to move dosconf to winedos is to be able to move int 21 to winedos. I'll begin work on this shortly but I have a question first: What should we do about vwin32.vxd? This is meant to provide dos ioclt support and int 21. It does so at the moment by calling the handler directly. Shoud we export These handlers from winedos?
nog.