/*  CW for DC sample "print.h"  1998 Nov 2  */

/*
 *      Takashi Kashima
 *		Copyright © 1998 Metrowerks JAPAN R&D
 *		All rights reserved.
 *
 *		1999.01.21	for beta 1.5
 *		1998.11.25	for beta 1
 *
 */

#ifndef _PRINT_H_
#define _PRINT_H_

#include <shinobi.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

void	cplusTest(void);

#ifdef __cplusplus
}
#endif /* __cplusplus */


#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

//
//	CPeripheral class
//
class	CPeripheral
{
public:
					CPeripheral(Uint32 inPort);
			void	print(void);
			void	SetPrintLoc(Sint16 inX, Sint16 inY);
private:
					CPeripheral(void)	{};
private:
	Uint32	nPort;
	Int		nInfoLoc;
};

//
//	CPort0 class
//
class	CPort0
{
public:
					CPort0(void);
			void	print(void);

private:
	CPeripheral	nPortA;
	CPeripheral	nPortB;
	CPeripheral	nPortC;
	CPeripheral	nPortD;
};

//
//	CPrint class
//
class	CPrint
{
public:

					CPrint(void);
					CPrint(Uint32 inStart);
			void	print(void);
	static	void	vsync(void);
protected:
	virtual void	printCount(void);
			void	printStatus(Sint32 inCount);
protected:
	Uint32		nStart;
	Uint32		nCount;
	CPort0		nPort;
};

//
//	CPrint2 class
//
class	CPrint2	:
	public	CPrint
{
public:
					CPrint2(void);
					CPrint2(Uint32 inStart);
protected:
	virtual void	printCount(void);
};

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* _PRINT_H_ */
