/*****************************************************************************
com-	memory
piler	model	CPU	__TURBOC__	results
-------	------	---	----------	-------
Turbo	SMALL	186			OK
C 2.01

Turbo 	LARGE	186			OK
C 2.01

Turbo 	SMALL	186	0x0296		OK
C++ 1.01

Turbo 	LARGE	186	0x0296		OK
C++ 1.01

Turbo 	SMALL	186	0x0401		FAULTY HUGE POINTER MATH
C++ 3.0

Turbo 	LARGE	186	0x0401		FAULTY HUGE POINTER MATH
C++ 3.0

Borland SMALL	186	0x0410		HUGE POINTER MATH OK, BUT printf()
C++ 3.1					DISPLAYS WRONG VALUE DUE TO OVER-
					AGGRESSIVE (WRONG) OPTIMIZATION
					(MAKE Foo STATIC OR GLOBAL TO FIX)

Borland	LARGE	186	0x0410		HUGE POINTER MATH OK, BUT printf()
C++ 3.1					DISPLAYS WRONG VALUE DUE TO OVER-
					AGGRESSIVE (WRONG) OPTIMIZATION
					(MAKE Foo STATIC OR GLOBAL TO FIX)
Borland SMALL	386	0x0410		OK
C++ 3.1

Borland	LARGE	386	0x0410		OK
C++ 3.1
*****************************************************************************/
#include <stdio.h>
#include <dos.h>

void main(void)
{	/*static*/ char huge *Foo;

	printf("__TURBOC__ = 0x%04X\n", __TURBOC__);
	Foo=MK_FP(0xAFFF, 0x0F);
	printf("Foo=%Fp\n", Foo);
	Foo++;
	printf("Foo=%Fp (added one; should be B000:0000)\n", Foo);
	Foo += 0x11;
	printf("Foo=%Fp (added 0x11; should be B001:0001)\n", Foo); }

