diff --git a/src/sp65/error.c b/src/sp65/error.c
new file mode 100644
index 000000000..40e289de4
--- /dev/null
+++ b/src/sp65/error.c
@@ -0,0 +1,90 @@
+/*****************************************************************************/
+/*                                                                           */
+/*                                  error.c                                  */
+/*                                                                           */
+/*           Error handling for the sp65 sprite and bitmap utility           */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 1998-2012, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "error.h"
+
+
+
+/*****************************************************************************/
+/*     	      	    		     Code				     */
+/*****************************************************************************/
+
+
+
+void Warning (const char* Format, ...)
+/* Print a warning message */
+{
+    va_list ap;
+    va_start (ap, Format);
+    fprintf (stderr, "Warning: ");
+    vfprintf (stderr, Format, ap);
+    putc ('\n', stderr);
+    va_end (ap);
+}
+
+
+
+void Error (const char* Format, ...)
+/* Print an error message and die */
+{
+    va_list ap;
+    va_start (ap, Format);
+    fprintf (stderr, "Error: ");
+    vfprintf (stderr, Format, ap);
+    putc ('\n', stderr);
+    va_end (ap);
+    exit (EXIT_FAILURE);
+}
+
+
+
+void Internal (const char* Format, ...)
+/* Print an internal error message and die */
+{
+    va_list ap;
+    va_start (ap, Format);
+    fprintf (stderr, "Internal error: ");
+    vfprintf (stderr, Format, ap);
+    putc ('\n', stderr);
+    va_end (ap);
+    exit (EXIT_FAILURE);
+}
+
+
+
diff --git a/src/sp65/error.h b/src/sp65/error.h
new file mode 100644
index 000000000..5c2cfd637
--- /dev/null
+++ b/src/sp65/error.h
@@ -0,0 +1,68 @@
+/*****************************************************************************/
+/*                                                                           */
+/*                                  error.h                                  */
+/*                                                                           */
+/*           Error handling for the sp65 sprite and bitmap utility           */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 1998-2012, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
+
+
+
+#ifndef ERROR_H
+#define ERROR_H
+
+
+
+/* common */
+#include "attrib.h"
+
+
+
+/*****************************************************************************/
+/*     	      	    		     Code				     */
+/*****************************************************************************/
+
+
+
+void Warning (const char* Format, ...) attribute((format(printf,1,2)));
+/* Print a warning message */
+
+void Error (const char* Format, ...) attribute((noreturn, format(printf,1,2)));
+/* Print an error message and die */
+
+void Internal (const char* Format, ...) attribute((noreturn, format(printf,1,2)));
+/* Print an internal error message and die */
+
+
+
+/* End of error.h */
+
+#endif
+
+
+
diff --git a/src/sp65/main.c b/src/sp65/main.c
new file mode 100644
index 000000000..c3a672290
--- /dev/null
+++ b/src/sp65/main.c
@@ -0,0 +1,147 @@
+/*****************************************************************************/
+/*                                                                           */
+/*				    main.c				     */
+/*                                                                           */
+/*            Main program of the sp65 sprite and bitmap utility             */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 2012,      Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+/* common */
+#include "cmdline.h"
+#include "version.h"
+
+/* sp65 */
+#include "error.h"
+
+
+
+/*****************************************************************************/
+/*     	       	     	       	     Code			  	     */
+/*****************************************************************************/
+
+
+
+static void Usage (void)
+/* Print usage information and exit */
+{
+    fprintf (stderr,
+    	     "Usage: %s [options] file [options] [file]\n"
+    	     "Short options:\n"
+       	     "  -h\t\t\tHelp (this text)\n"
+       	     "  -V\t\t\tPrint the version number and exit\n"
+	     "\n"
+	     "Long options:\n"
+	     "  --help\t\tHelp (this text)\n"
+       	     "  --version\t\tPrint the version number and exit\n",
+    	     ProgName);
+}
+
+
+
+static void OptHelp (const char* Opt attribute ((unused)),
+		     const char* Arg attribute ((unused)))
+/* Print usage information and exit */
+{
+    Usage ();
+    exit (EXIT_SUCCESS);
+}
+
+
+
+static void OptVersion (const char* Opt attribute ((unused)),
+			const char* Arg attribute ((unused)))
+/* Print the assembler version */
+{
+    fprintf (stderr,
+       	     "%s V%s - (C) Copyright 2012, Ullrich von Bassewitz\n",
+       	     ProgName, GetVersionAsString ());
+}
+
+
+
+int main (int argc, char* argv [])
+/* sp65 main program */
+{
+    /* Program long options */
+    static const LongOpt OptTab[] = {
+	{ "--help",    		0,	OptHelp			},
+	{ "--version", 	       	0,	OptVersion		},
+    };
+
+    unsigned I;
+
+    /* Initialize the cmdline module */
+    InitCmdLine (&argc, &argv, "sp65");
+
+    /* Check the parameters */
+    I = 1;
+    while (I < ArgCount) {
+
+       	/* Get the argument */
+       	const char* Arg = ArgVec[I];
+
+       	/* Check for an option */
+       	if (Arg [0] == '-') {
+       	    switch (Arg [1]) {
+
+	 	case '-':
+	 	    LongOption (&I, OptTab, sizeof(OptTab)/sizeof(OptTab[0]));
+	 	    break;
+
+	 	case 'h':
+	 	    OptHelp (Arg, 0);
+	 	    break;
+
+       	        case 'V':
+    		    OptVersion (Arg, 0);
+       		    break;
+
+       	       	default:
+       	       	    UnknownOption (Arg);
+		    break;
+
+     	    }
+     	}
+
+	/* Next argument */
+	++I;
+    }
+
+    /* Success */
+    return EXIT_SUCCESS;
+}
+
+
+
diff --git a/src/sp65/make/gcc.mak b/src/sp65/make/gcc.mak
new file mode 100644
index 000000000..30fcbbc76
--- /dev/null
+++ b/src/sp65/make/gcc.mak
@@ -0,0 +1,62 @@
+#
+# Makefile for the sp65 sprite and bitmap utility utility
+#
+
+
+# ------------------------------------------------------------------------------
+
+# The executable to build
+EXE  	= sp65
+
+# Library dir
+COMMON	= ../common
+
+#
+CC      = gcc
+CFLAGS  = -O2 -g -Wall -W -std=c89
+override CFLAGS += -I$(COMMON)
+EBIND   = emxbind
+LDFLAGS =
+
+
+# -----------------------------------------------------------------------------
+# List of all object files
+
+OBJS = 	error.o		\
+	main.o
+
+LIBS = $(COMMON)/common.a
+
+# ------------------------------------------------------------------------------
+# Makefile targets
+
+# Main target - must be first
+.PHONY: all
+ifeq (.depend,$(wildcard .depend))
+all:	$(EXE)
+include .depend
+else
+all:	depend
+	@$(MAKE) -f make/gcc.mak all
+endif
+
+$(EXE):	$(OBJS) $(LIBS)
+	$(CC) $(LDFLAGS) $^ -o $@
+	@if [ $(OS2_SHELL) ] ;	then $(EBIND) $(EXE) ; fi
+
+clean:
+	$(RM) *~ core.* *.map
+
+zap:	clean
+	$(RM) *.o $(EXE) .depend
+
+# ------------------------------------------------------------------------------
+# Make the dependencies
+
+.PHONY: depend dep
+depend dep:	$(OBJS:.o=.c)
+	@echo "Creating dependency information"
+	$(CC) $(CFLAGS) -MM $^ > .depend
+
+
+
diff --git a/src/sp65/make/watcom.mak b/src/sp65/make/watcom.mak
new file mode 100644
index 000000000..3daa6345e
--- /dev/null
+++ b/src/sp65/make/watcom.mak
@@ -0,0 +1,98 @@
+#
+# sp65 makefile for the Watcom compiler (using GNU make)
+#
+
+# ------------------------------------------------------------------------------
+# Generic stuff
+
+# Environment variables for the watcom compiler
+export WATCOM  = c:\\watcom
+export INCLUDE = $(WATCOM)\\h
+
+# We will use the windows compiler under linux (define as empty for windows)
+export WINEDEBUG=fixme-all
+WINE = wine
+
+# Programs
+AR     	= $(WINE) wlib
+CC      = $(WINE) wcc386
+LD     	= $(WINE) wlink
+WSTRIP	= $(WINE) wstrip -q
+
+LNKCFG  = ld.tmp
+
+# Program arguments
+CFLAGS  = -d1 -obeilr -zp4 -5 -zq -w2 -i=..\\common
+
+# Target files
+EXE	= sp65.exe
+
+# Create NT programs by default
+ifndef TARGET
+TARGET = NT
+endif
+
+# --------------------- OS2 ---------------------
+ifeq ($(TARGET),OS2)
+SYSTEM  = os2v2
+CFLAGS  += -bt=$(TARGET)
+endif
+
+# -------------------- DOS4G --------------------
+ifeq ($(TARGET),DOS32)
+SYSTEM  = dos4g
+CFLAGS  += -bt=$(TARGET)
+endif
+
+# --------------------- NT ----------------------
+ifeq ($(TARGET),NT)
+SYSTEM  = nt
+CFLAGS  += -bt=$(TARGET)
+endif
+
+# ------------------------------------------------------------------------------
+# Implicit rules
+
+%.obj:  %.c
+	$(CC) $(CFLAGS) -fo=$@ $^
+
+
+# ------------------------------------------------------------------------------
+# All OBJ files
+
+OBJS =  error.obj	\
+	main.obj
+
+LIBS = ../common/common.lib
+
+
+# ------------------------------------------------------------------------------
+# Main targets
+
+all:	    	$(EXE)
+
+
+# ------------------------------------------------------------------------------
+# Other targets
+
+
+$(EXE): 	$(OBJS) $(LIBS)
+	@echo "DEBUG ALL" > $(LNKCFG)
+	@echo "OPTION QUIET" >> $(LNKCFG)
+	@echo "OPTION MAP" >> $(LNKCFG)
+	@echo "OPTION STACK=65536" >> $(LNKCFG)
+	@echo "NAME $@" >> $(LNKCFG)
+	@for i in $(OBJS); do echo "FILE $${i}"; done >> $(LNKCFG)
+	@for i in $(LIBS); do echo "LIBRARY $${i}"; done >> $(LNKCFG)
+	@$(LD) system $(SYSTEM) @$(LNKCFG)
+	@rm $(LNKCFG)
+
+clean:
+	@rm -f *~ core
+
+zap:	clean
+	@rm -f $(OBJS) $(EXE) $(EXE:.exe=.map)
+
+strip:
+	@-$(WSTRIP) $(EXE)
+