#endif\r
IN_Startup(gvar);\r
#endif\r
+#ifdef __16_PM__\r
PM_Startup(gvar);\r
+ PM_CheckMainMem(gvar);\r
PM_UnlockMainMem(gvar);\r
+#endif\r
CA_Startup(gvar);\r
}\r
\r
\r
void Shutdown16(global_game_variables_t *gvar)\r
{\r
+#ifdef __16_PM__\r
PM_Shutdown(gvar);\r
+#endif\r
#ifdef __WATCOMC__\r
#ifdef __DEBUG_InputMgr__\r
if(!dbg_nointest)\r
#endif\r
CA_Shutdown(gvar);\r
MM_Shutdown(gvar);\r
+#ifdef __WATCOMC__\r
VGAmodeX(0, 1, gvar);\r
+#endif\r
}\r
\r
\r
\r
void ClearMemory (global_game_variables_t *gvar)\r
{\r
+#ifdef __16_PM__\r
PM_UnlockMainMem(gvar);\r
+#endif\r
//snd\r
MM_SortMem (gvar);\r
}\r
}\r
\r
//===========================================================================\r
-//from http://stackoverflow.com/questions/2736753/how-to-remove-extension-from-file-name\r
-\r
-// remove_ext: removes the "extension" from a file spec.\r
-// mystr is the string to process.\r
-// dot is the extension separator.\r
-// sep is the path separator (0 means to ignore).\r
-// Returns an allocated string identical to the original but\r
-// with the extension removed. It must be freed when you're\r
-// finished with it.\r
-// If you pass in NULL or the new string can't be allocated,\r
-// it returns NULL.\r
-\r
-char *remove_ext (char* mystr, char dot, char sep) {\r
- char *retstr, *lastdot, *lastsep;\r
-\r
- // Error checks and allocate string.\r
-\r
- if (mystr == NULL)\r
- return NULL;\r
- if ((retstr = malloc (strlen (mystr) + 1)) == NULL)\r
- return NULL;\r
-\r
- // Make a copy and find the relevant characters.\r
-\r
- strcpy (retstr, mystr);\r
- lastdot = strrchr (retstr, dot);\r
- lastsep = (sep == 0) ? NULL : strrchr (retstr, sep);\r
-\r
- // If it has an extension separator.\r
-\r
- if (lastdot != NULL) {\r
- // and it's before the extenstion separator.\r
-\r
- if (lastsep != NULL) {\r
- if (lastsep < lastdot) {\r
- // then remove it.\r
-\r
- *lastdot = '\0';\r
- }\r
- } else {\r
- // Has extension separator with no path separator.\r
-\r
- *lastdot = '\0';\r
- }\r
- }\r
-\r
- // Return the modified string.\r
-\r
- return retstr;\r
-}\r
-\r
-//from http://quiz.geeksforgeeks.org/c-program-cyclically-rotate-array-one/\r
-void rotateR(byte arr[], byte n)\r
-{\r
- byte x = arr[n-1], i;\r
- for (i = n-1; i > 0; i--)\r
- arr[i] = arr[i-1];\r
- arr[0] = x;\r
-}\r
-\r
-void rotateL(byte arr[], byte n)\r
-{\r
- byte x = arr[n+1], i;\r
- for (i = n+1; i > 0; i++)\r
- arr[i] = arr[i+1];\r
- arr[0] = x;\r
-}\r
\r
#ifndef __WATCOMC__\r
char global_temp_status_text[512];\r
void turboXT(byte bakapee)\r
{\r
__asm {\r
- push ax\r
- push bx\r
- push cx\r
- in al, 61h //; Read equipment flags\r
- xor al, bakapee //; toggle speed\r
- out 61h, al //; Write new flags back\r
-\r
- mov bx, 0F89h //; low pitch blip\r
- and al, 4 //; Is turbo mode set?\r
- jz @@do_beep\r
- mov bx, 52Eh //; high pitch blip\r
-\r
-@@do_beep:\r
- mov al, 10110110b //; Timer IC 8253 square waves\r
- out 43h, al //; channel 2, speaker\r
- mov ax, bx\r
- out 42h, al //; send low order\r
- mov al, ah //; load high order\r
- out 42h, al //; send high order\r
- in al, 61h //; Read IC 8255 machine status\r
- push ax\r
- or al, 00000011b\r
- out 61h, al //; Turn speaker on\r
- mov cx, 2000h\r
-@@delay:\r
- loop @@delay\r
- pop ax\r
- out 61h, al //; Turn speaker off\r
- pop cx\r
- pop bx\r
- pop ax\r
+ push ax\r
+ push bx\r
+ push cx\r
+ in al, 61h //; Read equipment flags\r
+ xor al, bakapee //; toggle speed\r
+ out 61h, al //; Write new flags back\r
+\r
+ mov bx, 0F89h //; low pitch blip\r
+ and al, 4 //; Is turbo mode set?\r
+ jz @@do_beep\r
+ mov bx, 52Eh //; high pitch blip\r
+\r
+ @@do_beep:\r
+ mov al, 10110110b //; Timer IC 8253 square waves\r
+ out 43h, al //; channel 2, speaker\r
+ mov ax, bx\r
+ out 42h, al //; send low order\r
+ mov al, ah //; load high order\r
+ out 42h, al //; send high order\r
+ in al, 61h //; Read IC 8255 machine status\r
+ push ax\r
+ or al, 00000011b\r
+ out 61h, al //; Turn speaker on\r
+ mov cx, 2000h\r
+ @@delay:\r
+ loop @@delay\r
+ pop ax\r
+ out 61h, al //; Turn speaker off\r
+ pop cx\r
+ pop bx\r
+ pop ax\r
}\r
}\r
#endif\r
\r
+const char *word_to_binary(word x)\r
+{\r
+ static char b[17];\r
+ int z;\r
+\r
+ b[0] = '\0';\r
+ for (z = 16; z > 0; z >>= 1)\r
+ {\r
+ strcat(b, ((x & z) == z) ? "1" : "0");\r
+ }\r
+ return b;\r
+}\r
+\r
const char *nibble_to_binary(nibble x)\r
{\r
static char b[9];\r