diff --git a/RISCOS/Makefile b/RISCOS/Makefile
index bcfca81..97f10fb 100644
--- a/RISCOS/Makefile
+++ b/RISCOS/Makefile
@@ -7,14 +7,15 @@
 TCPIPLIB = $(LIBSROOT).TCPIPLibs
 DLKLIB = $(LIBSROOT).dlk
 ZLIB = $(LIBSROOT).zlib
+BZLIB = $(LIBSROOT).bzlib
 EXPAT = $(LIBSROOT).expat.lib
 
-OBJSCAN = objscan
-MAKEDLK = makedlk
+OBJSCAN = $(DLKLIB).objscan
+MAKEDLK = $(DLKLIB).makedlk
 
 # change from time to time (don't forget to change !Boot also)
-TARGET=Python22
-BUILD=25
+TARGET=Python23
+BUILD=40
 
 
 #
@@ -61,14 +62,16 @@
 	@.^.Lib.array/pyd\
 	@.^.Lib.audioop/pyd\
 	@.^.Lib.binascii/pyd\
+	@.^.Lib.bz2/pyd\
 	@.^.Lib.cmath/pyd\
 	@.^.Lib.cPickle/pyd\
 	@.^.Lib.cStringIO/pyd\
+	@.^.Lib.datetime/pyd\
 	@.^.Lib.errno/pyd\
 	@.^.Lib.imageop/pyd\
+	@.^.Lib.itertools/pyd\
 	@.^.Lib.math/pyd\
 	@.^.Lib.md5/pyd\
-	@.^.Lib.new/pyd\
 	@.^.Lib.operator/pyd\
 	@.^.Lib.parser/pyd\
 	@.^.Lib.pcre/pyd\
@@ -93,7 +96,10 @@
 	@.^.Lib.plat-riscos.swi/pyd\
 	@.^.Lib._sre/pyd\
 	@.^.Lib.xxsubtype/pyd\
-	@.^.Lib._symtable/pyd
+	@.^.Lib._symtable/pyd\
+	@.^.Lib._random/pyd\
+	@.^.Lib.zipimport/pyd\
+	@.^.Lib._csv/pyd
 
 
 OBJECTS_PYTHON =\
@@ -125,7 +131,6 @@
 	@.^.Python.o.ceval\
 	@.^.Python.o.bltinmodule\
 	@.^.Python.o.exceptions\
-	@.^.Python.o.hypot\
 	@.^.Python.o.codecs\
 	@.^.Python.o.symtable\
 	@.^.Python.o.future
@@ -145,16 +150,19 @@
 	@.^.Objects.o.sliceobject\
 	@.^.Objects.o.rangeobject\
 	@.^.Objects.o.object\
+	@.^.Objects.o.obmalloc\
 	@.^.Objects.o.moduleobject\
 	@.^.Objects.o.methodobject\
 	@.^.Objects.o.longobject\
 	@.^.Objects.o.listobject\
 	@.^.Objects.o.intobject\
+	@.^.Objects.o.boolobject\
 	@.^.Objects.o.iterobject\
 	@.^.Objects.o.funcobject\
 	@.^.Objects.o.frameobject\
 	@.^.Objects.o.floatobject\
 	@.^.Objects.o.fileobject\
+	@.^.Objects.o.enumobject\
 	@.^.Objects.o.dictobject\
 	@.^.Objects.o.complexobject\
 	@.^.Objects.o.cobject\
@@ -244,16 +252,25 @@
 @.^.Lib.cStringIO/pyd: @.^.Modules.o.cStringIO s.linktab
 	$(MAKEDLK) -d @.^.Lib.cStringIO/pyd -s s.linktab -o @.^.Modules.o.cStringIO -e initcStringIO
 
+@.^.Lib._csv/pyd: @.^.Modules.o._csv s.linktab
+	$(MAKEDLK) -d @.^.Lib._csv/pyd -s s.linktab -o @.^.Modules.o._csv -e init_csv
+
 @.^.Lib.plat-riscos.drawf/pyd: Modules.o.drawfmodule #s.linktab
 	$(LINK) -aof -o Modules.o.drawflink Modules.o.drawfmodule $(OSLIB).o.OSLIB32
 	$(MAKEDLK) -d @.^.Lib.plat-riscos.drawf/pyd -s s.linktab -o Modules.o.drawflink -e initdrawf
 
