]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_pm.c
meh xms is hard wwww
[16.git] / src / lib / 16_pm.c
index c7488a2a5916fdfe91989734fcb06603813f456d..3b19c0ae4388ba89ec75dda3f0db750d5e06efe7 100755 (executable)
@@ -356,15 +356,9 @@ PML_StartupXMS(global_game_variables_t *gvar)
 {\r
 //#define STARTUPXMSASM\r
        byte err;\r
-#ifndef STARTUPXMSASM\r
-#define XMSAVI gvar->pm.xmm.XMSAvail\r
-#define XMSHAN gvar->pm.xmm.XMSHandle\r
-#else\r
-       #define BRACKETXMS\r
        word XMSAvail, XMSHandle;\r
 #define XMSAVI XMSAvail\r
 #define XMSHAN XMSHandle\r
-#endif\r
 //++++ word XMSVer;\r
        boolean errorflag=false;\r
        word e=0;\r
@@ -389,14 +383,10 @@ PML_StartupXMS(global_game_variables_t *gvar)
 \r
 #ifdef STARTUPXMSASM\r
                mov     ah,XMS_QUERYFREE                        // Find out how much XMS is available\r
-               call    [DWORD PTR XMSDriver]//DWORD PTR\r
-#ifndef BRACKETXMS\r
+               call    [DWORD PTR XMSDriver]\r
                mov     XMSAVI,ax\r
-#else\r
-               mov     [XMSAVI],ax\r
-#endif\r
-               or      ax,ax                           // AJR: bugfix 10/8/92\r
-               jz      error1\r
+               cmp     bl,0xa0                         // AJR: bugfix 10/8/92\r
+               je      error1\r
                mov     e,3\r
 #endif\r
                jmp     End1\r
@@ -421,7 +411,7 @@ End1:
 #ifndef STARTUPXMSASM\r
        XMS_CALL(XMS_QUERYFREE);                        // Find out how much XMS is available\r
        XMSAVI = _AX;\r
-       if (!_AX)                               // AJR: bugfix 10/8/92\r
+       if (_BL)                                // AJR: bugfix 10/8/92\r
        {\r
                errorflag = true;\r
                err = _BL;\r
@@ -432,7 +422,8 @@ End1:
 \r
 #ifdef __DEBUG_PM__\r
 //++++ printf("XMSVer=%02X     ", XMSVer);\r
-       printf("XMSAvail=%u\n", XMSAVI);\r
+       printf("XMSAvail=%u\n", (XMSAVI));\r
+       getch();\r
 #endif\r
        XMSAVI &= ~(PMPageSizeKB - 1);  // Round off to nearest page size\r
        if (XMSAVI < (PMPageSizeKB * 2))        // Need at least 2 pages\r
@@ -442,20 +433,16 @@ End1:
        }\r
 #ifdef STARTUPXMSASM\r
        __asm {\r
-#ifndef BRACKETXMS\r
                mov     dx,XMSAVI\r
-#else\r
-               mov     dx,[XMSAVI]\r
-#endif\r
                mov     ah,XMS_ALLOC                            // And do the allocation\r
-               call    [DWORD PTR XMSDriver]//DWORD PTR\r
+               call    [DWORD PTR XMSDriver]\r
 #ifndef BRACKETXMS\r
                mov     XMSHAN,dx\r
 #else\r
                mov     [XMSHAN],dx\r
 #endif\r
-               or      ax,ax                           // AJR: bugfix 10/8/92\r
-               jz      error2\r
+               cmp     ax,0                            // AJR: bugfix 10/8/92\r
+               je      error2\r
                mov     e,4\r
                jmp     End2\r
 #ifdef __BORLANDC__\r
@@ -490,11 +477,9 @@ End2:
 error:\r
        if(errorflag==false)\r
        {\r
-               gvar->mmi.XMSmem = (dword)(XMSAVI) * 1024;\r
-#ifdef STARTUPXMSASM\r
-               gvar->pm.xmm.XMSAvail = XMSAVI;\r
+               gvar->mmi.XMSmem = (XMSAVI) * 1024ul;\r
+               gvar->pm.xmm.XMSAvail = (word)XMSAVI;\r
                gvar->pm.xmm.XMSHandle = XMSHAN;\r
-#endif\r
 //++++         gvar->pm.xmm.XMSVer = XMSVer;\r
                gvar->pm.xmm.XMSPresent = true;\r
 #ifdef __DEBUG_PM__\r
@@ -508,7 +493,10 @@ error:
                //printf("      1=%u    2=%u    3=%u    4=%u\n", XMSHandle1, XMSHandle2, XMSHandle3, XMSHandle4);\r
                //printf("      2=%u    ", XMSHandle);\r
                //printf("      %u", gvar->pm.xmm.XMSHandle);\r
-               printf("err=%02X        e=%u\n", err, e);\r
+               printf("XMSerr\n");\r
+               printf("        %u,     %lu\n", (word)XMSAVI, (dword)XMSAVI);\r
+               printf("        err=%02X        e=%u\n", err, e);\r
+               getch();\r
 #endif\r
        }\r
        return(gvar->pm.xmm.XMSPresent);\r