static void video_crtc_realize_h(const adv_crtc* crtc, unsigned *de, unsigned* bs, unsigned* rs, unsigned* re, unsigned* be, unsigned* tt, unsigned x_div)
{
	/* output horizontal */
	*tt = div_low(crtc->ht, x_div);
	*de = div_high(crtc->hde, x_div);
	*rs = div_high(crtc->hrs, x_div);
	*re = div_low(crtc->hre, x_div);
	*bs = *de + 1;
	if (*bs > *rs)
		*bs = *rs;
	*be = *re + 1;
/* Not aggressive version
	*bs = *rs;
	*be = *re + 1;
*/
}
void div(int *N, int *M)
{
	if (M[0] == 1 && M[1] == 0) {
		cout << "Wrong divisor!" << endl;
		return;
	}
	int L[10];
	trans(L, "100000000");
	if (compare(M, L) <= 0)
	{
		int M_num = 0;
		for (int i = M[0]; i >= 1; i--)
		{
			M_num = M_num * 10 + M[i];
		}
		div_low(N, M_num);
	}
	else
	{
		div_high(N, M);
	}
}