+@.^.Lib.datetime/pyd: @.^.Modules.o.datetimemodule s.linktab
+	$(MAKEDLK) -d @.^.Lib.datetime/pyd -s s.linktab -o @.^.Modules.o.datetimemodule -e initdatetime
+
 @.^.Lib.errno/pyd: @.^.Modules.o.errnomodule #s.linktab
 	$(MAKEDLK) -d @.^.Lib.errno/pyd -s s.linktab -o @.^.Modules.o.errnomodule -e initerrno
 
 @.^.Lib.imageop/pyd: @.^.Modules.o.imageop s.linktab
 	$(MAKEDLK) -d @.^.Lib.imageop/pyd -s s.linktab -o @.^.Modules.o.imageop -e initimageop
 
+@.^.Lib.itertools/pyd: @.^.Modules.o.itertoolsmodule s.linktab
+	$(MAKEDLK) -d @.^.Lib.itertools/pyd -s s.linktab -o @.^.Modules.o.itertoolsmodule -e inititertools
+
 @.^.Lib.math/pyd: @.^.Modules.o.mathmodule s.linktab
 	$(MAKEDLK) -d @.^.Lib.math/pyd -s s.linktab -o @.^.Modules.o.mathmodule -e initmath
 
@@ -324,6 +341,9 @@
 @.^.Lib.xxsubtype/pyd: @.^.Modules.o.xxsubtype s.linktab
 	$(MAKEDLK) -d @.^.Lib.xxsubtype/pyd -s s.linktab -o @.^.Modules.o.xxsubtype -e initxxsubtype
 
+@.^.Lib._random/pyd: @.^.Modules.o._randommodule s.linktab
+	$(MAKEDLK) -d @.^.Lib._random/pyd -s s.linktab -o @.^.Modules.o._randommodule -e init_random
+
 @.^.Lib._symtable/pyd: @.^.Modules.o.symtablemodule s.linktab
 	$(MAKEDLK) -d @.^.Lib._symtable/pyd -s s.linktab -o @.^.Modules.o.symtablemodule -e init_symtable
 
@@ -332,14 +352,14 @@
 # Dynamic Modules with other dependencies
 #
 @.^.Lib.select/pyd:  @.^.Modules.o.selectmodule s.linktab
-	$(LINK) -aof -o @.^.Modules.o.selectlink @.^.Modules.o.selectmodule $(TCPIPLIB).o.socklib
+	$(LINK) -aof -o @.^.Modules.o.selectlink @.^.Modules.o.selectmodule $(TCPIPLIB).o.socklib5
 	$(MAKEDLK) -d @.^.Lib.select/pyd -s s.linktab -o @.^.Modules.o.selectlink -e initselect
 
 @.^.Modules.o.selectmodule: @.^.Modules.c.selectmodule
 	$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.selectmodule
 
 @.^.Lib._socket/pyd: @.^.Modules.o.socketmodule s.linktab 
-	$(LINK) -aof -o @.^.Modules.o._socketlink @.^.Modules.o.socketmodule $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.socklib
+	$(LINK) -aof -o @.^.Modules.o._socketlink @.^.Modules.o.socketmodule $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.socklib5
 	$(MAKEDLK) -d @.^.Lib._socket/pyd -s s.linktab -o @.^.Modules.o._socketlink -e init_socket
 
 @.^.Modules.o.socketmodule: @.^.Modules.c.socketmodule
@@ -353,6 +373,12 @@
 @.^.Modules.o.zlibmodule: @.^.Modules.c.zlibmodule
 	$(CC) -I$(ZLIB) -o $@ @.^.Modules.c.zlibmodule
 
+@.^.Lib.bz2/pyd: @.^.Modules.o.bz2module s.linktab
+	$(LINK) -aof -o @.^.Modules.o.bz2link @.^.Modules.o.bz2module $(BZLIB).bzlib
+	$(MAKEDLK) -d @.^.Lib.bz2/pyd -s s.linktab -o @.^.Modules.o.bz2link -e initbz2
+
+@.^.Modules.o.bz2module: @.^.Modules.c.bz2module
+	$(CC) -I$(BZLIB) -o $@ @.^.Modules.c.bz2module
 
 @.^.Lib.time/pyd: @.^.Modules.o.timemodule s.linktab @.o.sleep
 	$(LINK) -aof -o @.^.Modules.o.timelink @.^.Modules.o.timemodule @.o.sleep $(OSLIB).o.OSLib32
