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

📄 ncr.c

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

#define NCR_UNKNOWN  0x00
#define NCR_77C21    0x10
#define NCR_77C22    0x20
#define NCR_77C22E   0x40
#define NCR_77C22EP  0x80
#define NCR_77C32BLT 0x00

unsigned int ncr_chip, ncr_mem;
char * ncr_addname = "";

char ncr_test(void)
{
	unsigned int sub;

	if (testinx2(SEQ_I, 5, 5))
	{
		wrinx(SEQ_I, 5, 0);	//Disable extended registers
		if (! testinx(SEQ_I, 0x10))
		{
			wrinx(SEQ_I, 5, 1);	//Enable extended registers
			if (testinx(SEQ_I, 0x10))
			{
				sub = rdinx(SEQ_I ,8);
				switch(sub >> 4)
				{
					case 0: ncr_chip = NCR_77C22; break;
					case 1: ncr_chip = NCR_77C21; break;
					case 2: ncr_chip = ((sub & 15) < 8) ? NCR_77C22E : NCR_77C22EP; break;
					case 3: ncr_chip = NCR_77C32BLT; break;
					default: ncr_chip = NCR_UNKNOWN;
				}
//				sprintf(ncr_addname, " Rev. %d", rdinx(SEQ_I, 8) & 15);
//				ncr_mem = check_mem(64, ncr_setbank);
				return 1;
			}
		}
	}
	return 0;
}

unsigned int ncr_chiptype(void)
{
	return ncr_chip;
}

unsigned int ncr_memory(void)
{
	return ncr_mem;
}

char * ncr_get_name(void)
{
	switch(ncr_chip)
	{
		case NCR_77C21    : return "NCR 77c21";
		case NCR_77C22    : return "NCR 77c22";
		case NCR_77C22E   : return "NCR 77c22e";
		case NCR_77C22EP  : return "NCR 77c22e+";
		case NCR_77C32BLT : return "NCR 77c32BLT";
	}
	return "NCR Unknown";
}

void ncr_setbank(unsigned int bank)
{
	if (current_bank == bank)
                return;
        current_bank = bank;
	if (mem_mode <= _pl4)
		bank <<= 2;
	wrinx(SEQ_I, 0x18, bank << 2);
	wrinx(SEQ_I, 0x1C, bank << 2);
}

GraphicDriver ncr_driver =
{
	ncr_chiptype,
	ncr_get_name,
	ncr_memory,
	NULL,
	NULL,
	ncr_setbank
};

char Check_NCR(GraphicDriver * driver)
{
	*driver = ncr_driver;
	return (ncr_test());
}

⌨️ 快捷键说明

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