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

📄 ibm8514.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include "pci.h"#include "vga.h"/* * IBM 8514/A Graphics Coprocessor. */enum {	Subsys		= 0x42E8,	/* Subsystem Status (R), Control (W) */	Advfunc		= 0x4AE8,	/* Advanced Function Control */	CurY		= 0x82E8,	/* Current Y Position */	CurX		= 0x86E8,	/* Current X Position */	DestyAxstp	= 0x8AE8,	/* Destination Y Position/Axial Step Constant */	DestxDiastp	= 0x8EE8,	/* Destination X Position/Diagonal Step Constant */	ErrTerm		= 0x92E8,	/* Error Term */	MajAxisPcnt	= 0x96E8,	/* Major Axis Pixel Count */	GPstat		= 0x9AE8,	/* Graphics Processor Status (R) */	Cmd		= 0x9AE8,	/* Drawing Command (W) */	ShortStroke	= 0x9EE8,	/* Short Stroke Vector (W) */	BkgdColor	= 0xA2E8,	/* Background Colour */	FrgdColor	= 0xA6E8,	/* Foreground Colour */	WrtMask		= 0xAAE8,	/* Bitplane Write Mask */	RdMask		= 0xAEE8,	/* Bitplane Read Mask */	ColorCmp	= 0xB2E8,	/* Colour Compare */	BkgdMix		= 0xB6E8,	/* Background Mix */	FrgdMix		= 0xBAE8,	/* Foreground Mix */	Multifunc	= 0xBEE8,	/* Multifunction Control */	PixTrans	= 0xE2E8,	/* Pixel Data Transfer */};enum {					/* Multifunc Index */	MinAxisPcnt	= 0x0000,	/* Minor Axis Pixel Count */	ScissorsT	= 0x1000,	/* Top Scissors */	ScissorsL	= 0x2000,	/* Left Scissors */	ScissorsB	= 0x3000,	/* Bottom Scissors */	ScissorsR	= 0x4000,	/* Right Scissors */	MemCntl		= 0x5000,	/* Memory Control */	PixCntl		= 0xA000,	/* Pixel Control */	MultMisc	= 0xE000,	/* Miscellaneous Multifunction Control (S3) */	ReadSel		= 0xF000,	/* Read Register Select (S3) */};static voidload(Vga* vga, Ctlr*){	outportw(Pixmask, 0x00);	outportw(Subsys, 0x8000|0x1000);	outportw(Subsys, 0x4000|0x1000);	outportw(Pixmask, 0xFF);	outportw(FrgdMix, 0x47);	outportw(BkgdMix, 0x07);	outportw(Multifunc, ScissorsT|0x000);	outportw(Multifunc, ScissorsL|0x000);	outportw(Multifunc, ScissorsB|(vga->vmz/vga->mode->x-1));	outportw(Multifunc, ScissorsR|(vga->mode->x-1));	outportw(WrtMask, 0xFFFF);	outportw(Multifunc, PixCntl|0x0000);}static voiddump(Vga*, Ctlr* ctlr){	printitem(ctlr->name, "Advfunc");	Bprint(&stdout, "%9.4uX\n", inportw(Advfunc));	printitem(ctlr->name, "Subsys");	Bprint(&stdout, "%9.4uX\n", inportw(Subsys));}Ctlr ibm8514 = {	"ibm8514",			/* name */	0,				/* snarf */	0,				/* options */	0,				/* init */	load,				/* load */	dump,				/* dump */};

⌨️ 快捷键说明

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