Compiling console-mode Win32 programs:
>> Sample Code: \rsxnt\sample\console\excpt
RSXIDE
Console programs can use the whole Win32 API. This application cannot run under DOS or Win3.1 with Win32s (but RSXIDE can run RSXNT console apps).
The -Zwin32 switch links the default libraries KERNEL32, USER32 and GDI32 to the application.
Compile command:
gcc -Zwin32 argvenv.c
Compiling dual-mode Win32 programs:
>> Sample Code: \rsxnt\sample\console\argvenv
RSXIDE
Dual-mode programs should only use the C-library. This Win32 console application can also run under 32-bit DOS (DPMI) and RSXWIN. You can only use the Win32 API, if you check that the program runs under the Win32 environment.
Try to run the three environments (example findfirst):
a) findfirst
b) RSX findfirst
c) RSXWIN findfirst
Compile command (without win32):
gcc -Zrsx32 findfirst.c
Compile command (with win32 kernel functions):
gcc -Zrsx32 argvenv.c -lkernel32
Example to examine runtime system:
#define BIT_RSX 0x1000L static void print_version(void) { if (_emx_env & BIT_RSX) { // RSX** found int rsx_exe = _emx_rev >> 16; int rsx_ver = _emx_rev & 0xFFFF; char *system; if (rsx_exe == 0) system = "RSX"; else if (rsx_exe == 1) system = "RSXWIN"; else if (rsx_exe == 2) { system = "RSXNT"; // WIN32 API calls allowed printf("winver = %lX\n", GetVersion()&0xffff); } else system = "Unknown"; printf("%s version: %X.%02X\n", system, rsx_ver>>8, rsx_ver&0xFF); } else printf("EMX , revision %X\n", emx_rev); }