PML_StartupEMS(global_game_variables_t *gvar)\r
{\r
int i;\r
- //long size;\r
+#ifdef __PM__NOHOGEMS__\r
+ long size;\r
+#endif\r
byte err=0, str[64];\r
\r
boolean errorflag=false;\r
static char emmname[] = "EMMXXXX0"; //fix by andrius4669\r
- unsigned int EMSVer = 0;\r
- unsigned totalEMSpages,freeEMSpages,EMSPageFrame,EMSHandle=0,EMSAvail=0;\r
-#ifdef __DEBUG_PM__\r
- word e=0;\r
-#endif\r
- totalEMSpages = freeEMSpages = EMSPageFrame = 0;\r
+ unsigned EMSVer;\r
+ unsigned totalEMSpages,freeEMSpages,EMSPageFrame,EMSHandle,EMSAvail;\r
+ totalEMSpages = freeEMSpages = EMSPageFrame = EMSHandle = EMSAvail = EMSVer = 0; // set all to 0~\r
gvar->pm.emm.EMSPresent = false; // Assume that we'll fail\r
- gvar->pm.emm.EMSAvail = 0;\r
- gvar->mmi.EMSmem = 0;\r
+ gvar->pm.emm.EMSAvail = gvar->mmi.EMSmem = 0;\r
\r
__asm {\r
mov dx,OFFSET emmname //fix by andrius4669\r
mov ax,0x3d00\r
int EMM_INT // try to open EMMXXXX0 device\r
jc error1\r
-#ifdef __DEBUG_PM__\r
- add e,1\r
-#endif\r
+\r
mov bx,ax\r
mov ax,0x4400\r
\r
int EMM_INT // get device info\r
jc error1\r
-#ifdef __DEBUG_PM__\r
- add e,1\r
-#endif\r
+\r
and dx,0x80\r
jz error1\r
-#ifdef __DEBUG_PM__\r
- add e,1\r
-#endif\r
+\r
mov ax,0x4407\r
\r
int EMM_INT // get status\r
jc error1\r
or al,al\r
jz error1\r
-#ifdef __DEBUG_PM__\r
- add e,1\r
-#endif\r
+\r
mov ah,0x3e\r
int EMM_INT // close handle\r
jc error1\r
-#ifdef __DEBUG_PM__\r
- add e,1\r
-#endif\r
+\r
mov ah,EMS_STATUS\r
int EMS_INT\r
jc error1 // make sure EMS hardware is present\r
int EMS_INT // only work on EMS 3.2 or greater (silly, but...)\r
or ah,ah\r
jnz error1\r
- mov [EMSVer],ax // set EMSVer\r
+ mov [EMSVer],ax // set EMSVer\r
cmp al,0x32 // only work on ems 3.2 or greater\r
jb error1\r
\r
mov [totalEMSpages],dx\r
mov [freeEMSpages],bx\r
mov [EMSAvail],bx\r
- jmp End1\r
+ jmp End1\r
#ifdef __BORLANDC__\r
}\r
#endif\r
error1:\r
#ifdef __BORLANDC__\r
__asm {\r
-#endif\r
-#ifdef __DEBUG_PM__\r
- mov e,1\r
#endif\r
mov err,ah\r
mov errorflag,1\r
- jmp End1\r
+ jmp End1\r
#ifdef __BORLANDC__\r
}\r
#endif\r
#ifdef __WATCOMC__\r
}\r
#endif\r
-/*\r
+#ifdef __PM__NOHOGEMS__\r
if(errorflag==false)\r
{\r
// Don't hog all available EMS\r
gvar->pm.emm.EMSAvail = size / EMSPageSize;\r
}\r
}\r
-*/\r
+#endif\r
__asm {\r
mov ah,EMS_ALLOCPAGES\r
mov bx,[EMSAvail];\r
error2:\r
#ifdef __BORLANDC__\r
__asm {\r
-#endif\r
-#ifdef __DEBUG_PM__\r
- mov e,1\r
#endif\r
mov err,ah\r
mov errorflag,1\r
- jmp End2\r
+ jmp End2\r
#ifdef __BORLANDC__\r
- }\r
+ }//end of assembly\r
#endif\r
End2:\r
#ifdef __WATCOMC__\r
- }\r
+ }//end of assembly\r
#endif\r
-\r
- if(errorflag==false)\r
- {\r
- gvar->mmi.EMSmem = EMSAvail * (dword)EMSPageSize;\r
-\r
- // Initialize EMS mapping cache\r
- for (i = 0;i < EMSFrameCount;i++)\r
- gvar->pm.emm.EMSList[i].baseEMSPage = -1;\r
-\r
- }\r
- else\r
+ if(errorflag==true)\r
{\r
strcpy(str,"PML_StartupEMS: EMS error ");\r
MM_EMSerr(str, err);\r
printf("%s\n",str);\r
-#ifdef __DEBUG_PM__\r
- printf("e=%u\n", e);\r
- getch();\r
-#endif\r
return(gvar->pm.emm.EMSPresent);\r
}\r
+ gvar->mmi.EMSmem = EMSAvail * (dword)EMSPageSize;\r
+\r
+ // Initialize EMS mapping cache\r
+ for (i = 0;i < EMSFrameCount;i++)\r
+ gvar->pm.emm.EMSList[i].baseEMSPage = -1;\r
\r
gvar->pm.emm.EMSPresent = true; // We have EMS\r
gvar->pm.emm.EMSPageFrame = EMSPageFrame;\r