@@ -370,6 +396,10 @@
 @.^.Modules.o.pyexpat: @.^.Modules.c.pyexpat
 	$(CCEXPAT) -o $@ @.^.Modules.c.pyexpat
 
+@.^.Lib.zipimport/pyd: @.^.Modules.o.zipimport s.linktab
+	$(LINK) -aof -o @.^.Modules.o.zipimportlink @.^.Modules.o.zipimport o.unixstuff $(OSLIB).o.OSLib32
+	$(MAKEDLK) -d @.^.Lib.zipimport/pyd -s s.linktab -o @.^.Modules.o.zipimportlink -e initzipimport
+
 
 ##########################################################################
 # dynamic linking symbol table
diff --git a/RISCOS/Modules/riscosmodule.c b/RISCOS/Modules/riscosmodule.c
index adcc128..55f189d 100644
--- a/RISCOS/Modules/riscosmodule.c
+++ b/RISCOS/Modules/riscosmodule.c
@@ -6,6 +6,8 @@
 #include "oslib/osfile.h"
 #include "unixstuff.h"
 
+#include <sys/fcntl.h>
+
 #include "Python.h"
 #include "structseq.h"
 
@@ -368,6 +370,184 @@
 	{NULL,		NULL}		 /* Sentinel */
 };
 
