欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

clock.h

参照MINIX3写的操作系统 用GCC+NASM+BOCHS开发
H
字号:
PRIVATE long time_to_second(struct t_bios_time * time);PUBLIC void InitClock();PRIVATE void ClockInterrupt();PRIVATE void SetTime();PUBLIC void OutCommand(t_8 Command);PUBLIC int InResult();PUBLIC void detect_floppy_drives();PRIVATE void GetTime();PUBLIC void initClock();/*********************************************************************/extern int printk(const char * fmt, ...);//klibextern char * strcpy(char * strDest,const char * strSrc);//klib/*********************************************************************/#define TIMER0	0x40
#define TIMER_MODE 0x43
#define RATE_GENERATOR 0x34
#define TIMER_FREQ 1193182L

#define TIMER_MODE	0x43
#define TIMER0		0x40

#define TIMER_FREQ	1193182L
#define HZ		100
#define LATCH		(TIMER_FREQ / HZ)

#define LATCH_COUNT	0x00
#define TIMER_COUNT	((unsigned)(TIMER_FREQ / HZ))


#define RTC_SECOND		0
#define RTC_SECOND_ALRAM	1
#define RTC_MINUTE		2
#define RTC_MINUTE_ALRAM	3
#define RTC_HOUR		4
#define RTC_HOUR_ALRAM		5
#define RTC_DAY_OF_WEEK		6
#define RTC_DAY_OF_MONTH	7
#define RTC_MONTH		8
#define RTC_YEAR		9

#define RTC_REG_A		10
#define RTC_REG_B		11
#define RTC_REG_C		12
#define RTC_REG_D		13

#define RTC_CENTURY		0x32

#define BCD_TO_BIN(val) (val = (val & 0x0f) + ((val >> 4) * 10))
#define BIN_TO_BCD(val) (val = ((val / 10) << 4) + (val % 10))
#define MINUTE	60
#define HOUR	(MINUTE * 60)
#define DAY	(HOUR * 24)
#define YEAR	(DAY * 365)#define DIR 0x40
#define READYY 0x80
#define BUSY 0x10
#define STATUS 0x3f4

#define outb(value,port) __asm__ ("outb %%al,%%dx"::"a" (value),"d" (port))
#define inb(port) ({ unsigned char _v; __asm__ volatile ("inb %%dx,%%al":"=a" (_v):"d" (port)); _v; })
#define outb_p(value,port) __asm__ ("outb %%al,%%dx\n" "\tjmp 1f\n" "1:\tjmp 1f\n" "1:"::"a" (value),"d" (port))
#define inb_p(port) ({ unsigned char _v; __asm__ volatile ("inb %%dx,%%al\n" "\tjmp 1f\n" "1:\tjmp 1f\n" "1:":"=a" (_v):"d" (port)); _v; })
#define CMOS_READ(addr) ({outb_p(addr | 0x80, 0x70);inb_p(0x71);})
long volatile timer_count;
long volatile boot_time;

struct t_bios_time bios_time;
t_32 RealTime=0;

/* the months of leap year */
static int month[12] = {
	0,
	DAY * (31),
	DAY * (31 + 29),
	DAY * (31 + 29 + 31),
	DAY * (31 + 29 + 31 + 30),
	DAY * (31 + 29 + 31 + 30 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30),
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -