]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_hc.c
__seguse.txt added to show _seg usage also OpenVGMFile needs to be ported to 16_snd...
[16.git] / src / lib / 16_hc.c
index 13dd3f0e5addcc9080dd48417d188bd1e086f695..f2963158f9fa4154055d171b64277d4092a8fec3 100755 (executable)
@@ -1,5 +1,5 @@
 /* Project 16 Source Code~\r
- * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+ * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
  *\r
  * This file is part of Project 16.\r
  *\r
 */\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
@@ -89,7 +120,7 @@ void __near* LargestFreeBlock(size_t* Size)
        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
@@ -97,7 +128,7 @@ size_t _coreleft(void)
        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
@@ -133,7 +164,7 @@ size_t _coreleft(void)
        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
@@ -162,7 +193,7 @@ void far* LargestFarFreeBlock(size_t* Size)
        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
@@ -170,7 +201,7 @@ size_t _farcoreleft(void)
        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
@@ -197,7 +228,7 @@ size_t _farcoreleft(void)
 }\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
@@ -260,7 +291,7 @@ size_t _hugecoreleft(void)
        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
@@ -297,11 +328,11 @@ size_t _basedcoreleft(void)
        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
-               //exit( 1 );\r
+\r
        }\r
        else\r
 \r
@@ -334,7 +365,7 @@ size_t _basedcoreleft(void)
        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
@@ -348,11 +379,11 @@ size_t GetFreeSize(void)
                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
@@ -366,11 +397,11 @@ size_t GetFarFreeSize(void)
                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
@@ -384,16 +415,16 @@ size_t GetNearFreeSize(void)
                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
@@ -410,7 +441,7 @@ void heapdump(global_game_variables_t *gvar)
                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
@@ -429,7 +460,7 @@ nh_info._pentry, nh_info._size );*/
                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
@@ -448,7 +479,7 @@ fh_info._pentry, fh_info._size );*/
                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
@@ -457,18 +488,18 @@ fh_info._pentry, fh_info._size );*/
        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
@@ -490,7 +521,7 @@ void heapstat(global_game_variables_t *gvar, int heap_status, byte *str)
        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