#include"del_prn.h"

enum PRNERR	prn_setcarridge(unsigned int column)
{
	register enum PRNERR	temp;

	if	(Prn_mode == PRNMODE_ESCP)
	{
		return prn_movecarridge(column-Prn_carridge);
	}

	else if	(Prn_mode==PRNMODE_MSX || Prn_mode==PRNMODE_PCPR)
	{
		unsigned	setcol = column;
		static	char	code[] = { 0x1b,'F','0','0','0','0'};

		if	(Prn_mode==PRNMODE_PCPR)	/* 180dpi → 160dpi */
			setcol = setcol*8/9;

		if	(Prn_carridge > column)	/* 現在位置より左という指定 */
		{
			if	(Prn_islinedouble_ == 2)
				return PRNERR_BADDATA;
					/* 行の中に縦倍角がある場合:指定不可 */
			else if	(prn_writebyte('\r'))
				return PRNERR_TIMEOUT;
					/* CRでキャリッジを強引に左端に戻す */
		}

		code[5] = setcol%10 + '0';	setcol /= 10;
		code[4] = setcol%10 + '0';	setcol /= 10;
		code[3] = setcol%10 + '0';	setcol /= 10;
		code[2] = setcol%10 + '0';

		temp = prn_putcode(6,code);
		if	(temp)
			return temp;

		Prn_carridge = column;
	}
	return PRNERR_OK;
}
