⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ics2494.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* * Integrated Circuit Systems, Inc. * ICS2494[A] Dual Video/Memory Clock Generator. */#include <u.h>#include <libc.h>#include <bio.h>#include "pci.h"#include "vga.h"typedef struct {	char*	name[2];	ulong	frequency[16];} Pattern;static Pattern patterns[] = {	{ "237", "304",	 50350000,  56644000,  65000000,  72000000,  80000000,  89800000,  63000000,  75000000,	 25175000,  28322000,  31500000,  36000000,  40000000,  44900000,  50000000,  65000000,	},	{ "324", 0,	 50350000,  56644000,  65000000,  72000000,  80000000,  89800000,  63000000,  75000000,	 83078000,  93463000, 100000000, 104000000, 108000000, 120000000, 130000000, 134700000,	},	{ 0,	},};static voidinit(Vga* vga, Ctlr* ctlr){	Pattern *pattern;	char *p;	int f, index, divisor, maxdivisor;	if(ctlr->flag & Finit)		return;	if(vga->f[0] == 0)		vga->f[0] = vga->mode->frequency;	if((p = strchr(ctlr->name, '-')) == 0)		error("%s: unknown pattern\n", ctlr->name);	p++;	for(pattern = patterns; pattern->name[0]; pattern++){		if(strcmp(pattern->name[0], p) == 0)			break;		if(pattern->name[1] && strcmp(pattern->name[1], p) == 0)			break;	}	if(pattern->name[0] == 0)		error("%s: unknown pattern\n", ctlr->name);	maxdivisor = 1;	if(vga->ctlr && (vga->ctlr->flag & Hclkdiv))		maxdivisor = 8;	for(index = 0; index < 16; index++){		for(divisor = 1; divisor <= maxdivisor; divisor <<= 1){			f = vga->f[0] - pattern->frequency[index]/divisor;			if(f < 0)				f = -f;			if(f < 1000000){				/*vga->f = pattern->frequency[index];*/				vga->d[0] = divisor;				vga->i[0] = index;				ctlr->flag |= Finit;				return;			}		}	}	error("%s: can't find frequency %ld\n", ctlr->name, vga->f[0]);}Ctlr ics2494 = {	"ics2494",			/* name */	0,				/* snarf */	0,				/* options */	init,				/* init */	0,				/* load */	0,				/* dump */};Ctlr ics2494a = {	"ics2494a",			/* name */	0,				/* snarf */	0,				/* options */	init,				/* init */	0,				/* load */	0,				/* dump */};

⌨️ 快捷键说明

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