diff --git a/src/os_mac.h b/src/os_mac.h
new file mode 100644
index 0000000..7991769
--- /dev/null
+++ b/src/os_mac.h
@@ -0,0 +1,411 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ */
+
+/* Before Including the MacOS specific files,
+ * lets set the OPAQUE_TOOLBOX_STRUCTS to 0 so we
+ * can access the internal structures.
+ * (Until fully Carbon compliant)
+ * TODO: Can we remove this? (Dany)
+ */
+#if 0
+# define OPAQUE_TOOLBOX_STRUCTS 0
+#endif
+
+/*
+ * Macintosh machine-dependent things.
+ */
+#include <QuickDraw.h>
+#include <ToolUtils.h>
+#include <LowMem.h>
+#include <Scrap.h>
+#include <Sound.h>
+#include <TextUtils.h>
+#include <Memory.h>
+#include <OSUtils.h>
+#include <Files.h>
+#ifdef FEAT_MBYTE
+# include <Script.h>
+#endif
+
+/*
+ * Unix interface
+ */
+#if defined(__MWERKS__) /* for CodeWarrior */
+# include <unistd.h>
+# include <utsname.h>
+# include <unix.h>
+#endif
+#if defined(__APPLE_CC__) /* for Project Builder and ... */
+# include <unistd.h>
+#endif
+/* Get stat.h or something similar. Comment: How come some OS get in in vim.h */
+#if defined(__MWERKS__)
+# include <stat.h>
+#endif
+#if defined(__APPLE_CC__)
+# include <sys/stat.h>
+#endif
+#if defined(__MRC__) || defined(__SC__) /* for Apple MPW Compilers */
+/* There's no stat.h for MPW? */
+# ifdef powerc
+#  pragma options align=power
+# endif
+  struct stat
+  {
+    UInt32 st_mtime;
+    UInt32 st_mode;
+    UInt32 st_size;
+  };
+# ifdef powerc
+#  pragma options align=reset
+# endif
+#endif
+#if defined(__APPLE_CC__) /* && defined(HAVE_CURSE) */
+/* The curses.h from MacOS X provides by default some BACKWARD compatibilty
+ * definition which can cause us problem later on. So we undefine a few of them. */
+# include <curses.h>
+# undef reg
+# undef ospeed
+/* OK defined to 0 in MacOS X 10.2 curses!  Remove it, we define it to be 1. */
+# undef OK
+#endif
+#include <signal.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#ifdef MACOS_X
+# include <dirent.h>
+#endif
+
+/*
+ * Incompatibility checks
+ */
+
+/* Got problem trying to use shared library in 68k */
+#if !defined(__POWERPC__) && defined(FEAT_PYTHON)
+# undef FEAT_PYTHON
+# warning Auto-disabling Python. Not yet supported in 68k.
+#endif
+
+#if !defined(__POWERPC__) && !defined(__ppc__)
+# if !__option(enumsalwaysint)
+#  error "You must compile with enums always int!"
+# endif
+# if defined(__MWERKS__) && !defined(__fourbyteints__)
+#  error "You must compile the project with 4-byte ints"
+/* MPW ints are always 4 byte long */
+# endif
+#endif
+
+/*
+ * MacOS specific #define
+ */
+
+/* This will go away when CMD_KEY fully tested */
+#define USE_CMD_KEY
+/* On MacOS X use the / not the : */
+/* TODO: Should file such as ~/.vimrc reside instead in
+ *       ~/Library/Vim or ~/Library/Preferences/org.vim.vim/ ? (Dany)
+ */
+/* When compiled under MacOS X (including CARBON version)
+ * we use the Unix File path style */
+#if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX
+# undef COLON_AS_PATHSEP
+# define USE_UNIXFILENAME
+#else
+# define COLON_AS_PATHSEP
+# define DONT_ADD_PATHSEP_TO_DIR
+#endif
+
+
+/*
+ * Generic Vim #define
+ */
+
+#define FEAT_SOURCE_FFS
+#define FEAT_SOURCE_FF_MAC
+
+#define USE_EXE_NAME		    /* to find  $VIM */
+#define CASE_INSENSITIVE_FILENAME   /* ignore case when comparing file names */
+#define SPACE_IN_FILENAME
+#define BREAKCHECK_SKIP	   32	    /* call mch_breakcheck() each time, it's
+				       quite fast. Did I forgot to update the comment */
+
+
+#undef  USE_FNAME_CASE	    /* So that :e os_Mac.c, :w, save back the file as os_mac.c */
+#define BINARY_FILE_IO
+#define EOL_DEFAULT EOL_MAC
+#ifndef MACOS_X_UNIX	    /* I hope that switching these two lines */
+# define USE_CR		    /* does what I want -- BNF */
+# define NO_CONSOLE		/* don't include console mode */
+#endif
+#define HAVE_AVAIL_MEM
+
+#ifndef HAVE_CONFIG_H
+/* #define SYNC_DUP_CLOSE	   sync() a file with dup() and close() */
+# define HAVE_STRING_H
+# define HAVE_STRCSPN
+# define HAVE_MEMSET
+# define USE_TMPNAM		/* use tmpnam() instead of mktemp() */
+# define HAVE_FCNTL_H
+# define HAVE_QSORT
+# define HAVE_ST_MODE		/* have stat.st_mode */
+
+# if defined(__DATE__) && defined(__TIME__)
+#  define HAVE_DATE_TIME
+# endif
+# define HAVE_STRFTIME
+#endif
+
+
+/*
+ * Names for the EXRC, HELP and temporary files.
+ * Some of these may have been defined in the makefile.
+ */
+
+#ifndef SYS_VIMRC_FILE
+# ifdef COLON_AS_PATHSEP
+#  define SYS_VIMRC_FILE "$VIM:vimrc"
+# else
+#  define SYS_VIMRC_FILE "$VIM/vimrc"
+# endif
+#endif
+#ifndef SYS_GVIMRC_FILE
+# ifdef COLON_AS_PATHSEP
+#  define SYS_GVIMRC_FILE "$VIM:gvimrc"
+# else
+#  define SYS_GVIMRC_FILE "$VIM/gvimrc"
+# endif
+#endif
+#ifndef SYS_MENU_FILE
+# ifdef COLON_AS_PATHSEP
+#  define SYS_MENU_FILE	"$VIMRUNTIME:menu.vim"
+# else
+#  define SYS_MENU_FILE	"$VIMRUNTIME/menu.vim"
+# endif
+#endif
+#ifndef SYS_OPTWIN_FILE
+# ifdef COLON_AS_PATHSEP
+#  define SYS_OPTWIN_FILE "$VIMRUNTIME:optwin.vim"
+# else
+#  define SYS_OPTWIN_FILE "$VIMRUNTIME/optwin.vim"
+# endif
+#endif
+#ifndef EVIM_FILE
+# ifdef COLON_AS_PATHSEP
+#  define EVIM_FILE	"$VIMRUNTIME:evim.vim"
+# else
+#  define EVIM_FILE	"$VIMRUNTIME/evim.vim"
+# endif
+#endif
+
+#ifdef FEAT_GUI
+# ifndef USR_GVIMRC_FILE
+#  ifdef COLON_AS_PATHSEP
+#   define USR_GVIMRC_FILE "$VIM:.gvimrc"
+#  else
+#   define USR_GVIMRC_FILE "~/.gvimrc"
+#  endif
+# endif
+# ifndef GVIMRC_FILE
+#  define GVIMRC_FILE	"_gvimrc"
+# endif
+#endif
+#ifndef USR_VIMRC_FILE
+# ifdef COLON_AS_PATHSEP
+#  define USR_VIMRC_FILE	"$VIM:.vimrc"
+# else
+#  define USR_VIMRC_FILE	"~/.vimrc"
+# endif
+#endif
+
+#ifndef USR_EXRC_FILE
+# ifdef COLON_AS_PATHSEP
+#  define USR_EXRC_FILE	"$VIM:.exrc"
+# else
+#  define USR_EXRC_FILE	"~/.exrc"
+# endif
+#endif
+
+#ifndef VIMRC_FILE
+# define VIMRC_FILE	"_vimrc"
+#endif
+
+#ifndef EXRC_FILE
+# define EXRC_FILE	"_exrc"
+#endif
+
+#ifndef DFLT_HELPFILE
+# ifdef COLON_AS_PATHSEP
+#  define DFLT_HELPFILE	"$VIMRUNTIME:doc:help.txt"
+# else
+#  define DFLT_HELPFILE	"$VIMRUNTIME/doc/help.txt"
+# endif
+#endif
+
+#ifndef FILETYPE_FILE
+# define FILETYPE_FILE	"filetype.vim"
+#endif
+#ifndef FTPLUGIN_FILE
+# define FTPLUGIN_FILE	"ftplugin.vim"
+#endif
+#ifndef INDENT_FILE
+# define INDENT_FILE	"indent.vim"
+#endif
+#ifndef FTOFF_FILE
+# define FTOFF_FILE	"ftoff.vim"
+#endif
+#ifndef FTPLUGOF_FILE
+# define FTPLUGOF_FILE	"ftplugof.vim"
+#endif
+#ifndef INDOFF_FILE
+# define INDOFF_FILE	"indoff.vim"
+#endif
+
+#ifndef SYNTAX_FNAME
+# ifdef COLON_AS_PATHSEP
+#  define SYNTAX_FNAME	"$VIMRUNTIME:syntax:%s.vim"
+# else
+#  define SYNTAX_FNAME	"$VIMRUNTIME/syntax/%s.vim"
+# endif
+#endif
+
+#ifdef FEAT_VIMINFO
+# ifndef VIMINFO_FILE
+#  ifdef COLON_AS_PATHSEP
+#   define VIMINFO_FILE	"$VIM:viminfo"
+#  else
+#   define VIMINFO_FILE	"~/.viminfo"
+#  endif
+# endif
+#endif /* FEAT_VIMINFO */
+
+#ifndef DFLT_BDIR
+# define DFLT_BDIR	"."	/* default for 'backupdir' */
+#endif
+
+#ifndef DFLT_DIR
+# define DFLT_DIR	"."	/* default for 'directory' */
+#endif
+
+#ifndef DFLT_VDIR
+# ifdef COLON_AS_PATHSEP
+#  define DFLT_VDIR	"$VIM:vimfiles:view"	/* default for 'viewdir' */
+# else
+#  define DFLT_VDIR	"$VIM/vimfiles/view"	/* default for 'viewdir' */
+# endif
+#endif
+
+#define DFLT_ERRORFILE		"errors.err"
+#ifdef COLON_AS_PATHSEP
+# define DFLT_RUNTIMEPATH	"$VIM:vimfiles,$VIMRUNTIME,$VIM:vimfiles:after"
+#else
+# define DFLT_RUNTIMEPATH	"~/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.vim/after"
+#endif
+
+/*
+ * Macintosh has plenty of memory, use large buffers
+ */
+#define CMDBUFFSIZE 1024	/* size of the command processing buffer */
+
+#if defined(MACOS_X_UNIX)
+# define MAXPATHL	1024
+# define BASENAMELEN	(MAXNAMLEN - 5)	/* length of base of filename */
+#else
+# define MAXPATHL	256		/* Limited by the Pascal Strings */
+# define BASENAMELEN	(32-5-1)	/* length of base of filename */
+#endif
+
+#ifndef DFLT_MAXMEM
+# define DFLT_MAXMEM	512	/* use up to  512 Kbyte for buffer */
+#endif
+
+#ifndef DFLT_MAXMEMTOT
+# define DFLT_MAXMEMTOT	2048	/* use up to 2048 Kbyte for Vim */
+#endif
+
+#define WILDCHAR_LIST "*?[{`$"
+
+/**************/
+#define mch_rename(src, dst) rename(src, dst)
+#define mch_remove(x) unlink((char *)(x))
+#ifndef mch_getenv
+# if defined(__MRC__) || defined(__SC__)
+#  define mch_getenv(name)  ((char_u *)getenv((char *)(name)))
+#  define mch_setenv(name, val, x) setenv((name), (val))
+# elif defined(__APPLE_CC__)
+#  define mch_getenv(name)  ((char_u *)getenv((char *)(name)))
+/*# define mch_setenv(name, val, x) setenv((name), (val)) */ /* Obsoleted by Dany on Oct 30, 2001 */
+#  define mch_setenv(name, val, x) setenv(name, val, x)
+# else
+  /* vim_getenv() is in pty.c */
+#  define USE_VIMPTY_GETENV
+#  define mch_getenv(x) vimpty_getenv(x)
+#  define mch_setenv(name, val, x) setenv(name, val, x)
+# endif
+#endif
+
+#ifndef HAVE_CONFIG_H
+# ifdef __APPLE_CC__
+/* Assuming compiling for MacOS X */
+/* Trying to take advantage of the prebinding */
+#  define HAVE_TGETENT
+#  define OSPEED_EXTERN
+#  define UP_BC_PC_EXTERN
+# endif
+#endif
+
+/* Some "prep work" definition to be able to compile the MacOS X
+ * version with os_unix.x instead of os_mac.c. Based on the result
+ * of ./configure for console MacOS X.
+ */
+
+#ifdef MACOS_X_UNIX
+# define SIGPROTOARG	(int)
+# define SIGDEFARG(s)	(s) int s;
+# define SIGDUMMYARG	0
+# undef  HAVE_AVAIL_MEM
+# ifndef HAVE_CONFIG_H
+#  define RETSIGTYPE void
+#  define SIGRETURN  return
+/*# define USE_SYSTEM */  /* Output ship do debugger :(, but ot compile */
+#  define HAVE_SYS_WAIT_H 1 /* Attempt */
+#  define HAVE_TERMIOS_H 1
+#  define SYS_SELECT_WITH_SYS_TIME 1
+#  define HAVE_SELECT 1
+#  define HAVE_SYS_SELECT_H 1
+#  define HAVE_PUTENV
+#  define HAVE_SETENV
+#  define HAVE_RENAME
+# endif
+# define mch_chdir(s) chdir(s)
+#endif
+
+#if defined(MACOS_X) && !defined(HAVE_CONFIG_H)
+# define HAVE_PUTENV
+#endif
+
+/* A Mac constant causing big problem to syntax highlighting */
+#define UNKNOWN_CREATOR '\?\?\?\?'
+
+/*
+ * for debugging
+ */
+#ifdef MACOS_X
+# ifdef _DEBUG
+#  define TRACE			Trace
+   void Trace(char *fmt, ...);
+# else
+#  define TRACE			1 ? (void)0 : printf
+# endif
+#endif
+
+#ifdef MACOS_CLASSIC
+#  define TRACE			1 ? (int)0 : printf
+#endif
