~kris/9p

9hist

e0a7598d1362df2a1ccef46f8b448e91ad3e3e4c — David du Colombier 34 years ago 783eedd
Plan 9 from Bell Labs 1992-08-16
3 files changed, 29 insertions(+), 24 deletions(-)

M port/devbit.c
M power/clock.c
M ss/screen.c
M port/devbit.c => port/devbit.c +27 -22
@@ 463,7 463,7 @@ bitread(Chan *c, void *va, long n, ulong offset)
{
	uchar *p, *q;
	long miny, maxy, t, x, y;
	ulong l, v, nw, ws, rv, gv, bv;
	ulong l, nw, ws, rv, gv, bv;
	int off, j;
	Fontchar *i;
	GBitmap *src;


@@ 525,12 525,13 @@ bitread(Chan *c, void *va, long n, ulong offset)
		p = va;
		for(y=miny; y<maxy; y++){
			q = (uchar*)gaddr(&gscreen, Pt(0, y));
			for(x=0; x<l; x++,p++,q++){
				v = *q;
				if(flipping)
					v = ~v;
				BPLONG(p, v);
			}
			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;
			n += l;
		}
		return n;


@@ 718,12 719,13 @@ bitread(Chan *c, void *va, long n, ulong offset)
		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;
			if(bit.rid == 0)
				for(x=0; x<l; x++,p++,q++)
					BPLONG(p, ~*q);
			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;
			else
				for(x=0; x<l; x++)
					*p++ = *q++;
				p += l;
			n += l;
		}
		if(off)


@@ 739,9 741,10 @@ bitread(Chan *c, void *va, long n, ulong offset)
long
bitwrite(Chan *c, void *va, long n, ulong offset)
{
	uchar *p, *q;
	uchar *p, *q, *oq;
	long m, v, miny, maxy, t, x, y;
	ulong l, nw, ws, rv, q0, q1;
	ulong *lp;
	int off, isoff, i, j, ok;
	Point pt, pt1, pt2;
	Rectangle rect;


@@ 1391,14 1394,16 @@ bitwrite(Chan *c, void *va, long n, ulong offset)
				isoff = 1;
			}
			for(y=miny; y<maxy; y++){
				q = (uchar*)gaddr(dst, Pt(dst->r.min.x, y));
				q += (dst->r.min.x&((sizeof(ulong))*ws-1))/ws;
				if(v == 0 && flipping)	/* flip bits */
					for(x=0; x<l; x++)
						*q++ = ~(*p++);
				else
					for(x=0; x<l; x++)
						*q++ = *p++;
				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;
				m -= l;
			}
			break;


@@ 1414,7 1419,7 @@ bitwrite(Chan *c, void *va, long n, ulong offset)
				error(Ebadblt);
			pt1.x = BGLONG(p+1);
			pt1.y = BGLONG(p+5);
/*			if(!eqpt(mouse.xy, pt1))*/{
			if(ptinrect(pt1, gscreen.r)){
				mouse.xy = pt1;
				mouse.track = 1;
				mouseclock();

M power/clock.c => power/clock.c +1 -1
@@ 114,7 114,7 @@ clock(Ureg *ur)
		}
		checkalarms();
		kproftimer(ur->pc);
		if(u && (ur->status&IEP) && u->p && u->p->state==Running){
		if(u && (ur->status&IEP) && u->p->state==Running){
			if(anyready()){
				if(u->p->hasspin)
					u->p->hasspin = 0;	/* just in case */

M ss/screen.c => ss/screen.c +1 -1
@@ 49,7 49,7 @@ struct screens
}screens[] = {
	{ "bwtwo", 1152, 900, 0, 0x400000 },
	{ "cgsix", 1152, 900, 3, 0x200000 },
	{ "cgthree", 1152, 900, 3, 0x200000 },
	{ "cgthree", 1152, 900, 3, 0x200000 },	/* PURE GUESS! */
	0
};