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

1992/0816/port/devbit.c (diff list | history)

1992/0811/sys/src/9/port/devbit.c:463,4691992/0816/sys/src/9/port/devbit.c:463,469 (short | long | prev | next)
1990/0324    
{ 
1990/0613    
	uchar *p, *q; 
	long miny, maxy, t, x, y; 
1992/0630    
	ulong l, v, nw, ws, rv, gv, bv; 
1992/0816    
	ulong l, nw, ws, rv, gv, bv; 
1992/0627    
	int off, j; 
1990/06231    
	Fontchar *i; 
1990/0902    
	GBitmap *src; 
1992/0811/sys/src/9/port/devbit.c:525,5361992/0816/sys/src/9/port/devbit.c:525,537
1990/0709    
		p = va; 
		for(y=miny; y<maxy; y++){ 
1990/0912    
			q = (uchar*)gaddr(&gscreen, Pt(0, y)); 
1992/0630    
			for(x=0; x<l; x++,p++,q++){ 
				v = *q; 
				if(flipping) 
					v = ~v; 
				BPLONG(p, v); 
			} 
1992/0816    
			memmove(p, q, l); 
			if(flipping) 
				/* is screen, so must be word aligned */ 
				for(x=0; x<l; x+=sizeof(ulong),p+=sizeof(ulong)) 
					*(ulong*)p ^= ~0; 
			else 
				p += l; 
1990/0709    
			n += l; 
		} 
1992/0622    
		return n; 
1992/0811/sys/src/9/port/devbit.c:718,7291992/0816/sys/src/9/port/devbit.c:719,731
1992/0622    
		for(y=miny; y<maxy; y++){ 
			q = (uchar*)gaddr(src, Pt(src->r.min.x, y)); 
			q += (src->r.min.x&((sizeof(ulong))*ws-1))/ws; 
1992/0630    
			if(bit.rid == 0) 
				for(x=0; x<l; x++,p++,q++) 
					BPLONG(p, ~*q); 
1992/0816    
			memmove(p, q, l); 
			if(bit.rid==0 && flipping) 
				/* is screen, so must be word aligned */ 
				for(x=0; x<l; x+=sizeof(ulong),p+=sizeof(ulong)) 
					*(ulong*)p ^= ~0; 
1992/0622    
			else 
				for(x=0; x<l; x++) 
					*p++ = *q++; 
1992/0816    
				p += l; 
1992/0622    
			n += l; 
		} 
		if(off) 
1992/0811/sys/src/9/port/devbit.c:739,7471992/0816/sys/src/9/port/devbit.c:741,750
1990/0324    
long 
1991/0411    
bitwrite(Chan *c, void *va, long n, ulong offset) 
1990/0324    
{ 
1990/0329    
	uchar *p, *q; 
1992/0816    
	uchar *p, *q, *oq; 
1992/0711    
	long m, v, miny, maxy, t, x, y; 
1992/0628    
	ulong l, nw, ws, rv, q0, q1; 
1992/0816    
	ulong *lp; 
1992/0621    
	int off, isoff, i, j, ok; 
1990/06111    
	Point pt, pt1, pt2; 
1990/0324    
	Rectangle rect; 
1992/0811/sys/src/9/port/devbit.c:1391,14041992/0816/sys/src/9/port/devbit.c:1394,1409
1990/0721    
				isoff = 1; 
			} 
1990/0329    
			for(y=miny; y<maxy; y++){ 
1990/0912    
				q = (uchar*)gaddr(dst, Pt(dst->r.min.x, y)); 
1990/0911    
				q += (dst->r.min.x&((sizeof(ulong))*ws-1))/ws; 
1991/0706    
				if(v == 0 && flipping)	/* flip bits */ 
					for(x=0; x<l; x++) 
1992/0209    
						*q++ = ~(*p++); 
1991/0706    
				else 
					for(x=0; x<l; x++) 
1992/0209    
						*q++ = *p++; 
1992/0816    
				oq = (uchar*)gaddr(dst, Pt(dst->r.min.x, y)); 
				q = oq + (dst->r.min.x&((sizeof(ulong))*ws-1))/ws; 
				memmove(q, p, l); 
				if(v==0 && flipping){	/* flip bits */ 
					/* we know it's all word aligned */ 
					lp = (ulong*)oq; 
					for(x=0; x<l; x+=sizeof(ulong)) 
						*lp++ ^= ~0; 
				} 
				p += l; 
1990/0329    
				m -= l; 
			} 
			break; 
1992/0811/sys/src/9/port/devbit.c:1414,14201992/0816/sys/src/9/port/devbit.c:1419,1425
1990/11211    
				error(Ebadblt); 
1992/0630    
			pt1.x = BGLONG(p+1); 
			pt1.y = BGLONG(p+5); 
1991/0706    
/*			if(!eqpt(mouse.xy, pt1))*/{ 
1992/0816    
			if(ptinrect(pt1, gscreen.r)){ 
1991/0619    
				mouse.xy = pt1; 
				mouse.track = 1; 
				mouseclock(); 


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