[Dosemu-cvs] dosemu/src/dosext/dpmi dpmi.c,1.108,1.109 msdos.c,1.45,1.46 vxd.c,1.3,1.4 vxd.h,1.1,1.2
Brought to you by:
bartoldeman
From: Stas S. <st...@us...> - 2004-12-22 18:16:04
|
Update of /cvsroot/dosemu/dosemu/src/dosext/dpmi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27150/src/dosext/dpmi Modified Files: dpmi.c msdos.c vxd.c vxd.h Log Message: Moved the VxD glue code from msdos.c to vxd.c. msdos.c must be kept clean and perhaps it will be possible to port it to DJGPP one day. Index: msdos.c =================================================================== RCS file: /cvsroot/dosemu/dosemu/src/dosext/dpmi/msdos.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -d -r1.45 -r1.46 --- msdos.c 2 Dec 2004 18:38:20 -0000 1.45 +++ msdos.c 22 Dec 2004 18:15:53 -0000 1.46 @@ -164,92 +164,6 @@ /* only consider DOS and some BIOS services */ switch (intr) { - case 0x2f: - if (_LWORD(eax) == 0x1684) { - D_printf("DPMI: Get VxD entry point BX = 0x%04x\n", - _LWORD(ebx)); -#if 1 - switch (_LWORD(ebx)) { - case 0x01: - D_printf("DPMI: VMM VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VMM); - break; - case 0x05: - D_printf("DPMI: VTD VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VTD); - break; - case 0x09: - D_printf("DPMI: Reboot VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_Reboot); - break; - case 0x0a: - D_printf("DPMI: VDD VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VDD); - break; - case 0x0c: - D_printf("DPMI: VMD VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VMD); - break; - case 0x0e: - D_printf("DPMI: VCD VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VCD); - break; - case 0x17: - D_printf("DPMI: SHELL VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_SHELL); - break; - case 0x21: - D_printf("DPMI: PageFile VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_PageFile); - break; - case 0x26: - D_printf("DPMI: APM VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_APM); - break; -#if 0 - case 0x27: - D_printf("DPMI: VXDLDR VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VXDLDR); - break; -#endif - case 0x33: - D_printf("DPMI: CONFIGMG VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_CONFIGMG); - break; - case 0x37: - D_printf("DPMI: ENABLE VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_ENABLE); - break; - case 0x442: - D_printf("DPMI: VTDAPI VxD entry point requested\n"); - _es = DPMI_CLIENT.DPMI_SEL; - _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VTDAPI); - break; - default: - D_printf("DPMI: ERROR: Unsupported VxD\n"); - /* no entry point */ - _es = _edi = 0; - } -#else - D_printf("DPMI: ERROR: Unsupported VxD\n"); - /* no entry point */ - _es = _edi = 0; -#endif - return MSDOS_DONE; - } - return 0; case 0x41: /* win debug */ return MSDOS_DONE; Index: vxd.h =================================================================== RCS file: /cvsroot/dosemu/dosemu/src/dosext/dpmi/vxd.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- vxd.h 27 Jun 2004 10:03:33 -0000 1.1 +++ vxd.h 22 Dec 2004 18:15:53 -0000 1.2 @@ -4,6 +4,7 @@ * for details see file COPYING in the DOSEMU distribution */ +void get_VXD_entry( struct sigcontext *scp ); void VXD_VMM(struct sigcontext *scp); void VXD_PageFile(struct sigcontext *scp); void VXD_Reboot(struct sigcontext *scp); Index: vxd.c =================================================================== RCS file: /cvsroot/dosemu/dosemu/src/dosext/dpmi/vxd.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- vxd.c 21 Dec 2004 17:27:18 -0000 1.3 +++ vxd.c 22 Dec 2004 18:15:53 -0000 1.4 @@ -20,6 +20,7 @@ #include "emu.h" #include "dpmi.h" +#include "bios.h" #include "timers.h" #include "vxd.h" #include <Asm/ldt.h> @@ -68,6 +69,83 @@ #define GetTickCount() GETtickTIME(0) +void get_VXD_entry( struct sigcontext *scp ) +{ + switch (_LWORD(ebx)) { + case 0x01: + D_printf("DPMI: VMM VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VMM); + break; + case 0x05: + D_printf("DPMI: VTD VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VTD); + break; + case 0x09: + D_printf("DPMI: Reboot VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_Reboot); + break; + case 0x0a: + D_printf("DPMI: VDD VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VDD); + break; + case 0x0c: + D_printf("DPMI: VMD VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VMD); + break; + case 0x0e: + D_printf("DPMI: VCD VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VCD); + break; + case 0x17: + D_printf("DPMI: SHELL VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_SHELL); + break; + case 0x21: + D_printf("DPMI: PageFile VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_PageFile); + break; + case 0x26: + D_printf("DPMI: APM VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_APM); + break; +#if 0 + case 0x27: + D_printf("DPMI: VXDLDR VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VXDLDR); + break; +#endif + case 0x33: + D_printf("DPMI: CONFIGMG VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_CONFIGMG); + break; + case 0x37: + D_printf("DPMI: ENABLE VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_ENABLE); + break; + case 0x442: + D_printf("DPMI: VTDAPI VxD entry point requested\n"); + _es = DPMI_CLIENT.DPMI_SEL; + _edi = DPMI_OFF + HLT_OFF(DPMI_VXD_VTDAPI); + break; + default: + D_printf("DPMI: ERROR: Unsupported VxD\n"); + /* no entry point */ + _es = _edi = 0; + } +} + /*********************************************************************** * GetVersion (KERNEL.3) */ Index: dpmi.c =================================================================== RCS file: /cvsroot/dosemu/dosemu/src/dosext/dpmi/dpmi.c,v retrieving revision 1.108 retrieving revision 1.109 diff -u -d -r1.108 -r1.109 --- dpmi.c 15 Dec 2004 18:34:03 -0000 1.108 +++ dpmi.c 22 Dec 2004 18:15:52 -0000 1.109 @@ -2332,12 +2332,22 @@ switch (i) { case 0x2f: switch (_LWORD(eax)) { - case 0x168a: - return get_ext_API(scp); + case 0x1684: + D_printf("DPMI: Get VxD entry point, BX = 0x%04x\n", _LWORD(ebx)); +#if 1 + get_VXD_entry(scp); +#else + D_printf("DPMI: VxD not supported\n"); + /* no entry point */ + _es = _edi = 0; +#endif + return; case 0x1686: - _eax = 0; - D_printf("DPMI: CPU mode check in protected mode.\n"); - return; + D_printf("DPMI: CPU mode check in protected mode.\n"); + _eax = 0; + return; + case 0x168a: + return get_ext_API(scp); } break; case 0x31: |