+static int
+ins(PyObject *module, char *symbol, long value)
+{
+	return PyModule_AddIntConstant(module, symbol, value);
+}
+
+
+static int
+all_ins(PyObject *d)
+{
+#ifdef F_OK
+        if (ins(d, "F_OK", (long)F_OK)) return -1;
+#endif
+#ifdef R_OK
+        if (ins(d, "R_OK", (long)R_OK)) return -1;
+#endif
+#ifdef W_OK
+        if (ins(d, "W_OK", (long)W_OK)) return -1;
+#endif
+#ifdef X_OK
+        if (ins(d, "X_OK", (long)X_OK)) return -1;
+#endif
+#ifdef NGROUPS_MAX
+        if (ins(d, "NGROUPS_MAX", (long)NGROUPS_MAX)) return -1;
+#endif
+#ifdef TMP_MAX
+        if (ins(d, "TMP_MAX", (long)TMP_MAX)) return -1;
+#endif
+#ifdef WCONTINUED
+        if (ins(d, "WCONTINUED", (long)WCONTINUED)) return -1;
+#endif
+#ifdef WNOHANG
+        if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
+#endif
+#ifdef WUNTRACED
+        if (ins(d, "WUNTRACED", (long)WUNTRACED)) return -1;
+#endif
+#ifdef O_RDONLY
+        if (ins(d, "O_RDONLY", (long)O_RDONLY)) return -1;
+#endif
+#ifdef O_WRONLY
+        if (ins(d, "O_WRONLY", (long)O_WRONLY)) return -1;
+#endif
+#ifdef O_RDWR
+        if (ins(d, "O_RDWR", (long)O_RDWR)) return -1;
+#endif
+#ifdef O_NDELAY
+        if (ins(d, "O_NDELAY", (long)O_NDELAY)) return -1;
+#endif
+#ifdef O_NONBLOCK
+        if (ins(d, "O_NONBLOCK", (long)O_NONBLOCK)) return -1;
+#endif
+#ifdef O_APPEND
+        if (ins(d, "O_APPEND", (long)O_APPEND)) return -1;
+#endif
+#ifdef O_DSYNC
+        if (ins(d, "O_DSYNC", (long)O_DSYNC)) return -1;
+#endif
+#ifdef O_RSYNC
+        if (ins(d, "O_RSYNC", (long)O_RSYNC)) return -1;
+#endif
+#ifdef O_SYNC
+        if (ins(d, "O_SYNC", (long)O_SYNC)) return -1;
+#endif
+#ifdef O_NOCTTY
+        if (ins(d, "O_NOCTTY", (long)O_NOCTTY)) return -1;
+#endif
+#ifdef O_CREAT
+        if (ins(d, "O_CREAT", (long)O_CREAT)) return -1;
+#endif
+#ifdef O_EXCL
+        if (ins(d, "O_EXCL", (long)O_EXCL)) return -1;
+#endif
+#ifdef O_TRUNC
+        if (ins(d, "O_TRUNC", (long)O_TRUNC)) return -1;
+#endif
+#ifdef O_BINARY
+        if (ins(d, "O_BINARY", (long)O_BINARY)) return -1;
+#endif
+#ifdef O_TEXT
+        if (ins(d, "O_TEXT", (long)O_TEXT)) return -1;
+#endif
+#ifdef O_LARGEFILE
+        if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
+#endif
+
+/* MS Windows */
+#ifdef O_NOINHERIT
+	/* Don't inherit in child processes. */
+        if (ins(d, "O_NOINHERIT", (long)O_NOINHERIT)) return -1;
+#endif
+#ifdef _O_SHORT_LIVED
+	/* Optimize for short life (keep in memory). */
+	/* MS forgot to define this one with a non-underscore form too. */
+        if (ins(d, "O_SHORT_LIVED", (long)_O_SHORT_LIVED)) return -1;
+#endif
+#ifdef O_TEMPORARY
+	/* Automatically delete when last handle is closed. */
+        if (ins(d, "O_TEMPORARY", (long)O_TEMPORARY)) return -1;
+#endif
+#ifdef O_RANDOM
+	/* Optimize for random access. */
+        if (ins(d, "O_RANDOM", (long)O_RANDOM)) return -1;
+#endif
+#ifdef O_SEQUENTIAL
+	/* Optimize for sequential access. */
+        if (ins(d, "O_SEQUENTIAL", (long)O_SEQUENTIAL)) return -1;
+#endif
+
+/* GNU extensions. */
+#ifdef O_DIRECT
+        /* Direct disk access. */
+        if (ins(d, "O_DIRECT", (long)O_DIRECT)) return -1;
+#endif
+#ifdef O_DIRECTORY
+        /* Must be a directory.	 */
+        if (ins(d, "O_DIRECTORY", (long)O_DIRECTORY)) return -1;
+#endif
+#ifdef O_NOFOLLOW
+        /* Do not follow links.	 */
+        if (ins(d, "O_NOFOLLOW", (long)O_NOFOLLOW)) return -1;
+#endif
+
+	/* These come from sysexits.h */
+#ifdef EX_OK
+	if (ins(d, "EX_OK", (long)EX_OK)) return -1;
+#endif /* EX_OK */
+#ifdef EX_USAGE
+	if (ins(d, "EX_USAGE", (long)EX_USAGE)) return -1;
+#endif /* EX_USAGE */
+#ifdef EX_DATAERR
+	if (ins(d, "EX_DATAERR", (long)EX_DATAERR)) return -1;
+#endif /* EX_DATAERR */
+#ifdef EX_NOINPUT
+	if (ins(d, "EX_NOINPUT", (long)EX_NOINPUT)) return -1;
+#endif /* EX_NOINPUT */
+#ifdef EX_NOUSER
+	if (ins(d, "EX_NOUSER", (long)EX_NOUSER)) return -1;
+#endif /* EX_NOUSER */
+#ifdef EX_NOHOST
+	if (ins(d, "EX_NOHOST", (long)EX_NOHOST)) return -1;
+#endif /* EX_NOHOST */
+#ifdef EX_UNAVAILABLE
+	if (ins(d, "EX_UNAVAILABLE", (long)EX_UNAVAILABLE)) return -1;
+#endif /* EX_UNAVAILABLE */
+#ifdef EX_SOFTWARE
+	if (ins(d, "EX_SOFTWARE", (long)EX_SOFTWARE)) return -1;
+#endif /* EX_SOFTWARE */
+#ifdef EX_OSERR
+	if (ins(d, "EX_OSERR", (long)EX_OSERR)) return -1;
+#endif /* EX_OSERR */
+#ifdef EX_OSFILE
+	if (ins(d, "EX_OSFILE", (long)EX_OSFILE)) return -1;
+#endif /* EX_OSFILE */
+#ifdef EX_CANTCREAT
+	if (ins(d, "EX_CANTCREAT", (long)EX_CANTCREAT)) return -1;
+#endif /* EX_CANTCREAT */
+#ifdef EX_IOERR
+	if (ins(d, "EX_IOERR", (long)EX_IOERR)) return -1;
+#endif /* EX_IOERR */
+#ifdef EX_TEMPFAIL
+	if (ins(d, "EX_TEMPFAIL", (long)EX_TEMPFAIL)) return -1;
+#endif /* EX_TEMPFAIL */
+#ifdef EX_PROTOCOL
+	if (ins(d, "EX_PROTOCOL", (long)EX_PROTOCOL)) return -1;
+#endif /* EX_PROTOCOL */
+#ifdef EX_NOPERM
+	if (ins(d, "EX_NOPERM", (long)EX_NOPERM)) return -1;
+#endif /* EX_NOPERM */
+#ifdef EX_CONFIG
+	if (ins(d, "EX_CONFIG", (long)EX_CONFIG)) return -1;
+#endif /* EX_CONFIG */
+#ifdef EX_NOTFOUND
+	if (ins(d, "EX_NOTFOUND", (long)EX_NOTFOUND)) return -1;
+#endif /* EX_NOTFOUND */
+
+        return 0;
+}
 
 
 void
