return(emmcfems);
}
-
+#ifndef __16_PM__
/*
======================
=
gvar->mmi.EMSmem = (i)*0x4000lu;
return 0;
}
-
+#endif
//==========================================================================
/*
=======================
*/
-boolean MML_CheckForXMS(global_game_variables_t *gvar)
+boolean MML_CheckForXMS(void)
{
boolean errorflag=false;
- gvar->mm.numUMBs = 0;
__asm {
mov ax,0x4300
else return true;
}
-
+#ifndef __16_PM__
/*
======================
=
}
}
}
-
+#endif
//==========================================================================
/*
//printf("_FARCORELEFT %lu\n", _FCORELEFT);
#ifdef __WATCOMC__
_fheapgrow();
+ length=_FCORELEFT;//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL;
#endif
#ifdef __BORLANDC__
printf("farcoreleft() %lu\n", farcoreleft());
printf("(farcoreleft()+32)-_FCORELEFT %d\n", (sword)((farcoreleft()+32)-_FCORELEFT));
+ length=farcoreleft();//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL;
#endif
- length=_FCORELEFT;//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL;
start = gvar->mm.farheap = _fmalloc(length);
//start = gvar->mm.farheap = halloc(length, 1);
length -= 16-(FP_OFF(start)&15);
gvar->mmi.mainmem = gvar->mmi.nearheap + gvar->mmi.farheap;
#ifndef __16_PM__
- if(!debugpm) {
+ if(!dbg_debugpm) {
//
// detect EMS and allocate up to 64K at page frame
//
if(MML_CheckForEMS())
{
MML_SetupEMS(gvar); // allocate space
- //TODO: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT!
+ //16_PM: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT!
MML_UseSpace(gvar->mm.EMSPageFrame,(MAPPAGES)*0x4000lu, gvar);
//if(gvar->pm.emm.EMSVer<0x40)
MM_MapEMS(gvar); // map in used pages
,ParmStringsexmm) == 0)
goto xmsskip; // param NOXMS
}
- if(MML_CheckForXMS(gvar))
+ if(MML_CheckForXMS())
{
MML_SetupXMS(gvar); // allocate as many UMBs as possible
}
free(gvar->mm.nearheap);// printf(" near freed\n");
#endif
#ifdef __DEBUG__
- if(!debugpm) {
+ if(!dbg_debugpm) {
#endif
if(MML_CheckForEMS()){ MML_ShutdownEMS(gvar); }//printf(" EMS freed\n"); }
- if(MML_CheckForXMS(gvar)){ MML_ShutdownXMS(gvar); }//printf(" XMS freed\n"); }
+ if(MML_CheckForXMS()){ MML_ShutdownXMS(gvar); }//printf(" XMS freed\n"); }
#ifdef __DEBUG__
}
#endif
printf(" LIMEMS\n");
printf(" EMM v%x.%x available\n", gvar->pm.emm.EMSVer>>4,gvar->pm.emm.EMSVer&0x0F);
printf(" totalEMSpages: %u ", gvar->pm.emm.totalEMSpages); printf("freeEMSpages: %u\n", gvar->pm.emm.freeEMSpages);
- printf(" EMSPageFrame: %x\n", gvar->pm.emm.EMSPageFrame);
+ printf(" EMSPageFrame: %04x\n", gvar->pm.emm.EMSPageFrame);
}
- if(MML_CheckForXMS(gvar))
+ if(MML_CheckForXMS())
{
printf(" XMS\n");
- printf(" XMSaddr: %X\n", *XMSaddr);
+//++++ printf(" XMS v%x.%x available\n", gvar->pm.xmm.XMSVer>>4,gvar->pm.xmm.XMSVer&0x0F);
+ printf(" XMSDriver: %Fp\n", XMSDriver);
+ printf(" XMSHandle: %04x\n", gvar->pm.xmm.XMSHandle);
}
- printf("near: %lu ", gvar->mmi.nearheap); printf("far: %lu\n", gvar->mmi.farheap); if(MML_CheckForEMS())
- printf("EMSmem: %lu ", gvar->mmi.EMSmem); if(MML_CheckForXMS(gvar)) printf("XMSmem: %lu", gvar->mmi.XMSmem); printf("\n");
+ printf("nearheap: %lu ", gvar->mmi.nearheap); printf("farheap: %lu\n", gvar->mmi.farheap);
+ if(MML_CheckForEMS()) printf("EMSmem: %lu ", gvar->mmi.EMSmem); if(MML_CheckForXMS()) printf("XMSmem: %lu", gvar->mmi.XMSmem); printf("\n");
+ printf("convmem:\n"); DebugMemory_(gvar, 0);
//printf("mainmem: %lu\n", gvar->mmi.mainmem);
- printf("Total convmem: %lu ", gvar->mmi.mainmem); printf("TotalFree: %lu ", MM_TotalFree(gvar)+gvar->mmi.EMSmem+gvar->mmi.XMSmem+gvar->mmi.XMSmem); printf("TotalUsed: %lu\n", gvar->mmi.mainmem);
- printf(" UnusedMemory: %lu\n", MM_UnusedMemory(gvar));
+ //printf("Total convmem: %lu ", gvar->mmi.mainmem); printf("TotalFree: %lu ", MM_TotalFree(gvar)+gvar->mmi.EMSmem+gvar->mmi.XMSmem+gvar->mmi.XMSmem); printf("TotalUsed: %lu\n", gvar->mmi.mainmem);
+ //printf(" UnusedMemory: %lu\n", MM_UnusedMemory(gvar));
+
}
//==========================================================================
gvar->mm.mmfree=x;
}*/
+void xms_call(byte v, global_game_variables_t *gvar)
+{
+ dword XMSDriver = gvar->pm.xmm.XMSDriver;
+ __asm {
+ mov ah,[v]
+ call [DWORD PTR XMSDriver]
+ }
+}
+
/*void MM_seguin(void)
{
__asm {