/*
 * time.h
 *
 * Copyright 2002, Minoru Murashima. All rights reserved.
 * Distributed under the terms of the BSD License.
 *
 * time.c用ヘッダーファイル
 */


#ifndef time_h
#define time_h


#include"proc.h"


#ifndef ASM_FILE


enum{
	PIT_HZ=1193181,		/* 8254インターバルタイマーのヘルツ数 */

	/* 8254 interval timer IO register */
	PIT_CNR0=0x40,		/* counter0 register */
	PIT_CTR=0x43,		/* control register */

	/* MC146818 CMOS RAM and real-time clock IO register */
	CMOS_ADR=0x70,		/* address register */
	CMOS_DTR=0x71,		/* data register */
	CMOS_SCD=0x0,		/* second */
	CMOS_MNT=0x2,		/* minute */
	CMOS_HOR=0x4,		/* hour */
	CMOS_DAY=0x7,		/* day */
	CMOS_MTH=0x8,		/* month */
	CMOS_YER=0x9,		/* year */
	CMOS_STRA=0xa,		/* status register A */
	CMOS_STRB=0xb,		/* status register B */
	CMOS_STRC=0xc,		/* status register C */

	NMI_ENABLE=0x80,	/* NMI interrupt enable,CMOS address registerに書き込むとき一緒に設定する。 */
};


typedef struct{
	uchar second;		/* seconds */
	uchar minute;		/* minutes */
	uchar hour;			/* hours */
	uchar day;			/* days */
	uchar month;		/* months */
	uchar year_low;		/* 年100未満 */
	uchar year_high;	/* 年100以上 */
}TIME;


extern int clock_1micro;
extern int clock_1m;
extern int timer_num;

extern int count_cpu_clock();
extern int set_timer(int);
extern void del_timer(PROC*);
extern void get_current_time();
extern void init_time();


#endif


#endif