@@ -376,10 +556,14 @@
 	PyObject *m, *d, *stat_m;
 
 	m = Py_InitModule("riscos", riscos_methods);
+
+	if (all_ins(m))
+		return;
+
 	d = PyModule_GetDict(m);
 
-	/* Initialize riscos.error exception */
-	PyDict_SetItemString(d, "error", PyExc_OSError);
+	Py_INCREF(PyExc_OSError);
+	PyModule_AddObject(m, "error", PyExc_OSError);
 
 	PyStructSequence_InitType(&StatResultType, &stat_result_desc);
 	PyDict_SetItemString(d, "stat_result", (PyObject*) &StatResultType);
diff --git a/RISCOS/Modules/swimodule.c b/RISCOS/Modules/swimodule.c
index ec02ae7..583fc57 100644
--- a/RISCOS/Modules/swimodule.c
+++ b/RISCOS/Modules/swimodule.c
@@ -11,6 +11,9 @@
    * Added swi.ArgError which is generated for errors when the user passes invalid arguments to
        functions etc
    * Added "errnum" attribute to swi.error, so one can now check to see what the error number was
+
+ 1.02  03 March 2002 Dietmar Schwertberger
+   * Added string, integer, integers, tuple and tuples
 */
 
 #include "oslib/os.h"
@@ -412,13 +415,155 @@
   fail:Py_DECREF(result);return 0;
 }
 
