diff --git a/secure/simul_efun/files.c b/secure/simul_efun/files.c
new file mode 100644
index 0000000..291bef6
--- /dev/null
+++ b/secure/simul_efun/files.c
@@ -0,0 +1,45 @@
+#include "/sys/files.h"
+
+public varargs string read_data(string file, int start, anzahl)
+{
+    if (!stringp(file))
+      raise_error("Bad arg 1 to read_data(): expected 'string'.\n");
+
+    // Wenn Pfad nicht absolut, ist das nen Fehler, daher wird das nicht
+    // korrigiert.
+
+    // wenn kein /data/ vorn steht, wird es vorangestellt.
+    if (strstr(file,"/"LIBDATADIR"/") != 0)
+    {
+      file = "/"LIBDATADIR + file;
+    }
+    // read_file() nicht direkt rufen, sondern vorher als closure ans
+    // aufrufende Objekt binden. Sonst laeuft die Rechtepruefung in
+    // valid_write() im Master unter der Annahme, dass die simul_efun.c mit
+    // ihrer root id was will.
+    return funcall(bind_lambda(#'efun::read_file, previous_object()),
+                   file, start, anzahl);
+}
+
+public varargs int write_data(string file, string str, int flags)
+{
+    if (!stringp(file))
+      raise_error("Bad arg 1 to write_data(): expected 'string'.\n");
+    if (!stringp(str))
+      raise_error("Bad arg 2 to write_data(): expected 'string'.\n");
+
+    // Wenn Pfad nicht absolut, ist das nen Fehler, daher wird das nicht
+    // korrigiert.
+
+    // wenn kein /data/ vorn steht, wird es vorangestellt.
+    if (strstr(file,"/"LIBDATADIR"/") != 0)
+    {
+      file = "/"LIBDATADIR + file;
+    }
+    // write_file() nicht direkt rufen, sondern vorher als closure ans
+    // aufrufende Objekt binden. Sonst laeuft die Rechtepruefung in
+    // valid_write() im Master unter der Annahme, dass die simul_efun.c mit
+    // ihrer root id was will.
+    return funcall(bind_lambda(#'efun::write_file, previous_object()),
+                   file, str, flags);
+}
diff --git a/secure/simul_efun/simul_efun.c b/secure/simul_efun/simul_efun.c
index 2a89fcf..e36d141 100644
--- a/secure/simul_efun/simul_efun.c
+++ b/secure/simul_efun/simul_efun.c
@@ -86,6 +86,7 @@
 #include __DIR__"shadow.c"
 #include __DIR__"livings.c"
 #include __DIR__"comm.c"
+#include __DIR__"files.c"
 
 #define TO        efun::this_object()
 #define TI        efun::this_interactive()
