*/\r
\r
#include "src/lib/16_hc.h"\r
+#include <malloc.h>\r
\r
+//from ftp://213.85.246.177/pub/FreeBSD/ports/archivers/arj/work/arj-3.10.22/environ.c\r
+//#ifdef __WATCOMC__\r
+#define FARCORELEFTPTR __huge\r
+long HC_farcoreleft()\r
+{\r
+ void FARCORELEFTPTR *hp;\r
+ static long rc=736L;\r
+ long s_rc;\r
+\r
+ s_rc=rc;\r
+ rc+=2L;\r
+ do\r
+ hp=halloc(rc-=2L, 1024);\r
+ while(hp==NULL&&rc>0L);\r
+ if(hp!=NULL)\r
+ hfree(hp);\r
+ if(rc<s_rc)\r
+ return(rc*1024L);\r
+ do\r
+ {\r
+ hp=halloc(rc+=16L, 1024);\r
+ if(hp!=NULL)\r
+ hfree(hp);\r
+ } while(hp!=NULL);\r
+ return((rc-16L)*1024L);\r
+}\r
+//#endif\r
+\r
+void\r
#ifdef __BORLANDC__\r
-void * LargestFreeBlock(size_t* Size)\r
+ *\r
#endif\r
#ifdef __WATCOMC__\r
-void __near* LargestFreeBlock(size_t* Size)\r
+ __near*\r
#endif\r
+HC_LargestFreeBlock(size_t* Size)\r
{\r
size_t s0, s1;\r
#ifdef __BORLANDC__\r
return p;\r
}\r
\r
-size_t _coreleft(void)\r
+size_t HC_coreleft(void)\r
{\r
size_t total = 0;\r
void __near* pFirst = NULL;\r
for(;;)\r
{\r
size_t largest;\r
- void __near* p = (void __near *)LargestFreeBlock(&largest);\r
+ void __near* p = (void __near *)HC_LargestFreeBlock(&largest);\r
if (largest < sizeof(void __near*))\r
{\r
if (p != NULL)\r
return total;\r
}\r
\r
-void far* LargestFarFreeBlock(size_t* Size)\r
+void far* HC_LargestFarFreeBlock(size_t* Size)\r
{\r
size_t s0, s1;\r
void far* p;\r
return p;\r
}\r
\r
-size_t _farcoreleft(void)\r
+size_t HC_farcoreleft_(void)\r
{\r
size_t total = 0;\r
void far* pFirst = NULL;\r
for(;;)\r
{\r
size_t largest;\r
- void far* p = LargestFarFreeBlock(&largest);\r
+ void far* p = HC_LargestFarFreeBlock(&largest);\r
if (largest < sizeof(void far*))\r
{\r
if (p != NULL)\r
}\r
\r
#ifdef __WATCOMC__\r
-void huge* LargestHugeFreeBlock(size_t* Size)\r
+/*void huge* LargestHugeFreeBlock(size_t* Size)\r
{\r
size_t s0, s1;\r
void huge* p;\r
return total;\r
}\r
\r
-/*void __based(__self)* LargestBasedFreeBlock(size_t* Size)\r
+void __based(__self)* LargestBasedFreeBlock(size_t* Size)\r
{\r
__segment segu;\r
size_t s0, s1;\r
void __based(segu)* pFirst = NULL;\r
void __based(segu)* pLast = NULL;\r
// allocate based heap\r
- segu = _bheapseg( 1024 );\r
+ segu = _bHC_heapseg( 1024 );\r
if( segu == _NULLSEG ) {\r
printf( "Unable to allocate based heap\n" );\r
return 0;\r
- \r
+\r
}\r
else\r
\r
return total;\r
}*/\r
\r
-size_t GetFreeSize(void)\r
+size_t HC_GetFreeSize(void)\r
{\r
struct _heapinfo h_info;\r
int heap_status;\r
if((h_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") h_used += h_info._size;\r
h_total += h_info._size;\r
}\r
- heapstat0(heap_status);\r
+ HC_heapstat0(heap_status);\r
return h_free;\r
}\r
\r
-size_t GetFarFreeSize(void)\r
+size_t HC_GetFarFreeSize(void)\r
{\r
struct _heapinfo fh_info;\r
int heap_status;\r
if((fh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") fh_used += fh_info._size;\r
fh_total += fh_info._size;\r
}\r
- heapstat0(heap_status);\r
+ HC_heapstat0(heap_status);\r
return fh_free;\r
}\r
\r
-size_t GetNearFreeSize(void)\r
+size_t HC_GetNearFreeSize(void)\r
{\r
struct _heapinfo nh_info;\r
int heap_status;\r
if((nh_info._useflag == _USEDENTRY ? "USED" : "FREE")=="USED") nh_used += nh_info._size;\r
nh_total += nh_info._size;\r
}\r
- heapstat0(heap_status);\r
+ HC_heapstat0(heap_status);\r
return nh_free;\r
}\r
\r
-void heapdump(global_game_variables_t *gvar)\r
+void HC_heapdump(global_game_variables_t *gvar)\r
{\r
struct _heapinfo fh_info, nh_info, h_info;\r
int heap_status;\r
size_t h_free, nh_free, fh_free, h_total, nh_total, fh_total, h_used, nh_used, fh_used;\r
- byte scratch[1024],str[16];\r
+ byte scratch[1024],str[16];\r
\r
HC_OpenDebug(gvar);\r
\r
h_total += h_info._size;\r
write(gvar->handle.heaphandle,scratch,strlen(scratch));\r
}\r
- heapstat(gvar, heap_status, &scratch);\r
+ HC_heapstat(gvar, heap_status, &scratch);\r
\r
//near\r
strcpy(scratch,"\n == near ==\n\n");\r
nh_total += nh_info._size;\r
write(gvar->handle.heaphandle,scratch,strlen(scratch));\r
}\r
- heapstat(gvar, heap_status, &scratch);\r
+ HC_heapstat(gvar, heap_status, &scratch);\r
\r
//far\r
strcpy(scratch,"\n == far ==\n\n");\r
fh_total += fh_info._size;\r
write(gvar->handle.heaphandle,scratch,strlen(scratch));\r
}\r
- heapstat(gvar, heap_status, &scratch);\r
+ HC_heapstat(gvar, heap_status, &scratch);\r
\r
strcpy(scratch,"\n");\r
strcat(scratch,kittengets(2,0,"Memory Type Total Used Free\n"));\r
printmeminfoline(&scratch, "Near", nh_total, nh_used, nh_free);\r
printmeminfoline(&scratch, "Far", fh_total, fh_used, fh_free);\r
strcat(scratch,"---------------- -------- -------- --------\n");\r
- strcat(scratch,"coreleft = "); ultoa((dword)_coreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
- strcat(scratch,"farcoreleft = "); ultoa((dword)_farcoreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
- strcat(scratch,"GetFreeSize = "); ultoa((dword)GetFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
- strcat(scratch,"GetNearFreeSize = "); ultoa((dword)GetNearFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
- strcat(scratch,"GetFarFreeSize = "); ultoa((dword)GetFarFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
+ strcat(scratch,"HC_coreleft = "); ultoa((dword)HC_coreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
+ strcat(scratch,"HC_farcoreleft = "); ultoa((dword)HC_farcoreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
+ strcat(scratch,"HC_GetFreeSize = "); ultoa((dword)HC_GetFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
+ strcat(scratch,"HC_GetNearFreeSize = "); ultoa((dword)HC_GetNearFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
+ strcat(scratch,"HC_GetFarFreeSize = "); ultoa((dword)HC_GetFarFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
strcat(scratch,"memavl = "); ultoa((dword)_memavl(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
strcat(scratch,"stackavail = "); ultoa((dword)stackavail(),str,10); strcat(scratch,str); strcat(scratch,"\n");\r
write(gvar->handle.heaphandle,scratch,strlen(scratch));\r
HC_CloseDebug(gvar);\r
}\r
\r
-void heapstat(global_game_variables_t *gvar, int heap_status, byte *str)\r
+void HC_heapstat(global_game_variables_t *gvar, int heap_status, byte *str)\r
{\r
switch( heap_status ) {\r
case _HEAPEND:\r
write(gvar->handle.heaphandle,(str),strlen((str)));\r
}\r
\r
-void heapstat0(int heap_status)\r
+void HC_heapstat0(int heap_status)\r
{\r
switch( heap_status ) {\r
case _HEAPEND:\r