+static PyObject *swi_string(PyObject *self, PyObject *arg)
+{ char *s;
+  int l=-1;
+  if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&s, &l)) return NULL;
+  if (l==-1)
+    l = strlen(s);
+  return PyString_FromStringAndSize((char*)s, l);
+}
+
+static char swi_string__doc__[] =
+"string(address[, length]) -> string\n\
+Read a null terminated string from the given address.";
+
+
+static PyObject *swi_integer(PyObject *self, PyObject *arg)
+{ int *i;
+
+  if(!PyArg_ParseTuple(arg,"i",(unsigned int *)&i))
+    return NULL;
+  return PyInt_FromLong(*i);
+}
+
+static char swi_integer__doc__[] =
+"integer(address) -> string\n\
+Read an integer from the given address.";
+
+
+static PyObject *swi_integers(PyObject *self, PyObject *arg)
+{ int *i;
+  int c=-1;
+  PyObject *result, *result1;
+  
+  if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&i, &c)) return NULL;
+  result=PyList_New(0);
+  if (result) {
+    while ( c>0 || (c==-1 && *i) ) {
+      result1 = PyInt_FromLong((long)*i);
+      if (!result1) {
+        Py_DECREF(result);
+        return NULL;
+      }
+      if (PyList_Append(result, result1)!=0) {
+        Py_DECREF(result);
+        Py_DECREF(result1);
+        return NULL;
+      };
+      i++;
+      if (c!=-1)
+        c--;
+    }
+  }
+  return result;
+}
+
+static char swi_integers__doc__[] =
+"integers(address[, count]) -> string\n\
+Either read a null terminated list of integers or\n\
+a list of given length from the given address.";
+
+
+static PyObject *swi_tuples(PyObject *self, PyObject *arg)
+{
+  unsigned char *i;         /* points to current */
+  int c=-1, l=4, j, zero;         /* count, length, index */
+  PyObject *result, *result1, *result11;
+  
+  if(!PyArg_ParseTuple(arg,"i|ii",(unsigned int *)&i, &l, &c)) return NULL;
+  result=PyList_New(0);
+  if (result) {
+    while (c) {
+      result1 = PyTuple_New(l);
+      if (!result1) {
+        Py_DECREF(result);
+        return NULL;
+      }
+      zero = (c==-1); /* check for zeros? */
+      for(j=0;j<l;j++) {
+        if (zero && *i)
+          zero = 0;   /* non-zero found */
+        result11 = PyInt_FromLong((long)(*i));
+        if (!result11) {
+          Py_DECREF(result);
+          return NULL;
+        }
+        PyTuple_SetItem(result1, j, result11);
+        i++;
+      }
+      if (c==-1 && zero) {
+        Py_DECREF(result1);
+        c = 0;
+        break;
+      }
+      if (PyList_Append(result, result1)!=0) {
+        Py_DECREF(result1);
+        Py_DECREF(result);
+        return NULL;
+      }
+      if (c!=-1)
+        c--;
+    }
+  }
+  return result;
+}
+
+static char swi_tuples__doc__[] =
+"tuples(address[, length=4[, count]]) -> string\n\
+Either read a null terminated list of byte tuples or\n\
+a list of given length from the given address.";
+
+
+static PyObject *swi_tuple(PyObject *self, PyObject *arg)
+{
+  unsigned char *i;         /* points to current */
+  int c=1, j;
+  PyObject *result, *result1;
+  
+  if(!PyArg_ParseTuple(arg,"i|i",(unsigned int *)&i, &c)) return NULL;
+  result = PyTuple_New(c);
+  if (!result)
+    return NULL;
+  for(j=0;j<c;j++) {
+    result1 = PyInt_FromLong((long)(i[j]));
+    if (!result1) {
+      Py_DECREF(result);
+      return NULL;
+    }
+    PyTuple_SetItem(result, j, result1);
+  }
+  return result;
+}
+
+static char swi_tuple__doc__[] =
+"tuple(address[, count=1]]) -> tuple\n\
+Read count bytes from given address.";
+
+
 static PyMethodDef SwiMethods[]=
