plan 9 kernel history: overview | file list | diff list

1992/0603/pc/devvga.c (diff list | history)

1992/0529/sys/src/9/pc/devvga.c:6,111992/0603/sys/src/9/pc/devvga.c:6,13 (short | long | prev | next)
1992/0527    
#include	"io.h" 
#include	"../port/error.h" 
 
1992/0603    
#include	<libg.h> 
#include	<gnot.h> 
1992/0527    
#include	"devtab.h" 
1992/0528    
#include	"vga.h" 
1992/0527    
 
1992/0529/sys/src/9/pc/devvga.c:128,1431992/0603/sys/src/9/pc/devvga.c:130,144
1992/0527    
	case Qvgatype: 
		return readstr(offset, buf, n, vgacard); 
	case Qvgasize: 
		sprint(obuf, "%dx%d%x%d %s", 
			screeninfo.maxx, screeninfo.maxy, 
1992/0528    
			(screeninfo.packed == 0) ? 256 : 16, 
			(screeninfo.interlaced != 0) ? "interlaced" : "non-interlaced"); 
1992/0603    
		sprint(obuf, "%d %d", 
			gscreen.r.max.x, gscreen.r.max.y); 
1992/0527    
		return readstr(offset, buf, n, obuf); 
1992/0528    
	case Qvgaport: 
		if (offset + n >= 0x8000) 
			error(Ebadarg); 
		for (port=offset; port<offset+n; port++) 
1992/0603    
		for (port=offset; port<offset+n; port++) { 
1992/0528    
			*cp++ = inb(port); 
1992/0603    
		} 
1992/0528    
		return n; 
1992/0527    
	} 
} 
1992/0529/sys/src/9/pc/devvga.c:145,1531992/0603/sys/src/9/pc/devvga.c:146,153
1992/0527    
long 
1992/0528    
vgawrite(Chan *c, void *buf, long n, ulong offset) 
1992/0527    
{ 
1992/0528    
	uchar *cp = buf; 
	void (*outfunc)(int, int); 
	int port, i; 
1992/0603    
	char cbuf[20], *cp; 
	int port, i, maxx, maxy; 
1992/0528    
 
1992/0527    
	switch(c->qid.path&~CHDIR){ 
	case Qdir: 
1992/0529/sys/src/9/pc/devvga.c:163,1741992/0603/sys/src/9/pc/devvga.c:163,187
1992/0527    
	case Qvgasize: 
1992/0528    
		if(offset != 0) 
			error(Ebadarg); 
		error(Eperm); 
1992/0603    
		if(n >= sizeof cbuf) 
			n = sizeof cbuf - 1; 
		memmove(cbuf, buf, n); 
		cbuf[n-1] = 0; 
		cp = cbuf; 
		maxx = strtoul(cp, &cp, 0); 
		maxy = strtoul(cp, &cp, 0); 
		if (maxx == 0 || maxy == 0 || 
		    maxx > 1280 || maxy > 1024) 
			error(Ebadarg); 
		setscreen(maxx, maxy, 1); 
		return n; 
1992/0528    
	case Qvgaport: 
1992/0603    
		cp = buf; 
1992/0528    
		if (offset + n >= 0x8000) 
			error(Ebadarg); 
		for (port=offset; port<offset+n; port++) 
1992/0603    
		for (port=offset; port<offset+n; port++) { 
1992/0528    
			outb(port, *cp++); 
1992/0603    
		} 
1992/0528    
		return n; 
1992/0527    
	} 
} 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)