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

📄 smos.c

📁 nucleus_arm.rar
💻 C
字号:
#include <video/graphic.h>
#include <video/graph.h>
#include <support.h>

#define SM_UNKNOWN  0x000
#define SM_8104     0x010
#define SM_8106     0x020
#define SM_8107     0x040
#define SM_8108     0x080
#define SM_8110     0x100

unsigned int smos_chip, smos_mem;

char smos_test(void)
{
 	unsigned int x, y;
	char result;

	result = 0;
  	x = rdinx(0x3DE, 0xE);
	wrinx(0x3DE, 0xE, 0x55);	//disable
	if (! testinx(0x3DE, 0xD))
	{
		wrinx(0x3DE, 0xE, 0x1A);	//disable
		y = inportb(0x3DF);
		if (testinx(0x3DE, 0xD))
		{
			result = 1;
			switch(rdinx(0x3DE, 0xF) >> 3)
			{
				case 2: smos_chip = SM_8104; break;
				case 4: smos_chip = SM_8108; break;
				case 20: smos_chip = SM_8110; break;
			}
			smos_mem = 256;
		}
	}
	wrinx(0x3DE, 0xE, x);
	return result;
}

unsigned int smos_chiptype(void)
{
	return smos_chip;
}

unsigned int smos_memory(void)
{
	return smos_mem;
}

char * smos_get_name(void)
{
	switch(smos_chip)
	{
		case SM_8104 : return "S-MOS SPC8104";
		case SM_8106 : return "S-MOS SPC8107";
		case SM_8107 : return "S-MOS SPC8108";
		case SM_8108 : return "S-MOS SPC81092";
		case SM_8110 : return "S-MOS SPC8110";
	}
	return "S-MOS Unknown";
}

void smos_setbank(unsigned int bank)
{
        if (current_bank == bank)
                return;
        current_bank = bank;
	outportb(0x3CD, bank*17);
}

GraphicDriver smos_driver =
{
	smos_chiptype,
	smos_get_name,
	smos_memory,
	NULL,
	NULL,
	smos_setbank
};

char Check_SMOS(GraphicDriver * driver)
{
	*driver = smos_driver;
	return (smos_test());
}

⌨️ 快捷键说明

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