#endif\r
\r
// Main Mem specific variables\r
-/* boolean MainPresent;\r
- memptr MainMemPages[PMMaxMainMem];\r
+ boolean MainPresent;\r
+/* memptr MainMemPages[PMMaxMainMem];\r
PMBlockAttr gvar->pm.mm.MainMemUsed[PMMaxMainMem];\r
- int gvar->pm.mm.MainPagesAvail;\r
+ int gvar->pm.mm.MainPagesAvail;*/\r
\r
// EMS specific variables\r
boolean EMSPresent;\r
- word gvar->pm.emm.EMSAvail,gvar->pm.emm.EMSPagesAvail,gvar->pm.emm.EMSHandle,\r
+/* word gvar->pm.emm.EMSAvail,gvar->pm.emm.EMSPagesAvail,gvar->pm.emm.EMSHandle,\r
gvar->pm.emm.EMSPageFrame,gvar->pm.emm.EMSPhysicalPage;\r
- gvar->pm.emm.EMSListStruct gvar->pm.emm.EMSList[EMSFrameCount];\r
+ gvar->pm.emm.EMSListStruct gvar->pm.emm.EMSList[EMSFrameCount];*/\r
\r
// XMS specific variables\r
boolean XMSPresent;\r
- word gvar->pm.xmm.XMSAvail,gvar->pm.xmm.XMSPagesAvail,gvar->pm.xmm.XMSHandle;*/\r
+ //word gvar->pm.xmm.XMSAvail,gvar->pm.xmm.XMSPagesAvail,gvar->pm.xmm.XMSHandle;\r
word XMSDriver;\r
/* int gvar->pm.xmm.XMSProtectPage = -1;\r
\r
char gvar->pm.fi.PageFileName[13] = {"VSWAP."};\r
int PageFile = -1;\r
word gvar->pm.fi.ChunksInFile;\r
- word PMSpriteStart,PMSoundStart;\r
+ word PMSpriteStart,PMSoundStart;*/\r
\r
// General usage variables\r
- boolean PMStarted,\r
+ boolean PMStarted;/*,\r
gvar->pm.PMPanicMode,\r
gvar->pm.PMThrashing;\r
word gvar->pm.XMSPagesUsed,\r
gvar->pm.PMNumBlocks;\r
long PMFrameCount;\r
PageListStruct far *gvar->pm.PMPages,\r
- _seg *gvar->pm.PMSegPages;\r
-*/\r
-boolean PMStarted, MainPresent, EMSPresent, XMSPresent;\r
+ _seg *gvar->pm.PMSegPages;*/\r
+\r
static char *ParmStrings[] = {"nomain","noems","noxms",nil};\r
\r
/////////////////////////////////////////////////////////////////////////////\r
{\r
int i;\r
long size;\r
- byte str[160];\r
+ byte str[64];\r
byte err;\r
\r
boolean errorflag=0;\r
#ifdef __WATCOMC__\r
}\r
#endif\r
+/*\r
if(errorflag==false)\r
{\r
// Don't hog all available EMS\r
gvar->pm.emm.EMSAvail = size / EMSPageSize;\r
}\r
}\r
-\r
+*/\r
__asm {\r
mov ah,EMS_ALLOCPAGES\r
mov bx,[EMSAvail];\r
gvar->pm.emm.EMSAvail = EMSAvail;\r
gvar->pm.emm.EMSVer = EMSVer;\r
gvar->pm.emm.EMSHandle = EMSHandle;\r
+ gvar->pm.emm.freeEMSpages = freeEMSpages;\r
+ gvar->pm.emm.totalEMSpages = totalEMSpages;\r
\r
return(EMSPresent);\r
}\r
PML_ShutdownEMS(global_game_variables_t *gvar)\r
{\r
word EMSHandle;\r
+ byte err;\r
+ byte str[64];\r
+ boolean errorflag=false;\r
+\r
EMSHandle=gvar->pm.emm.EMSHandle;\r
\r
if (EMSPresent)\r
mov ah,EMS_FREEPAGES\r
mov dx,[EMSHandle]\r
int EMS_INT\r
+ jc errors\r
+ jmp Ends\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
+ errors:\r
+#ifdef __BORLANDC__\r
+ __asm {\r
+#endif\r
+ mov err,ah\r
+ mov errorflag,1\r
+ jmp Ends\r
+#ifdef __BORLANDC__\r
+ }\r
+#endif\r
+ Ends:\r
+#ifdef __WATCOMC__\r
}\r
- if (_AH)\r
+#endif\r
+ if(errorflag==true)\r
{\r
+ strcpy(str,"PML_ShutdownEMS: Error freeing EMS ");\r
+ MM_EMSerr(str, err);\r
+ printf("%s\n",str);\r
Quit("PML_ShutdownEMS: Error freeing EMS\n");\r
//return;\r
}\r
{\r
#ifdef __DEBUG_PM__\r
printf("PM_SetMainMemPurge() info of gvar->pm.mm.MainMemPages[i]\n");\r
- //printf(" %Fp, %Fp\n", gvar->pm.mm.MainMemPages[i], (gvar->pm.mm.MainMemPages[i]));\r
printf("& %Fp, %Fp\n", &gvar->pm.mm.MainMemPages[i], &(gvar->pm.mm.MainMemPages[i]));\r
- //MM_ShowMemory(gvar);\r
- //MM_DumpData(gvar);\r
- //MM_Report_(gvar);\r
#endif\r
if (gvar->pm.mm.MainMemPages[i])\r
MM_SetPurge(&(gvar->pm.mm.MainMemPages[i]),level, gvar);\r
\r
else\r
{\r
- printf("MainPresent IS NULL\n");\r
- printf("%x ", MainPresent);\r
- exit(-4);\r
+ Quit("MainPresent IS NULL\n");\r
}\r
}\r
\r
gvar->pm.fi.PageFile = open(gvar->pm.fi.PageFileName,O_RDONLY + O_BINARY);\r
if (gvar->pm.fi.PageFile == -1)\r
{\r
- //Quit("PML_OpenPageFile: Unable to open page file");\r
- printf("PML_OpenPageFile: Unable to open page file");\r
- printf(": %s\n", gvar->pm.fi.PageFileName);\r
- exit(-1);\r
+ Quit("PML_OpenPageFile: Unable to open page file");\r
//return;\r
}\r
\r
int i;\r
\r
if (PMStarted)\r
- {\r
- printf("pee\n");\r
return;\r
- }\r
\r
strcpy(&(gvar->pm.fi.PageFileName), "VSWAP.");\r
\r
}\r
}\r
\r
- PML_OpenPageFile(gvar);\r
+ //0000++++PML_OpenPageFile(gvar);\r
\r
if (!noems)\r
PML_StartupEMS(gvar);\r
if (!noxms)\r
- PML_StartupXMS(gvar);\r
+ //++++PML_StartupXMS(gvar); //TODO: convert\r
\r
- if (nomain && !EMSPresent)\r
+ if (!nomain && !EMSPresent)\r
{\r
Quit("PM_Startup: No main or EMS\n");\r
//return;\r
}\r
- printf("PML_StartupMainMem\n");\r
PML_StartupMainMem(gvar);\r
\r
PM_Reset(gvar);\r