#if 0
C -o kook kook.o -i ::;Exit 0
#endif
/*
 kook.c
  64-bit by 32-bit division test (68020+/compatible)
  initial purpose: tests results of enviro64 inline code
  one param: denominator
  other input: hold control key down to enter debugger (Mac OS)

  Created:<2011.07.28 20:44 EDT - macfceu-0.7a3.src.zip
  Revised: 2012.10.11 02:17 EDT

12.10.02 - cleaned redundancies, added internal signed overflow tests
*/

#include <stdio.h>
#include <stdlib.h>
#include "enviro64.h"

static void sdivtest(int64 a,
	int32 d)
{
	printf("0x%016llX/%d, low 0x%X\n",
		a,d,divi32(a,d));
	int64divs32(a,d);
	printf("	0x%llX\n",
		a);
}

static void udivtest(uint64 a,
	uint32 d)
{
	printf("0x%016llXu/%uu, low 0x%X\n",
		a,d,divu32(a,d));
	uint64divu32(a,d);
	printf("	0x%llX\n",
		a);
}

int main(int argc,
	char const*const*argv)
{
	int64		a;
	uint64		b;
	int		d;

	if (argc<=0)
		return 0;
	if (!--argc)
		return 1;
	d = atoi(argv[1]);
#if TARGET_OS_MAC
	if (((volatile char*)0x174)[60>>3]&(0x80>>(60&7))) /* keymap - control */
		Debugger();
#endif
	printf("-- internal signed overflow tests\n");
	int64sethl(a,0x20000000U,0x1FFFFFFF);
	sdivtest(a,d);
	int64sethl(a,0x40000000U,0);
	sdivtest(a,d);
	int64sethl(a,0x40000000U,0x7FFFFFFF);
	sdivtest(a,d);
	int64sethl(a,0x80000000U,0);
	sdivtest(a,d);
	int64sethl(a,0x80000000U,0x7FFFFFFF);
	sdivtest(a,d);

	printf("-- signed tests\n");
	int64sethl(a,-2,0x80000000U);
	sdivtest(a,d);
	int64sethl(a,0,0x7FFFFFFF);
	sdivtest(a,d);
	int64sethl(a,0,0x80000000U);
	sdivtest(a,d);
	int64sethl(a,1,0);
	sdivtest(a,d);
	int64sethl(a,1,0x80000000U);
	sdivtest(a,d);

	printf("-- unsigned tests\n");
	int64sethl(b,-2,0x80000000U);
	udivtest(b,d);
	int64sethl(b,0,0x7FFFFFFF);
	udivtest(b,d);
	int64sethl(b,0,0x80000000U);
	udivtest(b,d);
	int64sethl(b,1,0);
	udivtest(b,d);
	int64sethl(b,1,0x80000000U);
	udivtest(b,d);

	return 0;
}