-{ { "swi",swi_swi,1},
-  { "block",PyBlock_New,1},
-  { "register",PyRegister,1},
-  { NULL,NULL}		 /* Sentinel */
+{ { "swi", swi_swi,1},
+  { "block", PyBlock_New,1},
+  { "register", PyRegister,1},
+  { "string", swi_string,METH_VARARGS, swi_string__doc__},
+  { "integer", swi_integer,METH_VARARGS, swi_integer__doc__},
+  { "integers", swi_integers,METH_VARARGS, swi_integers__doc__},
+  { "tuples", swi_tuples,METH_VARARGS, swi_tuples__doc__},
+  { "tuple", swi_tuple,METH_VARARGS, swi_tuple__doc__},
+  { NULL,NULL,0,NULL}		 /* Sentinel */
 };
 
+
 void initswi()
 { PyObject *m, *d;
   m = Py_InitModule("swi", SwiMethods);
diff --git a/RISCOS/pyconfig.h b/RISCOS/pyconfig.h
index 7a5a13c..028ed62 100644
--- a/RISCOS/pyconfig.h
+++ b/RISCOS/pyconfig.h
@@ -143,7 +143,7 @@
 #undef HAVE_LARGEFILE_SUPPORT
 
 /* Define this if you have the type long long */
-#undef HAVE_LONG_LONG
+#define HAVE_LONG_LONG
 
 /* Define if your compiler supports function prototypes */
 #define HAVE_PROTOTYPES 1
@@ -244,6 +244,9 @@
    shared libraries */ 
 #undef WITH_DL_DLD
 
+/* Define if you want to read files with foreign newlines. */
+#define WITH_UNIVERSAL_NEWLINES 1
+
 /* Define if you want documentation strings in extension modules */
 #define WITH_DOC_STRINGS 1
 
@@ -253,7 +256,7 @@
 #undef WITH_DYLD
 
 /* Define if you want to compile in Python-specific mallocs */
-#undef WITH_PYMALLOC
+#define WITH_PYMALLOC 1
 
 /* Define if you want to produce an OpenStep/Rhapsody framework
    (shared library plus accessory files). */
@@ -291,7 +294,7 @@
 #define SIZEOF_LONG 4
 
 /* The number of bytes in a long long.  */
-#undef SIZEOF_LONG_LONG
+#define SIZEOF_LONG_LONG 8
 
 /* The number of bytes in a short.  */
 #define SIZEOF_SHORT 2
@@ -396,7 +399,7 @@
 #undef HAVE_GETNAMEINFO
 
 /* Define if you have the getpeername function.  */
-#undef HAVE_GETPEERNAME
+#define HAVE_GETPEERNAME
 
 /* Define if you have the getpgid function.  */
 #undef HAVE_GETPGID
@@ -423,7 +426,7 @@
 #undef HAVE_HSTRERROR
 
 /* Define if you have the hypot function.  */
-#undef HAVE_HYPOT
+#define HAVE_HYPOT
 
 /* Define if you have the inet_pton function.  */
 #define HAVE_INET_PTON 1
diff --git a/RISCOS/sleep.c b/RISCOS/sleep.c
index 60c3768..c85eb86 100644
--- a/RISCOS/sleep.c
+++ b/RISCOS/sleep.c
@@ -7,11 +7,11 @@
 #include "Python.h"
 
 
-int sleep(double delay)
+int riscos_sleep(double delay)
 {
 	os_t starttime, endtime, time; /* monotonic times (centiseconds) */
 	int *pollword, ret;
-	bool claimed;
+	osbool claimed;
 
         /* calculate end time */
 	starttime = os_read_monotonic_time();
diff --git "a/RISCOS/support/\041Boot" "b/RISCOS/support/\041Boot"
index c2c6644..d3600b8 100644
--- "a/RISCOS/support/\041Boot"
+++ "b/RISCOS/support/\041Boot"
@@ -6,7 +6,17 @@
 <Obey$Dir>.AddToPath Python$Path PythonApp:Lib
 <Obey$Dir>.AddToPath Python$Path PythonApp:Lib.plat-riscos
 <Obey$Dir>.AddToPath Python$Path PythonApp:Lib.site-packages
-set Alias$@RunType_ae5 TaskWindow |"python %%*0|" -name |"Python|" -quit
+set Alias$@RunType_ae5 TaskWindow |"python %%*0|" -name |"Python|" -quit -wimpslot 1248k
 | -display
 set File$Type_ae5 Python
-set Alias$Python Run <Python$Dir>.python22 %*0
\ No newline at end of file
+
+| load modules for 32 bit compatibility
+RMEnsure UtilityModule 3.10 Error This application requires RISC OS 3.10 or later
+RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 RMLoad System:Modules.CallASWI
+RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 Error This application requires CallASWI 0.02 or later
+RMEnsure FPEmulator 4.03 RMLoad System:Modules.FPEmulator
+RMEnsure FPEmulator 4.03 Error This application requires FPEmulator 4.03 or later
+RMEnsure SharedCLibrary 5.17 RMLoad System:Modules.CLib
+RMEnsure SharedCLibrary 5.34 Error This application requires SharedCLibrary 5.34 or later
+
+set Alias$Python Run <Python$Dir>.python23 %*0
\ No newline at end of file
diff --git "a/RISCOS/support/\041Run" "b/RISCOS/support/\041Run"
index 6919579..2964e0a 100644
--- "a/RISCOS/support/\041Run"
+++ "b/RISCOS/support/\041Run"
@@ -1,2 +1,2 @@
 <Obey$Dir>.!Boot
-TaskWindow "python" -name "Python" -quit -display
\ No newline at end of file
+TaskWindow "python" -name "Python" -quit -display -wimpslot 1248k
\ No newline at end of file
