diff --git a/Demo/WIN32-MSVC/FreeRTOSConfig.h b/Demo/WIN32-MSVC/FreeRTOSConfig.h
new file mode 100644
index 0000000000..01a8bd5644
--- /dev/null
+++ b/Demo/WIN32-MSVC/FreeRTOSConfig.h
@@ -0,0 +1,97 @@
+/*
+ FreeRTOS V6.1.0 - Copyright (C) 2010 Real Time Engineers Ltd.
+
+ ***************************************************************************
+ * *
+ * If you are: *
+ * *
+ * + New to FreeRTOS, *
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *
+ * + Looking for basic training, *
+ * + Wanting to improve your FreeRTOS skills and productivity *
+ * *
+ * then take a look at the FreeRTOS books - available as PDF or paperback *
+ * *
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
+ * http://www.FreeRTOS.org/Documentation *
+ * *
+ * A pdf reference manual is also available. Both are usually delivered *
+ * to your inbox within 20 minutes to two hours when purchased between 8am *
+ * and 8pm GMT (although please allow up to 24 hours in case of *
+ * exceptional circumstances). Thank you for your support! *
+ * *
+ ***************************************************************************
+
+ This file is part of the FreeRTOS distribution.
+
+ FreeRTOS is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License (version 2) as published by the
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
+ ***NOTE*** The exception to the GPL is included to allow you to distribute
+ a combined work that includes FreeRTOS without being obliged to provide the
+ source code for proprietary components outside of the FreeRTOS kernel.
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details. You should have received a copy of the GNU General Public
+ License and the FreeRTOS license exception along with FreeRTOS; if not it
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained
+ by writing to Richard Barry, contact details for whom are available on the
+ FreeRTOS WEB site.
+
+ 1 tab == 4 spaces!
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+
+#ifndef FREERTOS_CONFIG_H
+#define FREERTOS_CONFIG_H
+
+/*-----------------------------------------------------------
+ * Application specific definitions.
+ *
+ * These definitions should be adjusted for your particular hardware and
+ * application requirements.
+ *
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
+ *----------------------------------------------------------*/
+
+#define configUSE_PREEMPTION 0
+#define configUSE_IDLE_HOOK 1
+#define configUSE_TICK_HOOK 0
+#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 47923200 )
+#define configTICK_RATE_HZ ( ( portTickType ) 100 )
+#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
+#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 50 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */
+#define configTOTAL_HEAP_SIZE ( ( size_t ) 0 ) /* This parameter has no effect when heap_3.c is included in the project. */
+#define configMAX_TASK_NAME_LEN ( 16 )
+#define configUSE_TRACE_FACILITY 0
+#define configUSE_16_BIT_TICKS 0
+#define configIDLE_SHOULD_YIELD 1
+
+/* Co-routine definitions. */
+#define configUSE_CO_ROUTINES 0
+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
+
+/* Set the following definitions to 1 to include the API function, or zero
+to exclude the API function. */
+
+#define INCLUDE_vTaskPrioritySet 1
+#define INCLUDE_uxTaskPriorityGet 1
+#define INCLUDE_vTaskDelete 0
+#define INCLUDE_vTaskCleanUpResources 0
+#define INCLUDE_vTaskSuspend 1
+#define INCLUDE_vTaskDelayUntil 1
+#define INCLUDE_vTaskDelay 1
+
+
+#endif /* FREERTOS_CONFIG_H */
diff --git a/Demo/WIN32-MSVC/WIN32.sln b/Demo/WIN32-MSVC/WIN32.sln
new file mode 100644
index 0000000000..3f819af17f
--- /dev/null
+++ b/Demo/WIN32-MSVC/WIN32.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WIN32", "WIN32.vcxproj", "{C686325E-3261-42F7-AEB1-DDE5280E1CEB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.Build.0 = Debug|Win32
+ {C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.ActiveCfg = Release|Win32
+ {C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Demo/WIN32-MSVC/WIN32.suo b/Demo/WIN32-MSVC/WIN32.suo
new file mode 100644
index 0000000000..39aba2fe49
Binary files /dev/null and b/Demo/WIN32-MSVC/WIN32.suo differ
diff --git a/Demo/WIN32-MSVC/WIN32.vcxproj b/Demo/WIN32-MSVC/WIN32.vcxproj
new file mode 100644
index 0000000000..7894559675
--- /dev/null
+++ b/Demo/WIN32-MSVC/WIN32.vcxproj
@@ -0,0 +1,166 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {C686325E-3261-42F7-AEB1-DDE5280E1CEB}
+ RTOSDemo
+
+
+
+ Application
+ false
+ MultiByte
+
+
+ Application
+ false
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ .\Debug\
+ .\Debug\
+ true
+ .\Release\
+ .\Release\
+ false
+
+
+
+ .\Debug/WIN32.tlb
+
+
+
+
+ Disabled
+ ..\..\Source\include;..\..\Source\portable\MSVC-MingW;..\Common\Include;.;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0400;WINVER=0x400;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebug
+ .\Debug/WIN32.pch
+ .\Debug/
+ .\Debug/
+ .\Debug/
+ Level4
+ true
+ EditAndContinue
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0c09
+
+
+ .\Debug/RTOSDemo.exe
+ true
+ true
+ .\Debug/WIN32.pdb
+ Console
+ MachineX86
+
+
+ true
+ .\Debug/WIN32.bsc
+
+
+
+
+ .\Release/WIN32.tlb
+
+
+
+
+ MaxSpeed
+ OnlyExplicitInline
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ MultiThreaded
+ true
+ .\Release/WIN32.pch
+ .\Release/
+ .\Release/
+ .\Release/
+ Level3
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0c09
+
+
+ .\Release/WIN32.exe
+ true
+ .\Release/WIN32.pdb
+ Console
+ MachineX86
+
+
+ true
+ .\Release/WIN32.bsc
+
+
+
+
+
+ %(AdditionalIncludeDirectories)
+ %(PreprocessorDefinitions)
+ %(PreprocessorDefinitions)
+
+
+ %(AdditionalIncludeDirectories)
+ %(PreprocessorDefinitions)
+ %(PreprocessorDefinitions)
+
+
+ %(AdditionalIncludeDirectories)
+ %(PreprocessorDefinitions)
+ %(PreprocessorDefinitions)
+
+
+ %(AdditionalIncludeDirectories)
+ %(PreprocessorDefinitions)
+ %(PreprocessorDefinitions)
+
+
+ %(AdditionalIncludeDirectories)
+ %(PreprocessorDefinitions)
+ %(PreprocessorDefinitions)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Demo/WIN32-MSVC/WIN32.vcxproj.filters b/Demo/WIN32-MSVC/WIN32.vcxproj.filters
new file mode 100644
index 0000000000..99f5959de7
--- /dev/null
+++ b/Demo/WIN32-MSVC/WIN32.vcxproj.filters
@@ -0,0 +1,79 @@
+
+
+
+
+ {19ff1a34-36de-4c48-9d10-3fb1fa0d1fa4}
+ h;hpp;hxx;hm;inl
+
+
+ {38712199-cebf-4124-bf15-398f7c3419ea}
+ ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
+
+
+ {af3445a1-4908-4170-89ed-39345d90d30c}
+
+
+ {f32be356-4763-4cae-9020-974a2638cb08}
+ *.c
+
+
+ {a60060e3-3949-4f60-b025-cb84164ae9ed}
+
+
+ {34567deb-d5ab-4a56-8640-0aaec609521a}
+ cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
+
+
+
+
+ Demo App Source
+
+
+ FreeRTOS Source\Source
+
+
+ FreeRTOS Source\Source
+
+
+ FreeRTOS Source\Source
+
+
+ FreeRTOS Source\Source
+
+
+ FreeRTOS Source\Source
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ FreeRTOS Source\Include
+
+
+ FreeRTOS Source\Include
+
+
+ FreeRTOS Source\Include
+
+
+ FreeRTOS Source\Include
+
+
+ FreeRTOS Source\Include
+
+
+ FreeRTOS Source\Include
+
+
+ FreeRTOS Source\Include
+
+
+ FreeRTOS Source\Include
+
+
+
\ No newline at end of file
diff --git a/Demo/WIN32-MSVC/main.c b/Demo/WIN32-MSVC/main.c
new file mode 100644
index 0000000000..b5b7d497bf
--- /dev/null
+++ b/Demo/WIN32-MSVC/main.c
@@ -0,0 +1,196 @@
+/*
+ FreeRTOS V6.1.0 - Copyright (C) 2010 Real Time Engineers Ltd.
+
+ ***************************************************************************
+ * *
+ * If you are: *
+ * *
+ * + New to FreeRTOS, *
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *
+ * + Looking for basic training, *
+ * + Wanting to improve your FreeRTOS skills and productivity *
+ * *
+ * then take a look at the FreeRTOS books - available as PDF or paperback *
+ * *
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
+ * http://www.FreeRTOS.org/Documentation *
+ * *
+ * A pdf reference manual is also available. Both are usually delivered *
+ * to your inbox within 20 minutes to two hours when purchased between 8am *
+ * and 8pm GMT (although please allow up to 24 hours in case of *
+ * exceptional circumstances). Thank you for your support! *
+ * *
+ ***************************************************************************
+
+ This file is part of the FreeRTOS distribution.
+
+ FreeRTOS is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License (version 2) as published by the
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
+ ***NOTE*** The exception to the GPL is included to allow you to distribute
+ a combined work that includes FreeRTOS without being obliged to provide the
+ source code for proprietary components outside of the FreeRTOS kernel.
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details. You should have received a copy of the GNU General Public
+ License and the FreeRTOS license exception along with FreeRTOS; if not it
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained
+ by writing to Richard Barry, contact details for whom are available on the
+ FreeRTOS WEB site.
+
+ 1 tab == 4 spaces!
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+#include
+#include
+#include "task.h"
+#include "queue.h"
+
+/* Task priorities. */
+#define mainSTDOUT_TASK_PRIORITY tskIDLE_PRIORITY
+
+/* Stack sizes. */
+#define mainSTDOUT_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE * 4 )
+
+/* File scope variables. */
+static volatile unsigned long ul1 = 0, ul2 = 0;
+static xQueueHandle xStdoutQueue = NULL;
+
+/* Task function prototypes. */
+static void prvTask1( void *pvParameters );
+static void prvTask2( void *pvParameters );
+static void prvStdoutTask( void *pvParameters );
+
+/* Create a queue on which console output strings can be posted, then start the
+task that processes the queue - printf()'ing each string that is received. */
+static void prvStartStdoutTask( void );
+
+/* Post a message for output by the stdout task. Basically queues the message
+pointed to by pcTextToPrint for output to stdout in a thread safe manner. */
+void vMainConsolePrint( const char *pcTextToPrint, portTickType xTicksToWait );
+
+volatile unsigned long ulIdleCount = 0UL, ulT1Count = 0UL, ulT2Count = 0UL, ulTicks = 0UL;
+/*-----------------------------------------------------------*/
+
+int main( void )
+{
+ prvStartStdoutTask();
+ xTaskCreate( prvTask1, "t1", 100, NULL, 0, NULL );
+ xTaskCreate( prvTask2, "t2", 100, NULL, 0, NULL );
+ vTaskStartScheduler();
+
+ /* Should never get here unless there was not enough heap space to create
+ the idle and other system tasks. */
+ return 0;
+}
+/*-----------------------------------------------------------*/
+
+void vMainConsolePrint( const char *pcTextToPrint, portTickType xTicksToWait )
+{
+ if( xStdoutQueue != NULL )
+ {
+ xQueueSend( xStdoutQueue, &pcTextToPrint, xTicksToWait );
+ }
+}
+/*-----------------------------------------------------------*/
+
+static void prvStartStdoutTask( void )
+{
+const unsigned long ulQueueLength = 20;
+
+ /* Create the queue on which starings for output will be stored. */
+ xStdoutQueue = xQueueCreate( ulQueueLength, ( unsigned portBASE_TYPE ) sizeof( char * ) );
+
+ if( xStdoutQueue != NULL )
+ {
+ /* Create the task that processes the stdout messages. */
+ xTaskCreate( prvStdoutTask, "stdout task", mainSTDOUT_TASK_STACK_SIZE, NULL, mainSTDOUT_TASK_PRIORITY, NULL );
+ }
+}
+/*-----------------------------------------------------------*/
+
+static void prvStdoutTask( void *pvParameters )
+{
+char *pcString;
+
+ /* Just to remove compiler warnings. */
+ ( void ) pvParameters;
+
+ for( ;; )
+ {
+ /* This task would not have been created if the queue had not been created
+ successfully too. Also, because of the FreeRTOSConfig.h settings using
+ portMAX_DELAY in this case means wait forever, so when this function returns
+ we know there is a string to print. */
+ xQueueReceive( xStdoutQueue, &pcString, portMAX_DELAY );
+ printf( "%s", pcString );
+ //fflush( stdout );
+ }
+}
+/*-----------------------------------------------------------*/
+
+static void prvTask1( void *pvParameters )
+{
+const char *pcTask1Message = "Task 1 running\r\n";
+const portTickType xTicksToDelay = 1000 / portTICK_RATE_MS;
+
+ /* Just to remove compiler warnings. */
+ ( void ) pvParameters;
+
+ for( ;; )
+ {
+// ul1++;
+ vMainConsolePrint( pcTask1Message, 0 );
+ vTaskDelay( xTicksToDelay );
+ ulT1Count++;
+ }
+}
+/*-----------------------------------------------------------*/
+
+static void prvTask2( void *pvParameters )
+{
+const char *pcTask2Message = "Task 2 running\r\n";
+const portTickType xTicksToDelay = 500 / portTICK_RATE_MS;
+
+ /* Just to remove compiler warnings. */
+ ( void ) pvParameters;
+
+ for( ;; )
+ {
+// ul2++;
+ vMainConsolePrint( pcTask2Message, 0 );
+ vTaskDelay( xTicksToDelay );
+ ulT2Count++;
+// taskYIELD();
+ }
+}
+/*-----------------------------------------------------------*/
+
+void vApplicationIdleHook()
+{
+const unsigned long ulMSToSleep = 5;
+
+ /* Sleep to reduce CPU load, but don't sleep indefinitely if not using
+ preemption as as nothing will cause a task switch. */
+ #if configUSE_PREEMPTION != 0
+ {
+ SleepEx( INFINITE, TRUE );
+ }
+ #else
+ {
+ SleepEx( ulMSToSleep, TRUE );
+ }
+ #endif
+
+ ulIdleCount++;
+}