X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_hc.c;h=271f4c1a059d94fa835b78e460a1eea5073542b3;hb=6021fc3f27b895d382fbd30488ead35657e39196;hp=2d747f67f7b51294da9901c880c653516ba73ac5;hpb=d09e91b0ef220dbfd79d1aa8470668f16c0b6e24;p=16.git diff --git a/src/lib/16_hc.c b/src/lib/16_hc.c index 2d747f67..271f4c1a 100755 --- a/src/lib/16_hc.c +++ b/src/lib/16_hc.c @@ -1,5 +1,5 @@ /* Project 16 Source Code~ - * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover + * Copyright (C) 2012-2018 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover * * This file is part of Project 16. * @@ -52,22 +52,10 @@ long HC_Newfarcoreleft() #endif //from: https://stackoverflow.com/questions/14386856/c-check-available-ram -void -#ifdef __BORLANDC__ - * -#endif -#ifdef __WATCOMC__ - __near* -#endif -HC_LargestFreeBlock(size_t* Size) +void NPTR* HC_LargestFreeBlock(size_t* Size) { size_t s0, s1; -#ifdef __BORLANDC__ - void * p; -#endif -#ifdef __WATCOMC__ - void __near* p; -#endif + void NPTR* p; s0 = ~(size_t)0 ^ (~(size_t)0 >> 1); while (s0 && (p = _nmalloc(s0)) == NULL) @@ -129,12 +117,12 @@ size_t HC_coreleft(void) } //far version of above -void far* HC_LargestFarFreeBlock(unsigned long* Size) +void __far* HC_LargestFarFreeBlock(dword* Size) { - unsigned long s0, s1; - void far* p; + dword s0, s1; + void __far* p; - s0 = ~(unsigned long)0 ^ (~(unsigned long)0 >> 1); + s0 = ~(dword)0 ^ (~(dword)0 >> 1); while (s0 && (p = _fmalloc(s0)) == NULL) s0 >>= 1; @@ -159,37 +147,39 @@ void far* HC_LargestFarFreeBlock(unsigned long* Size) } //far version of above -unsigned long HC_farcoreleft(void) +dword HC_farcoreleft(void) { - unsigned long total = 0UL; - void far* pFirst = NULL; - void far* pLast = NULL; + dword total = 0UL; + void __far* pFirst = NULL; + void __far* pLast = NULL; for(;;) { - unsigned long largest; - void far* p = HC_LargestFarFreeBlock(&largest); - if (largest < sizeof(void far*)) + dword largest; + void __far* p = HC_LargestFarFreeBlock(&largest); + if (largest < sizeof(void __far*)) { if (p != NULL) _ffree(p); break; } - *(void far* far*)p = NULL; + *(void __far* __far*)p = NULL; total += largest; if (pFirst == NULL) pFirst = p; if (pLast != NULL) - *(void far* far*)pLast = p; + *(void __far* __far*)pLast = p; pLast = p; } while (pFirst != NULL) { - void far* p = *(void far* far*)pFirst; + void __far* p = *(void __far* __far*)pFirst; _ffree(pFirst); pFirst = p; } + + //if(total>16) total+=16; total &= 0xfffffff0UL; return total; } @@ -306,25 +296,25 @@ size_t _basedcoreleft(void) { size_t largest; void __based(segu)* p = LargestBasedFreeBlock(&largest); - if (largest < sizeof(void far*)) + if (largest < sizeof(void __far*)) { if (p != NULL) _ffree(p); break; } - *(void far* far*)p = NULL; + *(void __far* __far*)p = NULL; total += largest; if (pFirst == NULL) pFirst = p; if (pLast != NULL) - *(void far* far*)pLast = p; + *(void __far* __far*)pLast = p; pLast = p; } while (pFirst != NULL) { - void far* p = *(void far* far*)pFirst; + void __far* p = *(void __far* __far*)pFirst; _ffree(pFirst); pFirst = p; } @@ -366,7 +356,7 @@ void HCL_HeapWalking (struct _heapinfo *h_info, hc_use_t *hu, unsigned nearfarsw HCL_heapstat(hu->heap_status); } -unsigned long HC_GetFarFreeSize(void) +dword HC_GetFarFreeSize(void) { struct _heapinfo h_info; hc_use_t hu; @@ -375,7 +365,7 @@ unsigned long HC_GetFarFreeSize(void) #if 0 struct _heapinfo fh_info; int heap_status; - unsigned long fh_free=0, fh_total=0, fh_used=0; + dword fh_free=0, fh_total=0, fh_used=0; fh_info._pentry = NULL; for(;;) { @@ -487,16 +477,18 @@ fh_info._pentry, fh_info._size );*/ strcpy(scratch,"\n"); strcat(scratch,kittengets(2,0,"Memory Type Total Used Free\n")); strcat(scratch,"---------------- -------- -------- --------\n"); -// printmeminfoline(&scratch, "Default", h_total, h_used, h_free); +//-- printmeminfoline(&scratch, "Default", h_total, h_used, h_free); printmeminfoline(scratch, "Near", nh_total, nh_used, nh_free); printmeminfoline(scratch, "Far", fh_total, fh_used, fh_free); strcat(scratch,"---------------- -------- -------- --------\n"); +#if defined(__LARGE__) || defined(__COMPACT__) || defined(__HUGE__) strcat(scratch,"HC_coreleft = "); ultoa((dword)HC_coreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n"); strcat(scratch,"HC_farcoreleft = "); ultoa((dword)HC_farcoreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n"); -// strcat(scratch,"HC_Newfarcoreleft = "); ultoa((dword)HC_Newfarcoreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n"); -// strcat(scratch,"HC_GetFreeSize = "); ultoa((dword)HC_GetFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n"); - strcat(scratch,"HC_GetNearFreeSize = "); ultoa((dword)HC_GetNearFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n"); - strcat(scratch,"HC_GetFarFreeSize = "); ultoa((dword)HC_GetFarFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n"); +#endif +//-- strcat(scratch,"HC_Newfarcoreleft = "); ultoa((dword)HC_Newfarcoreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n"); +//-- strcat(scratch,"HC_GetFreeSize = "); ultoa((dword)HC_GetFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n"); +//00 strcat(scratch,"HC_GetNearFreeSize = "); ultoa((dword)HC_GetNearFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n"); +//00 strcat(scratch,"HC_GetFarFreeSize = "); ultoa((dword)HC_GetFarFreeSize(),str,10); strcat(scratch,str); strcat(scratch,"\n"); strcat(scratch,"coreleft = "); ultoa((dword)coreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n"); strcat(scratch,"farcoreleft = "); ultoa((dword)farcoreleft(),str,10); strcat(scratch,str); strcat(scratch,"\n"); strcat(scratch,"stackavail = "); ultoa((dword)stackavail(),str,10); strcat(scratch,str); strcat(scratch,"\n"); @@ -552,14 +544,25 @@ void HCL_heapstat(int heap_status) //++ #ifdef __WATCOMC__ -unsigned long farcoreleft() +dword farcoreleft() { //---- _fheapgrow(); +// #ifdef __BORLANDC__ +// return 0x90000UL-16UL; +// #endif + +#if !defined(__LARGE__) && !defined(__COMPACT__) && !defined(__HUGE__) +//---- + return 0x90000UL+16UL; +//---- return 589824UL+16UL; +#else +//++++ return HC_farcoreleft(); //stack overflows return HC_GetFarFreeSize(); +#endif } -unsigned long coreleft() +dword coreleft() { _nheapgrow(); return _memavl();