diff --git a/src/filo-fs-nullfs.adb b/src/filo-fs-nullfs.adb
new file mode 100644
index 0000000..105e985
--- /dev/null
+++ b/src/filo-fs-nullfs.adb
@@ -0,0 +1,99 @@
+package body FILO.FS.NullFS is
+
+   Global_NullFS : NullFS_Type := (
+      State => Unmounted
+   );
+
+   procedure Mount
+      (Item : in out NullFS_Type;
+       Success : out Boolean)
+   is
+   begin
+      Success := True;
+      Item.State := Mounted;
+   end Mount;
+
+   procedure Open
+      (Item    : in out NullFS_Type;
+       Path    : in     String;
+       Success : out    Boolean)
+   is
+   begin
+      Success := True;
+      Item.State := File_Open;
+   end Open;
+
+   procedure Read
+      (Item    : in out NullFS_Type;
+       Buffer  : in out Buffer_Type;
+       Offset  : in     Natural;
+       Success : out    Boolean)
+   is
+   begin
+      Success := True;
+      null;
+   end Read;
+
+   procedure Close 
+      (Item : in out NullFS_Type;
+       Success : out Boolean)
+   is
+   begin
+      Success := True;
+      Item.State := Mounted;
+   end Close;
+
+   ---------------------------------------------------------------------A
+
+   function To_Int (Success : Boolean) return Interfaces.C.int is
+      (if Success then 1 else 0);
+
+   function C_Mount return Interfaces.C.int
+   is
+      Success : Boolean;
+   begin
+      Mount(Global_NullFS, Success);
+      return To_Int (Success);
+   end C_Mount;
+
+   function C_Read 
+      (buf : System.Address;
+       len : Interfaces.C.int)
+   return Interfaces.C.int
+      with SPARK_Mode => Off
+   is
+      use FILO.FS;
+      Buffer : Buffer_Type (0 .. Integer(len) - 1) with Address => buf;
+      Offset : Natural := Natural(File_Pos);
+      Success : Boolean;
+   begin
+      Read (Global_NullFS, Buffer, Offset, Success);
+      if Success then
+         Set_File_Pos (File_Length (Offset + Buffer'Length));
+      end if;
+      return To_Int (Success);
+      
+   end C_Read;
+
+   function C_Dir
+      (Path : Interfaces.C.Strings.chars_ptr)
+   return Interfaces.C.int
+      with SPARK_Mode => Off
+   is
+      use Interfaces.C.Strings;
+      Success : Boolean;
+   begin
+      Open (Global_NullFS, Value (Path), Success);
+      return To_Int (Success);
+   end C_Dir;
+
+   function C_Close return Interfaces.C.int
+      with SPARK_Mode => Off
+   is
+      Success : Boolean;
+   begin
+      Close (Global_NullFS, Success);
+      return To_Int (Success);
+   end C_Close;
+
+end FILO.FS.NullFS;
diff --git a/src/filo-fs-nullfs.ads b/src/filo-fs-nullfs.ads
new file mode 100644
index 0000000..5f0bd5b
--- /dev/null
+++ b/src/filo-fs-nullfs.ads
@@ -0,0 +1,66 @@
+with Interfaces.C;
+with Interfaces.C.Strings;
+with System;
+
+package FILO.FS.NullFS is
+   type NullFS_Type is private;
+
+
+   procedure Mount
+      (Item : in out NullFS_Type;
+       Success : out Boolean);
+
+   procedure Open
+      (Item    : in out NullFS_Type;
+       Path    : in     String;
+       Success : out    Boolean);
+
+   procedure Read
+      (Item    : in out NullFS_Type;
+       Buffer  : in out Buffer_Type;
+       Offset  : in     Natural;
+       Success : out    Boolean);
+
+   procedure Close 
+      (Item : in out NullFS_Type;
+       Success : out Boolean);
+
+   ---------------------------------------------------------------------
+
+   function C_Mount return Interfaces.C.int
+   with
+      Export,
+      Convention => C,
+      External_Name => "nullfs_mount";
+
+   function C_Read 
+      (buf : System.Address;
+       len : Interfaces.C.int)
+   return Interfaces.C.int
+   with
+      Export,
+      Convention => C,
+      External_Name => "nullfs_read";
+
+   function C_Dir
+      (Path : Interfaces.C.Strings.chars_ptr)
+   return Interfaces.C.int
+   with
+      Export,
+      Convention => C,
+      External_Name => "nullfs_dir";
+
+   function C_Close return Interfaces.C.int
+   with
+      Export,
+      Convention => C,
+      External_Name => "nullfs_close";
+
+private
+   type State_Type is (Unmounted, Mounted, File_Open);
+
+   type NullFS_Type is record
+      State : State_Type;
+   end record;
+   
+end FILO.FS.NullFS;
