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

📄 readme.patching

📁 linux 下svgalib编的一个界面程序示例
💻 PATCHING
字号:
Patching svgalibContents0. Introduction1. Indenting2. Structure of the chipset drivers0. Introduction	Here is some info on writing patches and/or adding support for	further chipsets. The info on the chipset drivers is outdated, but	better than nothing and get you started. 	As a side note, other than a.out, ELF does not allow to have some	symbols global to svgalib which are not accessible to user	programs.	Because of that, if possible all the symbols and functions in your	program should be static. Those which can not be static should	have a name like: "__svgalib_*" to mark them as internals s.t.	people using them get what they deserve. Please do only add a new	function to the user interface if it is really unavoidable. Better	add some new parameters to an existing function. 	Adding a new function would definitly result in loosing a.out	compatibility thus removing the chance to use new cards and such	with old a.out binaries where the source is not available (doom	comes to mind). 	A new function should be really important to outweigh this draw	back. 1. Indenting	Due to some request (and I heard it b4) all the sources were now	automatically indentified. 	There were some requests for indent -gnu but it looks painful. I	opted for -kr (there were requests for it as well) as it is not	only nicer but also what is done in the linux-kernel and this is	certainly a program only usable for linux. 	I dunno if emacs is confused by -kr, but to be honest this is a	big all-in-one egg-giving-wool-milk-sow (as we say in german), and	you won't tell me that this several megs beast is unable to edit	this and I can't use -kr due to some restrictions of emacs. That	would be really ridiculous. If it is the case just make emacs	better. 	The OneModeEntry macro is eaten by indent (I would say it is an	indent bug, I might send a bug report to them), please ensure (if	at all possible) that your code can be passed through indent (use	the INDENT-OFF comments as shown in some sources for	OneModeEntry). 	You can use `make indent-gnu' (if you have a recent enough (I use	1.9.1) indent) to switch to your favorite style. But please ensure	your patches fit into this now declared as "official style"	sources. (Use `make indent' to reformat). 	Do not use it too often though as most indent's tend to add empty	lines at certain places in the source. 2. Structure of the chipset drivers	The chipset specific registers saving function (saveregs) is only	used directly to save the textmode registers at initialization. 	The chipset specific registers restoring function (setregs) is only	used directly to return to textmode, and when setting a VGA mode	after an SVGA mode.	The registers for each mode are stored like the ET4000 modes in	VGAlib 1.2, i.e. the extended registers at the end. The following	functions must be provided in a driver:	saveregs( unsigned char regs[] )		Saves the chipset-specific registers in regs, starting at		array index EXT (after the VGA registers).	setregs( unsigned char regs[] )		Sets the chipset-specific registers stored in regs from		index EXT.	modeavailable( int mode )		Returns nonzero if mode is available (should check video		memory).	getmodeinfo( vga_modeinfo *modeinfo )		Fills in chipset specific field of mode information		structure: maxlogicalwidth, startaddressrange (mask of		significant bits), and maxpixels (video memory divided by		the number of bytes per pixel). haveblit indicates whether		bitblt functions are available.		Note: providing extended info and an aperture with size		>= memory and setting bits 4 and 6 in flags will		automatically enable linear addressing support. 			setmode( int mode, int previous_mode )		Sets all registers for a mode; returns nonzero if mode not		available. __vga_setregs can be called to set the VGA		registers.	unlock()		Unlocks chipset-specific registers.	lock()		Lock (protect) chipset-specific registers. Currently not		called.	test()		Identify chipset; initialize (check memory and type) and		return nonzero if detected.	setpage( int page )		Set 64K page number to be mapped at 0xa0000.	init( int force, int par1, ... )		Initialize memory and type; called by test. If force is 1,		the chiptype or the amount of memory can be forced (this		is pretty useless).	The following functions provide for things like page flipping	and hardware scrolling virtual desktops.	setdisplaystart( int address )		Sets the display start address in video memory in pixels.	setlogicalwidth( int width )		Sets the logical scanline length in bytes. Usually a		multiple of 8.	The function getchipset() in vga.c must call the test routine for	the chipset. The chipsetfunctionslist must be have a pointer	to the chipsetfunctions table for the chipset (which is the only	global symbol in a chipset driver). Also, vga.h contains a magic	number for each chipset. Also driver_names[] in vga.c has to	contain a name for each driver at the correct position.

⌨️ 快捷键说明

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