diff --git a/Modules/cstubs b/Modules/cstubs
index af41213..139ab96 100644
--- a/Modules/cstubs
+++ b/Modules/cstubs
@@ -561,6 +561,216 @@
 	return v;
 }
 
+% lrectwrite
+
+static object *
+gl_lrectwrite(self, args)
+	object *self;
+	object *args;
+{
+	short x1 ;
+	short y1 ;
+	short x2 ;
+	short y2 ;
+	string parray ;
+	object *s;
+	int pixcount;
+	if (!getishortarg(args, 5, 0, &x1))
+		return NULL;
+	if (!getishortarg(args, 5, 1, &y1))
+		return NULL;
+	if (!getishortarg(args, 5, 2, &x2))
+		return NULL;
+	if (!getishortarg(args, 5, 3, &y2))
+		return NULL;
+	if (!getistringarg(args, 5, 4, &parray))
+		return NULL;
+	if (!getiobjectarg(args, 5, 4, &s))
+		return NULL;
+	pixcount = (long)(x2+1-x1) * (long)(y2+1-y1);
+	if (!is_stringobject(s) || getstringsize(s) != pixcount*sizeof(long)) {
+		fprintf(stderr, "string arg to lrectwrite has wrong size\n");
+		err_badarg();
+		return NULL;
+	}
+	lrectwrite( x1 , y1 , x2 , y2 , (unsigned long *) parray );
+	INCREF(None);
+	return None;
+}
+
+% lrectread
+
+static object *
+gl_lrectread(self, args)
+	object *self;
+	object *args;
+{
+	short x1 ;
+	short y1 ;
+	short x2 ;
+	short y2 ;
+	object *parray;
+	int pixcount;
+	if (!getishortarg(args, 4, 0, &x1))
+		return NULL;
+	if (!getishortarg(args, 4, 1, &y1))
+		return NULL;
+	if (!getishortarg(args, 4, 2, &x2))
+		return NULL;
+	if (!getishortarg(args, 4, 3, &y2))
+		return NULL;
+	pixcount = (long)(x2+1-x1) * (long)(y2+1-y1);
+	parray = newsizedstringobject((char *)NULL, pixcount*sizeof(long));
+	if (parray == NULL)
+		return NULL; /* No memory */
+	lrectread(x1, y1, x2, y2, (unsigned long *) getstringvalue(parray));
+	return parray;
+}
+
+/* Desperately needed, here are tools to compress and decompress
+   the data manipulated by lrectread/lrectwrite.
+
+   gl.packrect(width, height, packfactor, bigdata) --> smalldata
+		makes 'bigdata' 4*(packfactor**2) times smaller by:
+		- turning it into B/W (a factor 4)
+		- replacing squares of size pacfactor by one
+		  representative
+
+   gl.unpackrect(width, height, packfactor, smalldata) --> bigdata
+		is the inverse; the numeric arguments must be *the same*.
+
+   Both work best if width and height are multiples of packfactor
+   (in fact unpackrect will leave garbage bytes).
+*/
+
+% packrect
+
+static object *
+gl_packrect(self, args)
+	object *self;
+	object *args;
+{
+	long width, height, packfactor;
+	char *s;
+	object *unpacked, *packed;
+	int pixcount, packedcount, x, y, r, g, b;
+	unsigned long pixel;
+	unsigned char *p;
+	unsigned long *parray;
+	if (!getilongarg(args, 4, 0, &width))
+		return NULL;
+	if (!getilongarg(args, 4, 1, &height))
+		return NULL;
+	if (!getilongarg(args, 4, 2, &packfactor))
+		return NULL;
+	if (!getistringarg(args, 4, 3, &s)) /* For type checking only */
+		return NULL;
+	if (!getiobjectarg(args, 4, 3, &unpacked))
+		return NULL;
+	if (width <= 0 || height <= 0 || packfactor <= 0) {
+		err_setstr(RuntimeError, "packrect args must be > 0");
+		return NULL;
+	}
+	pixcount = width*height;
+	packedcount = ((width+packfactor-1)/packfactor) *
+		((height+packfactor-1)/packfactor);
+	if (getstringsize(unpacked) != pixcount*sizeof(long)) {
+		fprintf(stderr, "string arg to packrect has wrong size\n");
+		err_badarg();
+		return NULL;
+	}
+	packed = newsizedstringobject((char *)NULL, packedcount);
+	if (packed == NULL)
+		return NULL;
+	parray = (unsigned long *) getstringvalue(unpacked);
+	p = getstringvalue(packed);
+	for (y = 0; y < height; y += packfactor, parray += packfactor*width) {
+		for (x = 0; x < width; x += packfactor) {
+			pixel = parray[x];
+			r = pixel & 0xff;
+			g = (pixel >> 8) & 0xff;
+			b = (pixel >> 16) & 0xff;
+			*p++ = (r+g+b) / 3;
+		}
+	}
+	return packed;
+}
+
+% unpackrect
+
+static unsigned long unpacktab[256];
+static int unpacktab_inited = 0;
+
+static object *
+gl_unpackrect(self, args)
+	object *self;
+	object *args;
+{
+	long width, height, packfactor;
+	char *s;
+	object *unpacked, *packed;
+	int pixcount, packedcount, y;
+	register unsigned char *p;
+	register unsigned long *parray;
+	if (!unpacktab_inited) {
+		register int white;
+		for (white = 256; --white >= 0; )
+			unpacktab[white] = white * 0x010101L;
+		unpacktab_inited++;
+	}
+	if (!getilongarg(args, 4, 0, &width))
+		return NULL;
+	if (!getilongarg(args, 4, 1, &height))
+		return NULL;
+	if (!getilongarg(args, 4, 2, &packfactor))
+		return NULL;
+	if (!getistringarg(args, 4, 3, &s)) /* For type checking only */
+		return NULL;
+	if (!getiobjectarg(args, 4, 3, &packed))
+		return NULL;
+	if (width <= 0 || height <= 0 || packfactor <= 0) {
+		err_setstr(RuntimeError, "packrect args must be > 0");
+		return NULL;
+	}
+	pixcount = width*height;
+	packedcount = ((width+packfactor-1)/packfactor) *
+		((height+packfactor-1)/packfactor);
+	if (getstringsize(packed) != packedcount) {
+		fprintf(stderr, "string arg to unpackrect has wrong size\n");
+		err_badarg();
+		return NULL;
+	}
+	unpacked = newsizedstringobject((char *)NULL, pixcount*sizeof(long));
+	if (unpacked == NULL)
+		return NULL;
+	parray = (unsigned long *) getstringvalue(unpacked);
+	p = (unsigned char *) getstringvalue(packed);
+	if (packfactor == 1 && width*height > 0) {
+		/* Just expand bytes to longs */
+		register int x = width * height;
+		do {
+			*parray++ = unpacktab[*p++];
+		} while (--x >= 0);
+	}
+	else {
+		register int y;
+		for (y = 0; y < height-packfactor+1;
+		     y += packfactor, parray += packfactor*width) {
+			register int x;
+			for (x = 0; x < width-packfactor+1; x += packfactor) {
+				register unsigned long pixel = unpacktab[*p++];
+				register int i;
+				for (i = packfactor*width; (i-=width) >= 0;) {
+					register int j;
+					for (j = packfactor; --j >= 0; )
+						parray[i+x+j] = pixel;
+				}
+			}
+		}
+	}
+	return unpacked;
+}
+
 /* End of manually written stubs */
 
 %%
