diff --git a/docs/README.DJ b/docs/README.DJ
index 8b4e6dc..e92d36c 100644
--- a/docs/README.DJ
+++ b/docs/README.DJ
@@ -1,5 +1,5 @@
-		     Mesa 4.0 DOS/DJGPP Port version 0.4
-		     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Mesa 4.0 DOS/DJGPP Port v1.0
+			~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
 
@@ -20,11 +20,13 @@
 Installation:
 ~~~~~~~~~~~~~
 
-Type "make -f Makefile.DJ" to compile the libraries. Long filename support is
-required during compilation. Also, you must have the DXE2 package (available
-on SimTel.Net, courtesy of Andrew Zabolotny) installed in order to build the
-dynamic modules; if you encounter errors, you can fetch a patched version from
-my web page.
+Type "make -f Makefile.DJ" to compile the libraries. Make accepts some options
+which are passed to compiler: the target cpu (CPU=..., default=`pentium') and
+X86 specific options (HAVE_X86=1, HAVE_MMX=1, HAVE_SSE=1, HAVE_3DNOW=1). The
+core library (libGL) requires LFN support during compilation. Also, you must
+have the DXE2 package (available on SimTel.Net, courtesy of Andrew Zabolotny)
+installed in order to build the dynamic modules; if you encounter errors, you
+can fetch a patched version from my web page.
 The demos are not built automagically (see Pitfalls below). To make them, use
 one of the following rules:
 	Static:
@@ -72,7 +74,7 @@
 libGLU:
 ~~~~~~~
 
-Mesa GLU sources are required. No comment!
+Mesa GLU sources are required.
 
 
 
@@ -118,20 +120,7 @@
 History:
 ~~~~~~~~
 
-v0.1	feb-2002	initial release
-v0.2	feb-2002	+ fast triangle rasterizers
-			+ enabled sw and 1.3 extensions
-			+ hardware acceleration: FreeBE/AF
-			+ single-buffer modes (15-, 16-, and 32-bit)
-			* video mode is set by CreateVisual, not MakeCurrent
-			* internal changes to support multi-buf (unfinished)
-			! fixed some alpha issues... (thanks, Brian)
-			+ glut has now an internal timer
-			* glut changed to support multi-window (unfinished)
-			! minor PC_HW corrections
-v0.3	mar-2002	- removed FreeBE/AF code
-			- removed single-buffer modes
-v0.4	mar-2002	+ dynamic module support
+v1.0	mar-2002	initial release
 
 
 
diff --git a/include/GL/dmesa.h b/include/GL/dmesa.h
index eaf0eca..ab91bac 100644
--- a/include/GL/dmesa.h
+++ b/include/GL/dmesa.h
@@ -23,7 +23,7 @@
  */
 
 /*
- * DOS/DJGPP device driver v0.2 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
@@ -62,6 +62,10 @@
 
 void DMesaDestroyContext (DMesaContext c);
 
+GLboolean DMesaViewport (DMesaBuffer b,
+                         GLint xpos, GLint ypos,
+                         GLint width, GLint height);
+
 GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b);
 
 void DMesaSwapBuffers (DMesaBuffer b);
diff --git a/src/glu/mesa/Makefile.DJ b/src/glu/mesa/Makefile.DJ
index 0232fe5..5b9ae7b 100644
--- a/src/glu/mesa/Makefile.DJ
+++ b/src/glu/mesa/Makefile.DJ
@@ -20,7 +20,7 @@
 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-# DOS/DJGPP glu makefile v0.4 for Mesa 4.0
+# DOS/DJGPP glu makefile v1.0 for Mesa 4.0
 #
 #  Copyright (C) 2002 - Borca Daniel
 #  Email : dborca@yahoo.com
@@ -31,7 +31,7 @@
 
 TOP = ..
 CC = gcc
-CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=pentium -ffast-math -O2
+CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2
 AR = ar
 ARFLAGS = ruv
 LIBDIR = $(TOP)/lib
@@ -73,10 +73,10 @@
 
 $(LIBDIR)/$(GLU_DXE) $(LIBDIR)/$(GLU_IMP): $(OBJECTS)
 ifeq ($(DXE2GEN),)
-	@echo Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN
-	@echo somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.
+	$(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN)
+	$(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.)
 else
-	dxe2gen -o $(LIBDIR)/$(GLU_DXE) -I $(LIBDIR)/$(GLU_IMP) $(OBJECTS) -D "Glu" -U
+	dxe2gen -o $(LIBDIR)/$(GLU_DXE) -I $(LIBDIR)/$(GLU_IMP) $(OBJECTS) -D "Mesa DOS GLU" -U
 endif
 
 clean:
diff --git a/src/glut/dos/Makefile.DJ b/src/glut/dos/Makefile.DJ
index 7a26eb2..02bc31b 100644
--- a/src/glut/dos/Makefile.DJ
+++ b/src/glut/dos/Makefile.DJ
@@ -20,7 +20,7 @@
 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-# DOS/DJGPP glut makefile v0.4 for Mesa 4.0
+# DOS/DJGPP glut makefile v1.0 for Mesa 4.0
 #
 #  Copyright (C) 2002 - Borca Daniel
 #  Email : dborca@yahoo.com
@@ -31,7 +31,7 @@
 
 TOP = ..
 CC = gcc
-CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=pentium -ffast-math -O2
+CFLAGS = -I$(TOP)/include -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2
 AR = ar
 ARFLAGS = ruv
 LIBDIR = $(TOP)/lib
@@ -59,23 +59,23 @@
 	teapot.c \
 	window.c
 
-PC_HW_OBJECTS = \
-	PC_HW/pc_hw.o \
-	PC_HW/pc_keyb.o \
-	PC_HW/pc_mouse.o \
-	PC_HW/pc_timer.o \
-	PC_HW/pc_irq.o
+PC_HW_SOURCES = \
+	PC_HW/pc_hw.c \
+	PC_HW/pc_keyb.c \
+	PC_HW/pc_mouse.c \
+	PC_HW/pc_timer.c \
+	PC_HW/pc_irq.S
 
-SOURCES = $(CORE_SOURCES)
+SOURCES = $(CORE_SOURCES) $(PC_HW_SOURCES)
 
-OBJECTS = $(SOURCES:.c=.o) $(PC_HW_OBJECTS)
+OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
 
+.c.o:
+	gcc -o $@ -c $(CFLAGS) $<
 .S.o:
 	gcc -o $@ -c $(CFLAGS) $<
 .s.o:
 	gcc -o $@ -c $(CFLAGS) $(<:.s=.S)
-.c.o:
-	gcc -o $@ -c $(CFLAGS) $<
 
 all: $(LIBDIR)/$(GLUT_LIB) $(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP)
 
@@ -84,10 +84,10 @@
 
 $(LIBDIR)/$(GLUT_DXE) $(LIBDIR)/$(GLUT_IMP): $(OBJECTS)
 ifeq ($(DXE2GEN),)
-	@echo Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN
-	@echo somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.
+	$(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN)
+	$(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.)
 else
-	dxe2gen -o $(LIBDIR)/$(GLUT_DXE) -I $(LIBDIR)/$(GLUT_IMP) $(OBJECTS) -D "DOS Glut" -U
+	dxe2gen -o $(LIBDIR)/$(GLUT_DXE) -I $(LIBDIR)/$(GLUT_IMP) $(OBJECTS) -D "Mesa DOS GLUT" -U
 endif
 
 clean:
@@ -102,7 +102,7 @@
 menu.o: menu.c ../include/GL/glut.h
 models.o: models.c ../include/GL/glut.h
 overlay.o: overlay.c ../include/GL/glut.h
-state.o: state.c ../include/GL/glut.h internal.h pc_hw/pc_hw.h
+state.o: state.c ../include/GL/glut.h internal.h PC_HW/pc_hw.h
 teapot.o: teapot.c ../include/GL/glut.h
 window.o: window.c ../include/GL/glut.h ../include/GL/dmesa.h internal.h \
   PC_HW/pc_hw.h
diff --git a/src/glut/dos/PC_HW/pc_hw.c b/src/glut/dos/PC_HW/pc_hw.c
index d6ffd56..09ab461 100644
--- a/src/glut/dos/PC_HW/pc_hw.c
+++ b/src/glut/dos/PC_HW/pc_hw.c
@@ -1,5 +1,5 @@
 /*
- * PC/HW routine collection v0.1 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_hw.h b/src/glut/dos/PC_HW/pc_hw.h
index 09fe805..47fcf78 100644
--- a/src/glut/dos/PC_HW/pc_hw.h
+++ b/src/glut/dos/PC_HW/pc_hw.h
@@ -1,5 +1,5 @@
 /*
- * PC/HW routine collection v0.1 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
@@ -189,12 +189,11 @@
 
 #define KEY_MAX               115
 
-extern volatile char pc_key[KEY_MAX];
-
 int pc_install_keyb (void);
 void pc_remove_keyb (void);
 int pc_keypressed (void);
 int pc_readkey (void);
+int pc_keydown (int code);
 
 /*
  * timer
@@ -205,13 +204,12 @@
 /*
  * mouse
  */
-extern volatile int pc_mouse_x, pc_mouse_y, pc_mouse_b;
-
 int pc_install_mouse (void);
 void pc_remove_mouse (void);
 MFUNC pc_install_mouse_handler (MFUNC handler);
 void pc_mouse_area (int x1, int y1, int x2, int y2);
 void pc_mouse_speed (int xspeed, int yspeed);
+int pc_query_mouse (int *x, int *y);
 void pc_show_mouse (void);
 void pc_scare_mouse (void);
 void pc_unscare_mouse (void);
diff --git a/src/glut/dos/PC_HW/pc_irq.S b/src/glut/dos/PC_HW/pc_irq.S
index 8f19f8e..1965460 100644
--- a/src/glut/dos/PC_HW/pc_irq.S
+++ b/src/glut/dos/PC_HW/pc_irq.S
@@ -1,5 +1,5 @@
 /*
- * PC/HW routine collection v0.2 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_keyb.c b/src/glut/dos/PC_HW/pc_keyb.c
index d3987d8..50ef94b 100644
--- a/src/glut/dos/PC_HW/pc_keyb.c
+++ b/src/glut/dos/PC_HW/pc_keyb.c
@@ -1,5 +1,5 @@
 /*
- * PC/HW routine collection v0.4 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_mouse.c b/src/glut/dos/PC_HW/pc_mouse.c
index aa1fbe4..72d3886 100644
--- a/src/glut/dos/PC_HW/pc_mouse.c
+++ b/src/glut/dos/PC_HW/pc_mouse.c
@@ -1,5 +1,5 @@
 /*
- * PC/HW routine collection v0.4 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/PC_HW/pc_timer.c b/src/glut/dos/PC_HW/pc_timer.c
index a8c58f6..ec348e2 100644
--- a/src/glut/dos/PC_HW/pc_timer.c
+++ b/src/glut/dos/PC_HW/pc_timer.c
@@ -1,5 +1,5 @@
 /*
- * PC/HW routine collection v0.1 for DOS/DJGPP
+ * PC/HW routine collection v1.0 for DOS/DJGPP
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/callback.c b/src/glut/dos/callback.c
index 0e49c3a..a9260cb 100644
--- a/src/glut/dos/callback.c
+++ b/src/glut/dos/callback.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/color.c b/src/glut/dos/color.c
index b755459..9a77545 100644
--- a/src/glut/dos/color.c
+++ b/src/glut/dos/color.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/font.c b/src/glut/dos/font.c
index c1303ff..1c31c15 100644
--- a/src/glut/dos/font.c
+++ b/src/glut/dos/font.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/globals.c b/src/glut/dos/globals.c
index 9bdfe8e..342cf3d 100644
--- a/src/glut/dos/globals.c
+++ b/src/glut/dos/globals.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/init.c b/src/glut/dos/init.c
index 9cda3a8..a6d7e83 100644
--- a/src/glut/dos/init.c
+++ b/src/glut/dos/init.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.4 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/internal.h b/src/glut/dos/internal.h
index 2822c2c..e23d485 100644
--- a/src/glut/dos/internal.h
+++ b/src/glut/dos/internal.h
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.2 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/menu.c b/src/glut/dos/menu.c
index 48354ed..eccc51d 100644
--- a/src/glut/dos/menu.c
+++ b/src/glut/dos/menu.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/overlay.c b/src/glut/dos/overlay.c
index b2c392f..ab4f561 100644
--- a/src/glut/dos/overlay.c
+++ b/src/glut/dos/overlay.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.1 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/state.c b/src/glut/dos/state.c
index 94ef0ca..b463f4a 100644
--- a/src/glut/dos/state.c
+++ b/src/glut/dos/state.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.2 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/glut/dos/window.c b/src/glut/dos/window.c
index c110715..f43533c 100644
--- a/src/glut/dos/window.c
+++ b/src/glut/dos/window.c
@@ -19,7 +19,7 @@
  */
 
 /*
- * DOS/DJGPP glut driver v0.2 for Mesa 4.0
+ * DOS/DJGPP glut driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
@@ -171,11 +171,24 @@
 
 void APIENTRY glutPositionWindow (int x, int y)
 {
+ if (DMesaViewport(buffer[window], x, y, g_width, g_height)) {
+    g_xpos = x;
+    g_ypos = y;
+ }
 }
 
 
 void APIENTRY glutReshapeWindow (int width, int height)
 {
+ if (DMesaViewport(buffer[window], g_xpos, g_ypos, width, height)) {
+    g_width = width;
+    g_height = height;
+    if (reshape_func) {
+       reshape_func(width, height);
+    } else {
+       glViewport(0, 0, width, height);
+    }
+ }
 }
 
 
diff --git a/src/mesa/drivers/dos/dmesa.c b/src/mesa/drivers/dos/dmesa.c
index 454b891..559204f 100644
--- a/src/mesa/drivers/dos/dmesa.c
+++ b/src/mesa/drivers/dos/dmesa.c
@@ -23,7 +23,7 @@
  */
 
 /*
- * DOS/DJGPP device driver v0.3 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
@@ -76,9 +76,10 @@
  * Add system-specific fields to it.
  */
 struct dmesa_buffer {
-   GLframebuffer *gl_buffer;    /* The depth, stencil, accum, etc buffers */
+   GLframebuffer gl_buffer;     /* The depth, stencil, accum, etc buffers */
    void *the_window;            /* your window handle, etc */
 
+   int bypp;                    /* bytes per pixel */
    int xpos, ypos;              /* position */
    int width, height;           /* size in pixels */
    int bwidth, len;             /* bytes in a line, then total */
@@ -540,12 +541,12 @@
  * If anything special has to been done when the buffer/window is
  * resized, do it now.
  */
-static void get_buffer_size (GLcontext *ctx, GLuint *width, GLuint *height)
+static void get_buffer_size (GLframebuffer *buffer, GLuint *width, GLuint *height)
 {
- DMesaContext c = (DMesaContext)ctx->DriverCtx;
+ DMesaBuffer b = (DMesaBuffer)buffer;
 
- *width  = c->Buffer->width;
- *height = c->Buffer->height;
+ *width  = b->width;
+ *height = b->height;
 }
 
 
@@ -554,7 +555,7 @@
 {
  switch (name) {
         case GL_RENDERER:
-             return (const GLubyte *)"DOS Mesa";
+             return (const GLubyte *)"Mesa DOS\0DJGPP port (c) Borca Daniel 31-mar-2002";
         default:
              return NULL;
  }
@@ -636,7 +637,7 @@
  ctx->Driver.Accum = _swrast_Accum;
  ctx->Driver.Bitmap = _swrast_Bitmap;
  ctx->Driver.Clear = clear;
- ctx->Driver.ResizeBuffersMESA = _swrast_alloc_buffers;
+ ctx->Driver.ResizeBuffers = _swrast_alloc_buffers;
  ctx->Driver.CopyPixels = _swrast_CopyPixels;
  ctx->Driver.DrawPixels = _swrast_DrawPixels;
  ctx->Driver.ReadPixels = _swrast_ReadPixels;
@@ -804,17 +805,17 @@
 
  if ((b=(DMesaBuffer)calloc(1, sizeof(struct dmesa_buffer)))!=NULL) {
 
-    b->gl_buffer = _mesa_create_framebuffer(visual->gl_visual,
-                                            visual->gl_visual->depthBits > 0,
-                                            visual->gl_visual->stencilBits > 0,
-                                            visual->gl_visual->accumRedBits > 0,
-                                            visual->gl_visual->alphaBits > 0);
+    _mesa_initialize_framebuffer(&b->gl_buffer,
+                                 visual->gl_visual,
+                                 visual->gl_visual->depthBits > 0,
+                                 visual->gl_visual->stencilBits > 0,
+                                 visual->gl_visual->accumRedBits > 0,
+                                 visual->gl_visual->alphaBits > 0);
     b->xpos = xpos;
     b->ypos = ypos;
     b->width = width;
-    b->bwidth = width * ((visual->depth+7)/8);
     b->height = height;
-    b->len = b->bwidth * b->height;
+    b->bypp = (visual->depth+7)/8;
  }
 
  return b;
@@ -825,7 +826,7 @@
 void DMesaDestroyBuffer (DMesaBuffer b)
 {
  free(b->the_window);
- _mesa_destroy_framebuffer(b->gl_buffer);
+ _mesa_free_framebuffer_data(&b->gl_buffer);
  free(b);
 }
 
@@ -871,23 +872,45 @@
 
 
 
+GLboolean DMesaViewport (DMesaBuffer b,
+                         GLint xpos, GLint ypos,
+                         GLint width, GLint height)
+{
+ void *new_window;
+
+ if ((new_window=vl_sync_buffer(b->the_window, xpos, ypos, width, height))==NULL) {
+    return GL_FALSE;
+ } else {
+    b->the_window = new_window;
+    b->xpos = xpos;
+    b->ypos = ypos;
+    b->width = width;
+    b->height = height;
+    b->bwidth = width * b->bypp;
+    b->len = b->bwidth * height;
+    return GL_TRUE;
+ }
+}
+
+
+
 /*
  * Make the specified context and buffer the current one.
  */
 GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b)
 {
  if (c&&b) {
-    if ((b->the_window=vl_sync_buffer(b->the_window, b->xpos, b->ypos, b->width, b->height))==NULL) {
+    if (!DMesaViewport(b, b->xpos, b->ypos, b->width, b->height)) {
        return GL_FALSE;
     }
 
     c->Buffer = b;
 
     dmesa_update_state(c->gl_ctx, 0);
-    _mesa_make_current(c->gl_ctx, b->gl_buffer);
+    _mesa_make_current(c->gl_ctx, &b->gl_buffer);
     if (c->gl_ctx->Viewport.Width==0) {
        /* initialize viewport to window size */
-       _mesa_Viewport(0, 0, c->Buffer->width, c->Buffer->height);
+       _mesa_Viewport(0, 0, b->width, b->height);
     }
  } else {
     /* Detach */
diff --git a/src/mesa/drivers/dos/dpmi.c b/src/mesa/drivers/dos/dpmi.c
index 26400ac..0cc0a89 100644
--- a/src/mesa/drivers/dos/dpmi.c
+++ b/src/mesa/drivers/dos/dpmi.c
@@ -23,7 +23,7 @@
  */
 
 /*
- * DOS/DJGPP device driver v0.3 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/mesa/drivers/dos/dpmiint.h b/src/mesa/drivers/dos/dpmiint.h
index 8494ee6..d0171fb 100644
--- a/src/mesa/drivers/dos/dpmiint.h
+++ b/src/mesa/drivers/dos/dpmiint.h
@@ -23,7 +23,7 @@
  */
 
 /*
- * DOS/DJGPP device driver v0.3 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/mesa/drivers/dos/video.c b/src/mesa/drivers/dos/video.c
index 9d50952..d31037d 100644
--- a/src/mesa/drivers/dos/video.c
+++ b/src/mesa/drivers/dos/video.c
@@ -23,7 +23,7 @@
  */
 
 /*
- * DOS/DJGPP device driver v0.4 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
@@ -416,14 +416,12 @@
  if (width&3) {
     return NULL;
  } else {
-    current_offset = video_scanlen * y + video_bypp * x;
     if ((newbuf=realloc(buffer, width*height*video_bypp))!=NULL) {
+       current_offset = video_scanlen * y + video_bypp * x;
        current_width = width;
        current_delta = video_scanlen - video_bypp * width;
-       return newbuf;
-    } else {
-       return NULL;
     }
+    return newbuf;
  }
 }
 
diff --git a/src/mesa/drivers/dos/video.h b/src/mesa/drivers/dos/video.h
index c806aa7..46a1e22 100644
--- a/src/mesa/drivers/dos/video.h
+++ b/src/mesa/drivers/dos/video.h
@@ -23,7 +23,7 @@
  */
 
 /*
- * DOS/DJGPP device driver v0.4 for Mesa 4.0
+ * DOS/DJGPP device driver v1.0 for Mesa 4.0
  *
  *  Copyright (C) 2002 - Borca Daniel
  *  Email : dborca@yahoo.com
diff --git a/src/mesa/main/Makefile.DJ b/src/mesa/main/Makefile.DJ
index fc540dc..afe95f0 100644
--- a/src/mesa/main/Makefile.DJ
+++ b/src/mesa/main/Makefile.DJ
@@ -20,7 +20,7 @@
 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-# DOS/DJGPP core makefile v0.4 for Mesa 4.0
+# DOS/DJGPP core makefile v1.0 for Mesa 4.0
 #
 #  Copyright (C) 2002 - Borca Daniel
 #  Email : dborca@yahoo.com
@@ -31,7 +31,7 @@
 
 TOP = ..
 CC = gcc
-CFLAGS = -I$(TOP)/include -I. -Wall -W -Wno-unused -mcpu=pentium -ffast-math -O2
+CFLAGS = -I$(TOP)/include -I. -Wall -W -Wno-unused -mcpu=$(CPU) -ffast-math -O2
 AR = ar
 ARFLAGS = ruv
 LIBDIR = $(TOP)/lib
@@ -165,14 +165,65 @@
 	tnl/t_vb_texmat.c \
 	tnl/t_vb_vertex.c
 
+X86_SOURCES = \
+	X86/x86.c \
+	X86/glapi_x86.S \
+	X86/common_x86.c \
+	X86/common_x86_asm.S \
+	X86/x86_xform2.S \
+	X86/x86_xform3.S \
+	X86/x86_xform4.S \
+	X86/x86_vertex.S \
+	X86/x86_cliptest.S
+
+MMX_SOURCES =
+
+SSE_SOURCES = \
+	X86/sse.c \
+	X86/sse_xform2.S \
+	X86/sse_xform3.S \
+	X86/sse_xform4.S \
+	X86/sse_vertex.S \
+	X86/sse_normal.S
+
+D3NOW_SOURCES = \
+	X86/3dnow.c \
+	X86/3dnow_xform2.S \
+	X86/3dnow_xform3.S \
+	X86/3dnow_xform4.S \
+	X86/3dnow_vertex.S
+
+ifdef HAVE_MMX
+X86_SOURCES += $(MMX_SOURCES)
+CFLAGS += -DUSE_MMX_ASM
+HAVE_X86 = 1
+endif
+ifdef HAVE_SSE
+X86_SOURCES += $(SSE_SOURCES)
+CFLAGS += -DUSE_SSE_ASM
+HAVE_X86 = 1
+endif
+ifdef HAVE_3DNOW
+X86_SOURCES += $(D3NOW_SOURCES)
+CFLAGS += -DUSE_3DNOW_ASM
+HAVE_X86 = 1
+endif
+ifdef HAVE_X86
+CFLAGS += -DUSE_X86_ASM
+else
+X86_SOURCES =
+endif
+
 DRIVER_SOURCES = DOS/dmesa.c DOS/video.c DOS/dpmi.c
 
-SOURCES = $(CORE_SOURCES) $(DRIVER_SOURCES)
+SOURCES = $(CORE_SOURCES) $(X86_SOURCES) $(DRIVER_SOURCES)
 
-OBJECTS = $(SOURCES:.c=.o)
+OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
 
 .c.o:
 	gcc -o $@ -c $(CFLAGS) $<
+.S.o:
+	gcc -o $@ -c $(CFLAGS) $<
 
 all: $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GL_DXE) $(LIBDIR)/$(GL_IMP)
 
@@ -181,21 +232,24 @@
 
 $(LIBDIR)/$(GL_DXE) $(LIBDIR)/$(GL_IMP): $(OBJECTS)
 ifeq ($(DXE2GEN),)
-	@echo Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN
-	@echo somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.
+	$(warning Missing DXE2GEN and/or DXE2.LD! You must have DXE2GEN)
+	$(warning somewhere in PATH, and DXE2.LD in DJGPP/LIB directory.)
 else
-	dxe2gen -o $(LIBDIR)/$(GL_DXE) -I $(LIBDIR)/$(GL_IMP) $(OBJECTS) -D "DOS Mesa" -U
+	dxe2gen -o $(LIBDIR)/$(GL_DXE) -I $(LIBDIR)/$(GL_IMP) $(OBJECTS) -D "Mesa DOS GL" -U
 endif
 
 clean:
 	-$(RM) *.o
+ifdef HAVE_X86
+	-$(RM) X86\*.o
+endif
 	-$(RM) DOS\*.o
 
 include depend
 
 DOS/dmesa.o: DOS/dmesa.c glheader.h ../include/GL/gl.h context.h glapi.h \
-  mtypes.h config.h glapitable.h glthread.h math/m_matrix.h dd.h \
-  ../include/GL/dmesa.h extensions.h macros.h matrix.h mmath.h texformat.h \
+  mtypes.h config.h glapitable.h glthread.h math/m_matrix.h dd.h macros.h \
+  ../include/GL/dmesa.h extensions.h matrix.h mmath.h texformat.h \
   texstore.h array_cache/acache.h swrast/s_context.h swrast/swrast.h \
   swrast/s_depth.h swrast/s_lines.h swrast/s_triangle.h swrast/s_trispan.h \
   swrast_setup/swrast_setup.h tnl/tnl.h tnl/t_context.h math/m_vector.h \
