diff --git a/ChangeLog b/ChangeLog
index 157ef922ffc..31f7eef2aac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -288,5 +288,6 @@
* Changes for use with SDCC compiler
* Added a simulated z80 target
* Fix deadlock errors when using stdio but with no buffering
+ * Add support for Pascal P-Code interpreter
diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html
index 8aed05749b8..f41834c4744 100644
--- a/Documentation/NuttX.html
+++ b/Documentation/NuttX.html
@@ -726,6 +726,7 @@ Other memory:
* Changes for use with SDCC compiler
* Added a simulated z80 target
* Fix deadlock errors when using stdio but with no buffering
+ * Add support for Pascal P-Code interpreter
diff --git a/Makefile b/Makefile
index bac6e739987..087a1c2bd3e 100644
--- a/Makefile
+++ b/Makefile
@@ -44,11 +44,16 @@ ARCH_SRC = $(ARCH_DIR)/src
ARCH_INC = $(ARCH_DIR)/include
BOARD_DIR = configs/$(CONFIG_ARCH_BOARD)
+# Add-on directories. These may or may not be in place in the
+# NuttX source tree (they must be specifically installed)
+
+PCODE_DIR := `if [ -r pcode/Makefile ]; then echo "pcode"; fi`
+
# FSDIRS depend on file descriptor support; NONFSDIRS do not
# (except for parts of FSDIRS). We will exclude FSDIRS
# from the build if file descriptor support is disabled
-NONFSDIRS = sched lib $(ARCH_SRC) mm examples/$(CONFIG_EXAMPLE)
+NONFSDIRS = sched lib $(ARCH_SRC) mm examples/$(CONFIG_EXAMPLE) $(PCODE_DIR)
FSDIRS = fs drivers
ifeq ($(CONFIG_NET),y)
@@ -96,6 +101,10 @@ else
LINKLIBS += fs/libfs$(LIBEXT) drivers/libdrivers$(LIBEXT)
endif
+ifneq ($(PCODE_DIR),)
+LINKLIBS += pcode/libpcode$(LIBEXT)
+endif
+
# This is the name of the final target
BIN = nuttx$(EXEEXT)
@@ -217,6 +226,9 @@ fs/libfs$(LIBEXT): context
drivers/libdrivers$(LIBEXT): context
$(MAKE) -C drivers TOPDIR=$(TOPDIR) libdrivers$(LIBEXT)
+pcode/libpcode$(LIBEXT): context
+ $(MAKE) -C pcode TOPDIR=$(TOPDIR) libpcode$(LIBEXT)
+
examples/$(CONFIG_EXAMPLE)/lib$(CONFIG_EXAMPLE)$(LIBEXT): context
$(MAKE) -C examples/$(CONFIG_EXAMPLE) TOPDIR=$(TOPDIR) lib$(CONFIG_EXAMPLE)$(LIBEXT)