@@ -828,7 +1038,7 @@
 void splf2i		long s long s[2*arg1] short s[arg1]
 void splfs		long s short s[3*arg1] short s[arg1]
 void splf2s		long s short s[2*arg1] short s[arg1]
-void defpattern		short s short s short s[arg2*arg2/16]
+###void defpattern		short s short s short s[arg2*arg2/16]
 #
 void rpatch		float s[16] float s[16] float s[16] float s[16]
 #
@@ -922,22 +1132,22 @@
 void gRGBcolor		short r short r short r
 void gRGBmask		short r short r short r
 void getscrmask	short r short r short r short r
-void gRGBcursor	short r short r short r short r short r short r short r short r long *
+###void gRGBcursor	short r short r short r short r short r short r short r short r
 void getmcolor		short s short r short r short r
 void mapw		long s short s short s float r float r float r float r float r float r
 void mapw2		long s short s short s float r float r
-void defrasterfont	short s short s short s Fontchar s[arg3] short s short s[4*arg5]
+###void defrasterfont	short s short s short s Fontchar s[arg3] short s short s[4*arg5]
 long qread		short r
 void getcursor		short r short r short r long r
 #
 #   For these we receive arrays of stuff
 #
-void getdev 		long s short s[arg1] short r[arg1]
+###void getdev 		long s short s[arg1] short r[arg1]
 #XXX not generated correctly yet
 #void getmatrix		float r[16]
-long readpixels		short s short r[retval]
-long readRGB		short s char r[retval] char r[retval] char r[retval]
-long blkqread		short s short r[arg1]
+###long readpixels		short s short r[retval]
+###long readRGB		short s char r[retval] char r[retval] char r[retval]
+###long blkqread		short s short r[arg1]
 #
 #   New 4D routines
 #
@@ -1000,10 +1210,11 @@
 void linesmooth		long s
 void lmcolor		long s
 void logicop		long s
-long lrectread	 	short s short s short s short s long r[retval]
-void lrectwrite		short s short s short s short s long s[(arg2-arg1+1)*(arg4-arg3+1)]
-long rectread	 	short s short s short s short s short r[retval]
-void rectwrite		short s short s short s short s short s[(arg2-arg1+1)*(arg4-arg3+1)]
+###long lrectread	 	short s short s short s short s long r[retval]
+###void lrectwrite		short s short s short s short s long s[(arg2-arg1+1)*(arg4-arg3+1)]
+### Now manual, with string last arg
+###long rectread	 	short s short s short s short s short r[retval]
+###void rectwrite		short s short s short s short s short s[(arg2-arg1+1)*(arg4-arg3+1)]
 void lsetdepth		long s long s
 void lshaderange	short s short s long s long s
 void n3f		float s[3]
@@ -1045,3 +1256,7 @@
 void v2d		double s[2]
 void v3d		double s[3]
 void v4d		double s[4]
+#
+# Why isn't this here?
+#
+void pixmode		long s long s
