diff --git a/RISCOS/Python/dynload_riscos.c b/RISCOS/Python/dynload_riscos.c
new file mode 100644
index 0000000..3c4b1d7
--- /dev/null
+++ b/RISCOS/Python/dynload_riscos.c
@@ -0,0 +1,63 @@
+/***********************************************************
+Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
+The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI or Corporation for National Research Initiatives or
+CNRI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+While CWI is the initial source for this software, a modified version
+is made available by the Corporation for National Research Initiatives
+(CNRI) at the Internet address ftp://ftp.python.org.
+
+STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/* This module provides the necessary stubs for when dynamic loading is
+   not present. */
+
+#include "Python.h"
+#include "importdl.h"
+
+#include "dlk.h"
+
+
+const struct filedescr _PyImport_DynLoadFiletab[] = {
+	{"/pyd", "rb", C_EXTENSION},
+	{0, 0}
+};
+
+void dynload_init_dummy()
+{
+}
+
+dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
+				    char *pathname, FILE *fp)
+{
+	int err;
+	char errstr[256];
+
+	err = dlk_load(pathname);
+	if (err)
+	{
+	  sprintf(errstr, "dlk failure %d", err);
+	  PyErr_SetString(PyExc_ImportError, errstr);
+	}
+	return dynload_init_dummy;
+}
diff --git a/RISCOS/Python/getcwd_riscos.c b/RISCOS/Python/getcwd_riscos.c
new file mode 100644
index 0000000..0239e6e
--- /dev/null
+++ b/RISCOS/Python/getcwd_riscos.c
@@ -0,0 +1,5 @@
+char *getcwd(char *buf, int size)
+{
+  buf[0] = '\0';
+  return buf;
+}
diff --git a/RISCOS/Python/getmtime_riscos.c b/RISCOS/Python/getmtime_riscos.c
new file mode 100644
index 0000000..cbd1669
--- /dev/null
+++ b/RISCOS/Python/getmtime_riscos.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+#define __swi
+#include "osfile.h"
+
+long PyOS_GetLastModificationTime(char *path, FILE *fp)
+{
+  int obj;
+  bits load, exec, ftype;
+
+  if (xosfile_read_stamped_no_path(path, &obj, &load, &exec, 0, 0, &ftype)) return -1;
+  if (obj != osfile_IS_FILE) return -1;
+  if (ftype == osfile_TYPE_UNTYPED) return -1;
+
+  load &= 0xFF;
+  load -= 51;
+  if (exec < 1855548004U) load--;
+  exec -= 1855548004U;
+  return exec/100+42949672*load+(95*load)/100;
+}
