diff --git a/0readme_ethernet.txt b/0readme_ethernet.txt
index 225f5be0..6916cfac 100644
--- a/0readme_ethernet.txt
+++ b/0readme_ethernet.txt
@@ -51,6 +51,8 @@ The following steps were performed to get a working SIMH vax simulator
 sharing a physical NIC and allowing Host<->SIMH vax communications:
 
 Linux (Ubuntu 10.04):
+    apt-get install make
+    apt-get install libpcap-dev
     apt-get install bridge-utils
     apt-get install uml-utilities
 
@@ -155,6 +157,7 @@ Note 3: Simulators running using VDE networking can run without root
         privilege.
 
 Linux (Ubuntu 10.04):
+    apt-get install make
     apt-get install libvdeplug-dev
     apt-get install vde2
 
@@ -181,28 +184,43 @@ Windows notes:
 
 
 Building on Windows:
- Building with MinGW can use the provided makefile following the instructions 
- below.  Alternatively, you can use the free Visual C++ Express 2008 or 2010
- interactive development environments.  Read the file 
- ".\Visual Studio Projects\0ReadMe_Projects.txt" for details.
+ You should be able to build with any of the free compiler environments 
+ available on the Windows platform.  If you want to use the Visual C++ 
+ Express 2008 or 2010 interactive development environments, read the file 
+ ".\Visual Studio Projects\0ReadMe_Projects.txt" for details about the
+ required dependencies.  Alternatively, you can build simh with networking
+ support using the MinGW GCC compiler environment.  Both the Visual C++
+ and MinGW build environments require WinPcap and Posix packages being
+ available.  These should be located in a directory structure parallel to
+ the current simulator source directory.
  
- 1. Install WinPCAP 4.x runtime and the WinPCAP Developer's kit.
+ For Example, the directory structure should look like:
 
- 2. Put the required .h files (bittypes,devioctl,ip6_misc,pcap,pcap-stdinc
-    packet32,ntddndis).h from the WinPCAP 4.x developer's kit in the 
-    compiler's include file path
+    .../simh/simhv38-2-rc1/VAX/vax_cpu.c
+    .../simh/simhv38-2-rc1/scp.c
+    .../simh/simhv38-2-rc1/Visual Studio Projects/simh.sln
+    .../simh/simhv38-2-rc1/Visual Studio Projects/VAX.vcproj
+    .../simh/simhv38-2-rc1/BIN/Nt/Win32-Release/vax.exe
+    .../simh/windows-build/pthreads/pthread.h
+    .../simh/windows-build/winpcap/WpdPack/Include/pcap.h
 
- 3. Put the required .lib files (packet,wpcap).lib from the WinPCAP 4.x
-    developer's kit in the linker's library path
+ The contents of the windows-build directory can be downloaded from:
 
- 4. If you're using Borland C++, use COFF2OMF to convert the .lib files into
-    a format that can be used by the compiler.
+    https://github.com/downloads/markpizz/simh/windows-build.zip
 
- 5. Define USE_NETWORK.  The current windows network built binaries will 
-    run on any system. regardless of whether or not WinPcap is installed, 
-    and will provide Network functionality when WinPcap is available.
 
- 6. Build it!
+ There are Windows batch files provided to initiate compiles using the MinGW
+ compiler tool chain.  These batch files are located in the same directory 
+ as this file and are called: build_mingw.bat, build_mingw_ether.bat, and 
+ build_mingw_noasync.bat.  These batch files each presume that the MinGW 
+ toolchain is either in the current path or, if not that it is located at
+ C:\MinGW\bin.  These batch files merely invoke the MinGW make (GNU make)
+ passing some specific arguments along with the optional arguments the batch 
+ file is invoked with.
+ 
+ The current windows network built binaries will run on any system without 
+ regard to whether or not WinPcap is installed, and will provide 
+ Network functionality when WinPcap is available.
 
 -------------------------------------------------------------------------------
 
@@ -254,18 +272,26 @@ Building on Linux, {Free|Net|Open}BSD, OS/X, Un*x:
       Linux  : search for your variant on http://rpmfind.net
       OS/X   : Apple Developer's site?
 
-	    NOTE: These repositories for older versions of these platforms
+	    NOTE: The repositories for older versions of these platforms
 	          don't contain a version of libpcap greater than 0.8.1.
-	          However, most(all) recent releases of *nix environments ship 
-	          with sufficiently recent versions of libpcap either automatically 
-              installed or available for installation as part of the 
-              distribution.  
+	          However, most(all) recent releases of *nix environments 
+	          ship with sufficiently recent versions of libpcap either 
+	          automatically installed or available for installation as 
+	          part of the distribution.  
+	          The OS provided libpcap-dev components will be prefereable 
+	          to a package built from www.tcpdump.org sources.  This is
+	          due to the fact that various OS supplied packages will 
+	          depend on the OS supplied libpcap.  The improper build or 
+	          install of the www.tcpdump.org source package can conflict 
+	          with the OS provided one and break the OS provided 
+	          applications (i.e. tcpdump and/or wireshark) as well as
+	          not working correctly for use by simh.
 
- 2. If you install the vendor supplied libpcap-dev package and it provides
-    a /usr/lib/libpcap.a file, then the existing makefile will automatically
-    use the vendor supplied library without any additional arguments.
-    If you have downloaded and built the libpcap from tcpdump.org, then 
-    you can use it during a build by typing 'make USE_NETWORK=1'
+ 2. If you install the vendor supplied libpcap-dev package then the simh
+    makefile will automatically use the vendor supplied library without any 
+    additional arguments.  If you have downloaded and built libpcap from 
+    www.tcpdump.org, then you can force its use during a build by typing 
+    'make USE_NETWORK=1'
 
  3. Build it!
 
diff --git a/PDP11/pdp11_tq.c b/PDP11/pdp11_tq.c
index ce1d79f8..2fbf5ed9 100644
--- a/PDP11/pdp11_tq.c
+++ b/PDP11/pdp11_tq.c
@@ -25,6 +25,8 @@
 
    tq           TQK50 tape controller
 
+   23-Jan-12    MP      Added missing support for Logical EOT detection while
+                        positioning.
    05-Mar-11    MP      Added missing state for proper save/restore
    01-Mar-11    MP      - Migrated complex physical tape activities to sim_tape
                         - adopted use of asynch I/O interfaces from sim_tape
@@ -1451,11 +1453,13 @@ switch (cmd) {                                          /* case on command */
             sim_tape_position_a (uptr,
                                  ((mdf & MD_RWD) ? MTPOS_M_REW : 0) | 
                                  ((mdf & MD_REV) ? MTPOS_M_REV : 0) |
-                                 ((mdf & MD_OBC) ? MTPOS_M_OBJ : 0) ,
+                                 ((mdf & MD_OBC) ? MTPOS_M_OBJ : 0) |
+                                 (((mdf & MD_DLE) && !(mdf & MD_REV)) ? MTPOS_M_DLE : 0),
                                  nrec, &res->skrec, ntmk, &res->sktmk, (uint32 *)&res->objupd, tq_io_complete);
             return SCPE_OK;
             }
-        if (res->io_status)
+        res->sts = tq_map_status (uptr, res->io_status);
+        if ((res->io_status != MTSE_OK) && (res->io_status != MTSE_BOT) && (res->io_status != MTSE_LEOT))
             return tq_mot_err (uptr, 0);                /* log, end */
         sim_debug (DBG_REQ, &tq_dev, "Position Done: mdf=0x%04X, nrec=%d, ntmk=%d, skrec=%d, sktmk=%d, skobj=%d\n", 
                             mdf, nrec, ntmk, res->skrec, res->sktmk, res->objupd);
@@ -1558,6 +1562,9 @@ switch (st) {
     case MTSE_WRP:
         uptr->flags = uptr->flags | UNIT_SXC;
         return ST_WPR;
+
+    case MTSE_LEOT:
+        return ST_LED;
         }
 
 return ST_SUC;
diff --git a/VAX/vax780_stddev.c b/VAX/vax780_stddev.c
index 2288b481..3a3016fe 100644
--- a/VAX/vax780_stddev.c
+++ b/VAX/vax780_stddev.c
@@ -761,7 +761,7 @@ if (-1 == clock_gettime(CLOCK_REALTIME, &now))          /* get curr time */
 val.tv_sec = ((uint32)data) / 100;
 val.tv_nsec = (((uint32)data) % 100) * 10000000;
 sim_timespec_diff (&base, &now, &val);                  /* base = now - data */
-toy->toy_gmtbase = base.tv_sec;
+toy->toy_gmtbase = (uint32)base.tv_sec;
 toy->toy_gmtbasemsec = base.tv_nsec/1000000;
 }
 
diff --git a/VAX/vax_stddev.c b/VAX/vax_stddev.c
index 254f4080..af05fb8b 100644
--- a/VAX/vax_stddev.c
+++ b/VAX/vax_stddev.c
@@ -27,6 +27,10 @@
    tto          terminal output
    clk          100Hz and TODR clock
 
+   13-Jan-12    MP      Normalized the saved format of the TODR persistent 
+                        file so that it may be moved around from one platform
+                        to another along with other simulator state files 
+                        (disk & tape images, save/restore files, etc.)
    28-Sep-11    MP      Generalized setting TODR for all OSes.  
                         Unbound the TODR value from the 100hz clock tick 
                         interrupt.  TODR now behaves like the original 
@@ -49,9 +53,10 @@
                           (i.e. sim> attach TODR TOY_CLOCK).  When operating 
                           in OS Agnostic mode, the TODR will initially start
                           counting from 0 and be adjusted differently when an
-                          OS specifically writes to the TODR.  VMS will prompt
-                          to set the time on each boot unless the SYSGEN 
-                          parameter TIMEPROMPTWAIT is set to 0.
+                          OS specifically writes to the TODR.  On the first OS 
+                          boot with an attached TODR VMS will prompt to set 
+                          the time unless the SYSGEN parameter TIMEPROMPTWAIT 
+                          is set to 0.
    05-Jan-11    MP      Added Asynch I/O support
    17-Aug-08    RMS     Resync TODR on any clock reset
    18-Jun-07    RMS     Added UNIT_IDLE flag to console input, clock
@@ -96,6 +101,8 @@ int32 clk_tps = 100;                                    /* ticks/second */
 int32 todr_reg = 0;                                     /* TODR register */
 int32 todr_blow = 1;                                    /* TODR battery low */
 struct todr_battery_info {
+    char   toy_gmtbase_a[16];                           /* Platform independent Text format of toy_gmtbase */
+    char   toy_gmtbasemsec_a[16];                       /* Platform independent Text format of toy_gmtbasemsec */
     uint32 toy_gmtbase;                                 /* GMT base of set value */
     uint32 toy_gmtbasemsec;                             /* The milliseconds of the set value */
     };
@@ -422,6 +429,8 @@ if (0 == todr_reg)                                      /* clock running? */
 #define TOY_MAX_SECS (0x40000000/25)
 
 clock_gettime(CLOCK_REALTIME, &now);                    /* get curr time */
+toy->toy_gmtbase = strtoul(toy->toy_gmtbase_a, NULL, 0);
+toy->toy_gmtbasemsec = strtoul(toy->toy_gmtbasemsec_a, NULL, 0);
 base.tv_sec = toy->toy_gmtbase;
 base.tv_nsec = toy->toy_gmtbasemsec * 1000000;
 sim_timespec_diff (&val, &now, &base);
@@ -446,8 +455,10 @@ if (-1 == clock_gettime(CLOCK_REALTIME, &now))          /* get curr time */
 val.tv_sec = ((uint32)data) / 100;
 val.tv_nsec = (((uint32)data) % 100) * 10000000;
 sim_timespec_diff (&base, &now, &val);                  /* base = now - data */
-toy->toy_gmtbase = base.tv_sec;
+toy->toy_gmtbase = (uint32)base.tv_sec;
 toy->toy_gmtbasemsec = base.tv_nsec/1000000;
+sprintf(toy->toy_gmtbase_a, "0x%08X", toy->toy_gmtbase);
+sprintf(toy->toy_gmtbasemsec_a, "0x%08X", toy->toy_gmtbasemsec);
 todr_reg = data;
 if (data)
     todr_blow = 0;
diff --git a/Visual Studio Projects/0ReadMe_Projects.txt b/Visual Studio Projects/0ReadMe_Projects.txt
index 19baa7c6..8b90b547 100644
--- a/Visual Studio Projects/0ReadMe_Projects.txt	
+++ b/Visual Studio Projects/0ReadMe_Projects.txt	
@@ -4,8 +4,10 @@ Visual Studio Express 2010) it populates a directory tree under the BIN
 directory of the Simh distribution for temporary build files and produces 
 resulting executables in the BIN/NT/Win32-Debug or BIN/NT/Win32-Release 
 directories (depending on whether you target a Debug or Release build).  
-It expects that a winpcap developer pack zip file is expanded in a directory 
-parallel to the simh directory.  
+
+The Visual Studio Projects expect that a winpcap developer pack and the
+Posix threads for windows package are available in a directory parallel 
+to the simh directory.  
 
 For Example, the directory structure should look like:
 
@@ -14,37 +16,25 @@ For Example, the directory structure should look like:
     .../simh/simhv38-2-rc1/Visual Studio Projects/simh.sln
     .../simh/simhv38-2-rc1/Visual Studio Projects/VAX.vcproj
     .../simh/simhv38-2-rc1/BIN/Nt/Win32-Release/vax.exe
-    .../simh/winpcap/WpdPack/Include/pcap.h
+    .../simh/windows-build/pthreads/pthread.h
+    .../simh/windows-build/winpcap/WpdPack/Include/pcap.h
+
+The contents of the windows-build directory can be downloaded from:
+
+    https://github.com/downloads/markpizz/simh/windows-build.zip
 
 
-The winpcap developer pack can be found at:
-       http://www.winpcap.org/devel.htm
+Network devices are capable of using pthreads to enhance their performance.  
+To realize these benefits, you must build the desire simulator with 
+USE_READER_THREAD defined.  The relevant simulators which have network 
+support are VAX, VAX780 and PDP11.
 
-The latest version of the WinPcap developer's pack is Version 4.1.2
-
-Some features can be enabled if the pthreads API is available and contained 
-also in a parallel place in the directory structure.
-
-
-    .../simh/pthreads/Pre-built.2/include/include/pthreads.h
-
-
-To install pthreads API, create the directory:
-
-    .../simh/pthreads/
-
-download the file: 
-    ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-8-0-release.exe
-to that directory and execute it.  Click on the Extract button.
-Once installed, When running a simulator with pthreads support enabled, you 
-will need a copy of the DLL file (simh\pthreads\Pre-built.2\lib\pthreadVC2.dll)
-to exist in either the %windir%\System32 directory (or %windir%\SysWOW64 on 
-x64 Windows environments) or your working directory while running a simh 
-simulator.  The default working directory for included project files is the 
-"Visual Studio Projects" directory.
-
-
-Only network devices are capable of using pthreads to enhance their 
-performance.  Build the desire simulator with USE_READER_THREAD defined.  The 
-relevant simulators which have network support are VAX, VAX780 and PDP11.
+Additionally, simulators which contain devices which use the asynchronous
+APIs in sim_disk.c and sim_tape.c can also achieve greater performance by
+leveraging pthreads to perform blocking I/O in separate threads.  Currently
+the simulators which have such devices are VAX, VAX780 and PDP11.  To 
+achieve these benefits the simulators must be built with SIM_ASYNCH_IO 
+defined.
 
+The project files in this directory build these simulators with support for
+both network and asynchronous I/O.
diff --git a/Visual Studio Projects/ALTAIR.vcproj b/Visual Studio Projects/ALTAIR.vcproj
index 59fa3bd7..50953c79 100644
--- a/Visual Studio Projects/ALTAIR.vcproj	
+++ b/Visual Studio Projects/ALTAIR.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ALTAIR\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ALTAIR\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/AltairZ80.vcproj b/Visual Studio Projects/AltairZ80.vcproj
index b5681a54..b910589a 100644
--- a/Visual Studio Projects/AltairZ80.vcproj	
+++ b/Visual Studio Projects/AltairZ80.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\AltairZ80\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../AltairZ80/"
-				PreprocessorDefinitions="NO_INLINE;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="NO_INLINE;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\AltairZ80\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../AltairZ80/"
-				PreprocessorDefinitions="NO_INLINE;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="NO_INLINE;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/BuildROMs.vcproj b/Visual Studio Projects/BuildROMs.vcproj
index 349f0e0d..570688c6 100644
--- a/Visual Studio Projects/BuildROMs.vcproj	
+++ b/Visual Studio Projects/BuildROMs.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\BuildROMs\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\BuildROMs\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/ECLIPSE.vcproj b/Visual Studio Projects/ECLIPSE.vcproj
index d92daee7..ca98d455 100644
--- a/Visual Studio Projects/ECLIPSE.vcproj	
+++ b/Visual Studio Projects/ECLIPSE.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ECLIPSE\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="../;../NOVA/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ECLIPSE\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="../;../NOVA/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/GRI.vcproj b/Visual Studio Projects/GRI.vcproj
index 811cd8aa..3f88b5bb 100644
--- a/Visual Studio Projects/GRI.vcproj	
+++ b/Visual Studio Projects/GRI.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\GRI\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../GRI/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\GRI\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../GRI/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/H316.vcproj b/Visual Studio Projects/H316.vcproj
index 226ea7a8..8bd7530e 100644
--- a/Visual Studio Projects/H316.vcproj	
+++ b/Visual Studio Projects/H316.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\H316\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\H316\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/HP2100.vcproj b/Visual Studio Projects/HP2100.vcproj
index 052039da..d1f1068d 100644
--- a/Visual Studio Projects/HP2100.vcproj	
+++ b/Visual Studio Projects/HP2100.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\HP2100\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../HP2100/"
-				PreprocessorDefinitions="HAVE_INT64;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="HAVE_INT64;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\HP2100\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../HP2100/"
-				PreprocessorDefinitions="HAVE_INT64;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="HAVE_INT64;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/I1401.vcproj b/Visual Studio Projects/I1401.vcproj
index d1f8f561..e9b6d64e 100644
--- a/Visual Studio Projects/I1401.vcproj	
+++ b/Visual Studio Projects/I1401.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\I1401\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../I1401/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\I1401\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../I1401/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/I1620.vcproj b/Visual Studio Projects/I1620.vcproj
index f24ac970..7a3afc53 100644
--- a/Visual Studio Projects/I1620.vcproj	
+++ b/Visual Studio Projects/I1620.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\I1620\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../I1620/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\I1620\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../I1620/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/I7094.vcproj b/Visual Studio Projects/I7094.vcproj
index c96b4579..6f04a6b1 100644
--- a/Visual Studio Projects/I7094.vcproj	
+++ b/Visual Studio Projects/I7094.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\I7094\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;USE_INT64"
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;USE_INT64"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\I7094\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;USE_INT64"
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;USE_INT64"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/IBM1130.vcproj b/Visual Studio Projects/IBM1130.vcproj
index cec64ded..2a116ced 100644
--- a/Visual Studio Projects/IBM1130.vcproj	
+++ b/Visual Studio Projects/IBM1130.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\IBM1130\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../ibm1130/"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\IBM1130\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../ibm1130/"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/ID16.vcproj b/Visual Studio Projects/ID16.vcproj
index 162a6fac..0c50ccc7 100644
--- a/Visual Studio Projects/ID16.vcproj	
+++ b/Visual Studio Projects/ID16.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ID16\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ID16\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/ID32.vcproj b/Visual Studio Projects/ID32.vcproj
index 237c2e7c..9474205e 100644
--- a/Visual Studio Projects/ID32.vcproj	
+++ b/Visual Studio Projects/ID32.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ID32\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\ID32\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/NOVA.vcproj b/Visual Studio Projects/NOVA.vcproj
index 22cb8bc2..ed896b38 100644
--- a/Visual Studio Projects/NOVA.vcproj	
+++ b/Visual Studio Projects/NOVA.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\NOVA\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../NOVA/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\NOVA\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../NOVA/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/PDP1.vcproj b/Visual Studio Projects/PDP1.vcproj
index 57431cb4..d367998d 100644
--- a/Visual Studio Projects/PDP1.vcproj	
+++ b/Visual Studio Projects/PDP1.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP1\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../PDP1/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP1\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../PDP1/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/PDP10.vcproj b/Visual Studio Projects/PDP10.vcproj
index eff6841a..36c52831 100644
--- a/Visual Studio Projects/PDP10.vcproj	
+++ b/Visual Studio Projects/PDP10.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP10\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -42,8 +42,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="./;../;../PDP10/;../PDP11/;../VAX/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_INT64;VM_PDP10;USE_SHARED;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD"
+				AdditionalIncludeDirectories="./;../;../PDP10/;../PDP11/;../VAX/"
+				PreprocessorDefinitions="USE_INT64;VM_PDP10;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -63,10 +63,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\PDP10.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories=""
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)\PDP10.pdb"
 				SubSystem="1"
@@ -102,7 +102,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP10\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,8 +124,8 @@
 				Optimization="2"
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
-				AdditionalIncludeDirectories="./;../;../PDP10/;../PDP11/;../VAX/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_INT64;VM_PDP10;USE_SHARED;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD"
+				AdditionalIncludeDirectories="./;../;../PDP10/;../PDP11/;../VAX/"
+				PreprocessorDefinitions="USE_INT64;VM_PDP10;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
@@ -145,10 +145,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\PDP10.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories=""
 				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
diff --git a/Visual Studio Projects/PDP11.vcproj b/Visual Studio Projects/PDP11.vcproj
index 30e71620..ec24e7e4 100644
--- a/Visual Studio Projects/PDP11.vcproj	
+++ b/Visual Studio Projects/PDP11.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP11\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -42,8 +42,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="./;../;../PDP11/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_SHARED;VM_PDP11;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD"
+				AdditionalIncludeDirectories="./;../;../PDP11/;&quot;../../windows-build/winpcap/Wpdpack/Include&quot;;&quot;../../windows-build/pthreads&quot;"
+				PreprocessorDefinitions="USE_SHARED;VM_PDP11;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;PTW32_STATIC_LIB;SIM_ASYNCH_IO;USE_READER_THREAD"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -63,10 +63,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wpcap.lib packet.lib wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\PDP11.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories="&quot;../../windows-build/winpcap/Wpdpack/Lib/&quot;"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)\PDP11.pdb"
 				SubSystem="1"
@@ -102,7 +102,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP11\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,8 +124,8 @@
 				Optimization="2"
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
-				AdditionalIncludeDirectories="./;../;../PDP11/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_SHARED;VM_PDP11;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD"
+				AdditionalIncludeDirectories="./;../;../PDP11/;&quot;../../windows-build/winpcap/Wpdpack/Include&quot;;&quot;../../windows-build/pthreads&quot;"
+				PreprocessorDefinitions="USE_SHARED;VM_PDP11;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;PTW32_STATIC_LIB;SIM_ASYNCH_IO;USE_READER_THREAD"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
@@ -145,10 +145,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wpcap.lib packet.lib wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\PDP11.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories="&quot;../../windows-build/winpcap/Wpdpack/Lib/&quot;"
 				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
@@ -331,6 +331,26 @@
 				RelativePath="..\PDP11\pdp11_xu.c"
 				>
 			</File>
+			<File
+				RelativePath="..\..\windows-build\pthreads\pthread.c"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions="HAVE_PTW32_CONFIG_H;PTW32_BUILD_INLINED;PTW32_STATIC_LIB;__CLEANUP_C;$(NOINHERIT)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions="HAVE_PTW32_CONFIG_H;PTW32_BUILD_INLINED;PTW32_STATIC_LIB;__CLEANUP_C;$(NOINHERIT)"
+					/>
+				</FileConfiguration>
+			</File>
 			<File
 				RelativePath="..\scp.c"
 				>
diff --git a/Visual Studio Projects/PDP15.vcproj b/Visual Studio Projects/PDP15.vcproj
index fb326065..8241c99f 100644
--- a/Visual Studio Projects/PDP15.vcproj	
+++ b/Visual Studio Projects/PDP15.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP15\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP15;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP15;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP15\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP15;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP15;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/PDP18B.vcproj b/Visual Studio Projects/PDP18B.vcproj
index 5d829a55..236714c9 100644
--- a/Visual Studio Projects/PDP18B.vcproj	
+++ b/Visual Studio Projects/PDP18B.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP18B\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP18B\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/PDP4.vcproj b/Visual Studio Projects/PDP4.vcproj
index 3a5fa23d..b7049eca 100644
--- a/Visual Studio Projects/PDP4.vcproj	
+++ b/Visual Studio Projects/PDP4.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP4\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP4;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP4;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP4\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP4;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP4;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/PDP7.vcproj b/Visual Studio Projects/PDP7.vcproj
index dce8d70e..0364ef2e 100644
--- a/Visual Studio Projects/PDP7.vcproj	
+++ b/Visual Studio Projects/PDP7.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP7\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP7;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP7;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP7\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP7;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP7;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/PDP8.vcproj b/Visual Studio Projects/PDP8.vcproj
index 26335916..a71bbc0a 100644
--- a/Visual Studio Projects/PDP8.vcproj	
+++ b/Visual Studio Projects/PDP8.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP8\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../PDP8/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP8\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../PDP8/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/PDP9.vcproj b/Visual Studio Projects/PDP9.vcproj
index 7bec5514..781b2de3 100644
--- a/Visual Studio Projects/PDP9.vcproj	
+++ b/Visual Studio Projects/PDP9.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP9\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP9;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP9;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\PDP9\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="../;../PDP18B/"
-				PreprocessorDefinitions="PDP9;_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="PDP9;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/S3.vcproj b/Visual Studio Projects/S3.vcproj
index fba7a787..752d9fba 100644
--- a/Visual Studio Projects/S3.vcproj	
+++ b/Visual Studio Projects/S3.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\S3\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../S3/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\S3\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../S3/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/SDS.vcproj b/Visual Studio Projects/SDS.vcproj
index d1c3ff9c..c15a9b5c 100644
--- a/Visual Studio Projects/SDS.vcproj	
+++ b/Visual Studio Projects/SDS.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\SDS\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../;../SDS/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\SDS\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../;../SDS/"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/SWTP.vcproj b/Visual Studio Projects/SWTP.vcproj
index ca490ae2..e573d26e 100644
--- a/Visual Studio Projects/SWTP.vcproj	
+++ b/Visual Studio Projects/SWTP.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\SWTP\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\SWTP\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/Visual Studio Projects/VAX.vcproj b/Visual Studio Projects/VAX.vcproj
index bfc0e91c..69438a10 100644
--- a/Visual Studio Projects/VAX.vcproj	
+++ b/Visual Studio Projects/VAX.vcproj	
@@ -22,12 +22,12 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\VAX\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
 				Description="Build Dependent ROM include File(s)"
-				CommandLine="pushd ..&#x0D;&#x0A;$(TargetDir)BuildROMs&#x0D;&#x0A;popd"
+				CommandLine="pushd ..&#x0D;&#x0A;$(TargetDir)BuildROMs&#x0D;&#x0A;popd&#x0D;&#x0A;"
 			/>
 			<Tool
 				Name="VCCustomBuildTool"
@@ -44,8 +44,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;USE_SHARED;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD;SIM_ASYNCH_IO"
+				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;&quot;../../windows-build/winpcap/Wpdpack/Include&quot;;&quot;../../windows-build/pthreads&quot;"
+				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;USE_SHARED;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;PTW32_STATIC_LIB;USE_READER_THREAD;SIM_ASYNCH_IO"
 				KeepComments="false"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="0"
@@ -69,10 +69,10 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/fixed:no"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wpcap.lib packet.lib wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\VAX.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories="&quot;../../windows-build/winpcap/Wpdpack/Lib/&quot;"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)\VAX.pdb"
 				SubSystem="1"
@@ -108,12 +108,12 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\VAX\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
 				Description="Build Dependent ROM include File(s)"
-				CommandLine="pushd ..&#x0D;&#x0A;$(TargetDir)BuildROMs&#x0D;&#x0A;popd"
+				CommandLine="pushd ..&#x0D;&#x0A;$(TargetDir)BuildROMs&#x0D;&#x0A;popd&#x0D;&#x0A;"
 			/>
 			<Tool
 				Name="VCCustomBuildTool"
@@ -134,8 +134,8 @@
 				EnableIntrinsicFunctions="true"
 				FavorSizeOrSpeed="1"
 				OmitFramePointers="true"
-				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;USE_SHARED;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD;SIM_ASYNCH_IO"
+				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;&quot;../../windows-build/winpcap/Wpdpack/Include&quot;;&quot;../../windows-build/pthreads&quot;"
+				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;USE_SHARED;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;PTW32_STATIC_LIB;USE_READER_THREAD;SIM_ASYNCH_IO"
 				KeepComments="false"
 				StringPooling="true"
 				RuntimeLibrary="0"
@@ -158,10 +158,10 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/fixed:no"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wpcap.lib packet.lib wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\VAX.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories="&quot;../../windows-build/winpcap/Wpdpack/Lib/&quot;"
 				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
@@ -244,6 +244,26 @@
 				RelativePath="..\PDP11\pdp11_xq.c"
 				>
 			</File>
+			<File
+				RelativePath="..\..\windows-build\pthreads\pthread.c"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions="HAVE_PTW32_CONFIG_H;PTW32_BUILD_INLINED;PTW32_STATIC_LIB;__CLEANUP_C;$(NOINHERIT)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions="HAVE_PTW32_CONFIG_H;PTW32_BUILD_INLINED;PTW32_STATIC_LIB;__CLEANUP_C;$(NOINHERIT)"
+					/>
+				</FileConfiguration>
+			</File>
 			<File
 				RelativePath="..\scp.c"
 				>
diff --git a/Visual Studio Projects/VAX780.vcproj b/Visual Studio Projects/VAX780.vcproj
index e0139d7a..e81699e3 100644
--- a/Visual Studio Projects/VAX780.vcproj	
+++ b/Visual Studio Projects/VAX780.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\VAX780\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -44,8 +44,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;VAX_780;USE_SHARED;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD;SIM_ASYNCH_IO"
+				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;&quot;../../windows-build/winpcap/Wpdpack/Include&quot;;&quot;../../windows-build/pthreads&quot;"
+				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;VAX_780;USE_SHARED;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;PTW32_STATIC_LIB;USE_READER_THREAD;SIM_ASYNCH_IO"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="1"
@@ -68,10 +68,10 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/fixed:no"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wpcap.lib packet.lib wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\VAX780.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories="&quot;../../windows-build/winpcap/Wpdpack/Lib/&quot;"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)\VAX780.pdb"
 				SubSystem="1"
@@ -107,7 +107,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\VAX780\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -133,8 +133,8 @@
 				EnableIntrinsicFunctions="true"
 				FavorSizeOrSpeed="1"
 				OmitFramePointers="true"
-				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;../../winpcap/Wpdpack/Include;&quot;../../pthreads/Pre-built.2/include&quot;"
-				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;VAX_780;USE_SHARED;_CRT_SECURE_NO_WARNINGS;USE_READER_THREAD;SIM_ASYNCH_IO"
+				AdditionalIncludeDirectories="./;../;../VAX/;../pdp11/;&quot;../../windows-build/winpcap/Wpdpack/Include&quot;;&quot;../../windows-build/pthreads&quot;"
+				PreprocessorDefinitions="USE_INT64;USE_ADDR64;VM_VAX;VAX_780;USE_SHARED;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;PTW32_STATIC_LIB;USE_READER_THREAD;SIM_ASYNCH_IO"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
@@ -156,10 +156,10 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/fixed:no"
-				AdditionalDependencies="pthreadVC2.lib wsock32.lib packet.lib winmm.lib"
+				AdditionalDependencies="wpcap.lib packet.lib wsock32.lib winmm.lib"
 				OutputFile="$(OutDir)\VAX780.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="../../winpcap/Wpdpack/Lib/;&quot;../../pthreads/Pre-built.2/lib/&quot;"
+				AdditionalLibraryDirectories="&quot;../../windows-build/winpcap/Wpdpack/Lib/&quot;"
 				GenerateDebugInformation="true"
 				SubSystem="1"
 				OptimizeReferences="2"
@@ -254,6 +254,26 @@
 				RelativePath="..\PDP11\pdp11_xu.c"
 				>
 			</File>
+			<File
+				RelativePath="..\..\windows-build\pthreads\pthread.c"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions="HAVE_PTW32_CONFIG_H;PTW32_BUILD_INLINED;PTW32_STATIC_LIB;__CLEANUP_C;$(NOINHERIT)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions="HAVE_PTW32_CONFIG_H;PTW32_BUILD_INLINED;PTW32_STATIC_LIB;__CLEANUP_C;$(NOINHERIT)"
+					/>
+				</FileConfiguration>
+			</File>
 			<File
 				RelativePath="..\scp.c"
 				>
diff --git a/Visual Studio Projects/lgp.vcproj b/Visual Studio Projects/lgp.vcproj
index cf6d7156..67701a97 100644
--- a/Visual Studio Projects/lgp.vcproj	
+++ b/Visual Studio Projects/lgp.vcproj	
@@ -22,7 +22,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\lgp\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -101,7 +101,7 @@
 			IntermediateDirectory="..\BIN\NT\Project\simh\lgp\$(PlatformName)-$(ConfigurationName)"
 			ConfigurationType="1"
 			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
-			CharacterSet="2"
+			CharacterSet="0"
 			>
 			<Tool
 				Name="VCPreBuildEventTool"
@@ -124,7 +124,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="./;../"
-				PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS"
 				StringPooling="true"
 				RuntimeLibrary="0"
 				EnableFunctionLevelLinking="true"
diff --git a/build_mingw.bat b/build_mingw.bat
index 187cea2f..ff738d41 100644
--- a/build_mingw.bat
+++ b/build_mingw.bat
@@ -1,5 +1,11 @@
 @echo off
 rem Compile all of SIMH using MINGW make and gcc environment
+rem
+rem The makefile will determine if the needed WinPcap build 
+rem components are available and the resulting simulators will
+rem run with networking support when the WinPcap environment 
+rem is installed on the running system.
+rem
 rem Individual simulator sources are in .\simulator_name
 rem Individual simulator executables are to .\bin
 rem
diff --git a/build_mingw_ether.bat b/build_mingw_ether.bat
index 15c9a7c1..51ec0bfd 100644
--- a/build_mingw_ether.bat
+++ b/build_mingw_ether.bat
@@ -1,5 +1,6 @@
 @echo off
-rem 12-Nov-02	rms	Ethernet support
+rem Built in Ethernet support (requires WinPcap installed)
+rem
 rem Compile all of SIMH using MINGW make and gcc environment
 rem Individual simulator sources are in .\simulator_name
 rem Individual simulator executables are to .\bin
diff --git a/makefile b/makefile
index 41166175..47f992c0 100644
--- a/makefile
+++ b/makefile
@@ -44,7 +44,7 @@ ifeq ($(WIN32),)  #*nix Environments (&& cygwin)
       LIBEXT = dylib
     else
       ifeq (Linux,$(shell uname))
-        LIBPATH := $(sort $(foreach lib,$(shell ldconfig -p | grep ' => /' | sed 's/^.* => //'),$(dir $(lib))))
+        LIBPATH := $(sort $(foreach lib,$(shell /sbin/ldconfig -p | grep ' => /' | sed 's/^.* => //'),$(dir $(lib))))
         LIBEXT = so
       else
         ifeq (SunOS,$(shell uname))
@@ -150,7 +150,7 @@ ifeq ($(WIN32),)  #*nix Environments (&& cygwin)
       # Look for package built from tcpdump.org sources with default install target
       LIBPATH += /usr/local/lib
       INCPATH += /usr/local/include
-      LIBEXTSAVE = $(LIBEXT)
+      LIBEXTSAVE := $(LIBEXT)
       LIBEXT = a
       ifneq (,$(call find_lib,pcap))
         ifneq (,$(call find_include,pcap))
@@ -170,9 +170,9 @@ else
   GCC = gcc
   GCC_Path := $(dir $(shell where gcc.exe))
   ifeq ($(NOASYNCH),)
-    ifeq (pthreads,$(shell if exist ..\pthreads\Pre-built.2\include\pthread.h echo pthreads))
-      PTHREADS_CCDEFS = -DSIM_ASYNCH_IO -DUSE_READER_THREAD -I../pthreads/Pre-built.2/include
-      PTHREADS_LDFLAGS = -lpthreadVC2 -L..\pthreads\Pre-built.2\lib
+    ifeq (pthreads,$(shell if exist ..\windows-build\pthreads\Pre-built.2\include\pthread.h echo pthreads))
+      PTHREADS_CCDEFS = -DSIM_ASYNCH_IO -DUSE_READER_THREAD -DPTW32_STATIC_LIB -I../windows-build/pthreads/Pre-built.2/include
+      PTHREADS_LDFLAGS = -lpthreadGC2 -L..\windows-build\pthreads\Pre-built.2\lib
     else
       ifeq (pthreads,$(shell if exist $(dir $(GCC_Path))..\include\pthread.h echo pthreads))
         PTHREADS_CCDEFS = -DSIM_ASYNCH_IO -DUSE_READER_THREAD
@@ -180,13 +180,13 @@ else
       endif
     endif
   endif
-  ifeq (pcap,$(shell if exist ..\winpcap\Wpdpack\include\pcap.h echo pcap))
-    PCAP_CCDEFS = -I../winpcap/Wpdpack/include -DUSE_SHARED
+  ifeq (pcap,$(shell if exist ..\windows-build\winpcap\Wpdpack\include\pcap.h echo pcap))
+    PCAP_CCDEFS = -I../windows-build/winpcap/Wpdpack/include -I$(GCC_Path)..\include\ddk -DUSE_SHARED
     NETWORK_LDFLAGS = 
     NETWORK_OPT = -DUSE_SHARED
   else
     ifeq (pcap,$(shell if exist $(dir $(GCC_Path))..\include\pcap.h echo pcap))
-      PCAP_CCDEFS = -DUSE_SHARED
+      PCAP_CCDEFS = -DUSE_SHARED -I$(GCC_Path)..\include\ddk 
       NETWORK_LDFLAGS = 
       NETWORK_OPT = -DUSE_SHARED
     endif
diff --git a/scp.c b/scp.c
index 65ff2658..86a8680e 100644
--- a/scp.c
+++ b/scp.c
@@ -212,6 +212,7 @@
 #include <signal.h>
 #include <ctype.h>
 #include <time.h>
+#include <sys/stat.h>
 
 #if defined(HAVE_DLOPEN)                                 /* Dynamic Readline support */
 #include <dlfcn.h>
@@ -1825,7 +1826,7 @@ return SCPE_OK;
 
 t_stat show_unit (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag)
 {
-int32 u = uptr - dptr->units;
+int32 u = (int32)(uptr - dptr->units);
 
 if (flag > 1)
     fprintf (st, "  %s%d", sim_dname (dptr), u);
@@ -2168,7 +2169,7 @@ if (dptr->modifiers) {
             continue;
         if (any++)
             fprintf (st, ", %s", mptr->pstring);
-        else fprintf (st, "SHOW %s\t%s", sim_dname (dptr), mptr->pstring);
+        else fprintf (st, "sh{ow} %s\t%s", sim_dname (dptr), mptr->pstring);
         }
     }
 if (any)
@@ -2459,7 +2460,7 @@ if (uptr->flags & UNIT_BUFABLE) {                       /* buffer? */
     if (uptr->filebuf == NULL)                          /* no buffer? */
         return attach_err (uptr, SCPE_MEM);             /* error */
     if (!sim_quiet) printf ("%s: buffering file in memory\n", sim_dname (dptr));
-    uptr->hwmark = sim_fread (uptr->filebuf,            /* read file */
+    uptr->hwmark = (uint32)sim_fread (uptr->filebuf,    /* read file */
         SZ_D (dptr), cap, uptr->fileref);
     uptr->flags = uptr->flags | UNIT_BUF;               /* set buffered */
     }
@@ -2819,12 +2820,15 @@ t_bool v35, v32;
 DEVICE *dptr;
 UNIT *uptr;
 REG *rptr;
+struct stat rstat;
+t_bool force_restore = sim_switches & SWMASK ('F');
 
 #define READ_S(xx) if (read_line ((xx), CBUFSIZE, rfile) == NULL) \
     return SCPE_IOERR;
 #define READ_I(xx) if (sim_fread (&xx, sizeof (xx), 1, rfile) == 0) \
     return SCPE_IOERR;
 
+fstat (fileno (rfile), &rstat);
 READ_S (buf);                                           /* [V2.5+] read version */
 v35 = v32 = FALSE;
 if (strcmp (buf, save_vercur) == 0)                     /* version 3.5? */
@@ -2833,22 +2837,30 @@ else if (strcmp (buf, save_ver32) == 0)                 /* version 3.2? */
     v32 = TRUE;
 else if (strcmp (buf, save_ver30) != 0) {               /* version 3.0? */
     printf ("Invalid file version: %s\n", buf);
+    if (sim_log)
+        fprintf (sim_log, "Invalid file version: %s\n", buf);
     return SCPE_INCOMP;
     }
 READ_S (buf);                                           /* read sim name */
 if (strcmp (buf, sim_name)) {                           /* name match? */
     printf ("Wrong system type: %s\n", buf);
+    if (sim_log)
+        fprintf (sim_log, "Wrong system type: %s\n", buf);
     return SCPE_INCOMP;
     }
 if (v35) {                                              /* [V3.5+] options */
     READ_S (buf);                                       /* integer size */
     if (strcmp (buf, sim_si64) != 0) {
         printf ("Incompatible integer size, save file = %s\n", buf);
+        if (sim_log)
+            fprintf (sim_log, "Incompatible integer size, save file = %s\n", buf);
         return SCPE_INCOMP;
         }
     READ_S (buf);                                       /* address size */
     if (strcmp (buf, sim_sa64) != 0) {
         printf ("Incompatible address size, save file = %s\n", buf);
+        if (sim_log)
+            fprintf (sim_log, "Incompatible address size, save file = %s\n", buf);
         return SCPE_INCOMP;
         }
     READ_S (buf);                                       /* Ethernet */
@@ -2866,6 +2878,8 @@ for ( ;; ) {                                            /* device loop */
         break;
     if ((dptr = find_dev (buf)) == NULL) {              /* locate device */
         printf ("Invalid device name: %s\n", buf);
+        if (sim_log)
+            fprintf (sim_log, "Invalid device name: %s\n", buf);
         return SCPE_INCOMP;
         }
     READ_S (buf);                                       /* [V3.0+] logical name */
@@ -2886,6 +2900,8 @@ for ( ;; ) {                                            /* device loop */
             break;
         if ((uint32) unitno >= dptr->numunits) {        /* too big? */
             printf ("Invalid unit number: %s%d\n", sim_dname (dptr), unitno);
+            if (sim_log)
+                fprintf (sim_log, "Invalid unit number: %s%d\n", sim_dname (dptr), unitno);
             return SCPE_INCOMP;
             }
         READ_I (time);                                  /* event time */
@@ -2936,6 +2952,8 @@ for ( ;; ) {                                            /* device loop */
             if (((uptr->flags & (UNIT_FIX + UNIT_ATTABLE)) != UNIT_FIX) ||
                  (dptr->deposit == NULL)) {
                 printf ("Can't restore memory: %s%d\n", sim_dname (dptr), unitno);
+                if (sim_log)
+                    fprintf (sim_log, "Can't restore memory: %s%d\n", sim_dname (dptr), unitno);
                 return SCPE_INCOMP;
                 }
             if (high != old_capac) {                    /* size change? */
@@ -2945,12 +2963,20 @@ for ( ;; ) {                                            /* device loop */
                      (dptr->msize (uptr, (int32) high, NULL, NULL) != SCPE_OK))) {
                     printf ("Can't change memory size: %s%d\n",
                         sim_dname (dptr), unitno);
+                    if (sim_log)
+                        fprintf (sim_log, "Can't change memory size: %s%d\n",
+                            sim_dname (dptr), unitno);
                     return SCPE_INCOMP;
                     }
                 uptr->capac = high;                     /* new memory size */
                 printf ("Memory size changed: %s%d = ", sim_dname (dptr), unitno);
                 fprint_capac (stdout, dptr, uptr);
                 printf ("\n");
+                if (sim_log) {
+                    fprintf (sim_log, "Memory size changed: %s%d = ", sim_dname (dptr), unitno);
+                    fprint_capac (sim_log, dptr, uptr);
+                    fprintf (sim_log, "\n");
+                    }
                 }
             sz = SZ_D (dptr);                           /* allocate buffer */
             if ((mbuf = calloc (SRBSIZ, sz)) == NULL)
@@ -2959,7 +2985,7 @@ for ( ;; ) {                                            /* device loop */
                 READ_I (blkcnt);                        /* block count */
                 if (blkcnt < 0)                         /* compressed? */
                     limit = -blkcnt;
-                else limit = sim_fread (mbuf, sz, blkcnt, rfile);
+                else limit = (int32)sim_fread (mbuf, sz, blkcnt, rfile);
                 if (limit <= 0)                         /* invalid or err? */
                     return SCPE_IOERR;
                 for (j = 0; j < limit; j++, k = k + (dptr->aincr)) {
@@ -2981,19 +3007,28 @@ for ( ;; ) {                                            /* device loop */
         READ_I (depth);                                 /* [V2.10+] depth */
         if ((rptr = find_reg (buf, NULL, dptr)) == NULL) {
             printf ("Invalid register name: %s %s\n", sim_dname (dptr), buf);
+            if (sim_log)
+                fprintf (sim_log, "Invalid register name: %s %s\n", sim_dname (dptr), buf);
             for (us = 0; us < depth; us++) {            /* skip values */
                 READ_I (val);
                 }
             continue;
             }
-        if (depth != rptr->depth)                       /* [V2.10+] mismatch? */
+        if (depth != rptr->depth) {                      /* [V2.10+] mismatch? */
             printf ("Register depth mismatch: %s %s, file = %d, sim = %d\n",
                 sim_dname (dptr), buf, depth, rptr->depth);
+            if (sim_log)
+                fprintf (sim_log, "Register depth mismatch: %s %s, file = %d, sim = %d\n",
+                    sim_dname (dptr), buf, depth, rptr->depth);
+            }
         mask = width_mask[rptr->width];                 /* get mask */
         for (us = 0; us < depth; us++) {                /* loop thru values */
             READ_I (val);                               /* read value */
-            if (val > mask)                             /* value ok? */
+            if (val > mask) {                           /* value ok? */
                 printf ("Invalid register value: %s %s\n", sim_dname (dptr), buf);
+                if (sim_log)
+                    fprintf (sim_log, "Invalid register value: %s %s\n", sim_dname (dptr), buf);
+                }
             else if (us < rptr->depth)                  /* in range? */
                 put_rval (rptr, us, val);
             }
@@ -3004,11 +3039,28 @@ for ( ;; ) {                                            /* device loop */
    may depend on the state of the device (in registers) to work correctly */
 for (j=0, r = SCPE_OK; j<attcnt; j++) {
     if (r == SCPE_OK) {
+        struct stat fstat;
+
         dptr = find_dev_from_unit (attunits[j]);
+        if ((!force_restore) && 
+            (!stat(attnames[j], &fstat)))
+            if (fstat.st_mtime > rstat.st_mtime + 30) {
+                r = SCPE_INCOMP;
+                printf ("Error Attaching %s to %s - the restore state is %d seconds older than the attach file\n", sim_dname (dptr), attnames[j], (int)(fstat.st_mtime - rstat.st_mtime));
+                printf ("restore with the -F switch to override this sanity check\n");
+                if (sim_log) {
+                    fprintf (sim_log, "Error Attaching %s to %s - the restore state is %d seconds older than the attach file\n", sim_dname (dptr), attnames[j], (int)(fstat.st_mtime - rstat.st_mtime));
+                    fprintf (sim_log, "restore with the -F switch to override this sanity check\n");
+                    }
+                continue;
+                }
         sim_switches = attswitches[j];
         r = scp_attach_unit (dptr, attunits[j], attnames[j]);/* reattach unit */
-        if (r != SCPE_OK)
+        if (r != SCPE_OK) {
             printf ("Error Attaching %s to %s\n", sim_dname (dptr), attnames[j]);
+            if (sim_log)
+                fprintf (sim_log, "Error Attaching %s to %s\n", sim_dname (dptr), attnames[j]);
+            }
         }
     free (attnames[j]);
     }
@@ -3714,7 +3766,7 @@ for (i = 0, j = addr; i < sim_emax; i++, j = j + dptr->aincr) {
             SZ_LOAD (sz, sim_eval[i], uptr->filebuf, loc);
             }
         else {
-            sim_fseek (uptr->fileref, sz * loc, SEEK_SET);
+            sim_fseek (uptr->fileref, (t_addr)(sz * loc), SEEK_SET);
             sim_fread (&sim_eval[i], sz, 1, uptr->fileref);
             if ((feof (uptr->fileref)) &&
                !(uptr->flags & UNIT_FIX)) {
@@ -3805,7 +3857,7 @@ for (i = 0, j = addr; i < count; i++, j = j + dptr->aincr) {
                 uptr->hwmark = (uint32) loc + 1;
             }
         else {
-            sim_fseek (uptr->fileref, sz * loc, SEEK_SET);
+            sim_fseek (uptr->fileref, (t_addr)(sz * loc), SEEK_SET);
             sim_fwrite (&sim_eval[i], sz, 1, uptr->fileref);
             if (ferror (uptr->fileref)) {
                 clearerr (uptr->fileref);
@@ -4332,7 +4384,7 @@ REG *find_reg (char *cptr, char **optr, DEVICE *dptr)
 {
 char *tptr;
 REG *rptr;
-uint32 slnt;
+size_t slnt;
 
 if ((cptr == NULL) || (dptr == NULL) || (dptr->registers == NULL))
     return NULL;
@@ -4517,7 +4569,8 @@ return pptr;
 
 SCHTAB *get_search (char *cptr, int32 radix, SCHTAB *schptr)
 {
-int32 c, logop, cmpop;
+int32 c;
+size_t logop, cmpop;
 t_value logval, cmpval;
 char *sptr, *tptr;
 const char logstr[] = "|&^", cmpstr[] = "=!><";
@@ -4547,11 +4600,11 @@ for (logop = cmpop = -1; c = *cptr++; ) {               /* loop thru clauses */
     else return NULL;
     }                                                   /* end for */
 if (logop >= 0) {
-    schptr->logic = logop;
+    schptr->logic = (int32)logop;
     schptr->mask = logval;
     }
 if (cmpop >= 0) {
-    schptr->boolop = cmpop;
+    schptr->boolop = (int32)cmpop;
     schptr->comp = cmpval;
     }
 return schptr;
diff --git a/sim_disk.c b/sim_disk.c
index 2325aa19..2f852262 100644
--- a/sim_disk.c
+++ b/sim_disk.c
@@ -126,7 +126,7 @@ struct disk_context *ctx = (struct disk_context *)uptr->disk_ctx;   \
 if ((!callback) || !ctx->asynch_io)
 
 #define AIO_CALL(op, _lba, _buf, _rsects, _sects,  _callback)   \
-    if (1) {                                                    \
+    if (ctx->asynch_io) {                                       \
         struct disk_context *ctx =                              \
                       (struct disk_context *)uptr->disk_ctx;    \
                                                                 \
@@ -146,7 +146,10 @@ if ((!callback) || !ctx->asynch_io)
         ctx->callback = _callback;                              \
         pthread_cond_signal (&ctx->io_cond);                    \
         pthread_mutex_unlock (&ctx->io_lock);                   \
-        }
+        }                                                       \
+    else                                                        \
+        if (_callback)                                          \
+            (_callback) (uptr, r);
 
 
 #define DOP_DONE  0             /* close */
@@ -470,7 +473,7 @@ if (!err) {
         memset (&buf[i*ctx->xfer_element_size], 0, tbc-(i*ctx->xfer_element_size));
     err = ferror (uptr->fileref);
     if ((!err) && (sectsread))
-        *sectsread = (i*ctx->xfer_element_size+ctx->sector_size-1)/ctx->sector_size;
+        *sectsread = (t_seccnt)((i*ctx->xfer_element_size+ctx->sector_size-1)/ctx->sector_size);
     }
 return err;
 }
@@ -584,7 +587,7 @@ if (!err) {
     i = sim_fwrite (buf, ctx->xfer_element_size, tbc/ctx->xfer_element_size, uptr->fileref);
     err = ferror (uptr->fileref);
     if ((!err) && (sectswritten))
-        *sectswritten = (i*ctx->xfer_element_size+ctx->sector_size-1)/ctx->sector_size;
+        *sectswritten = (t_seccnt)((i*ctx->xfer_element_size+ctx->sector_size-1)/ctx->sector_size);
     }
 return err;
 }
@@ -823,7 +826,7 @@ if (sim_switches & SWMASK ('C')) {                      /* create vhd disk & cop
     else {
         uint8 *copy_buf = malloc (1024*1024);
         t_lba lba;
-        t_seccnt sectors_per_buffer = (1024*1024)/sector_size;
+        t_seccnt sectors_per_buffer = (t_seccnt)((1024*1024)/sector_size);
         t_lba total_sectors = (t_lba)(uptr->capac/sector_size);
         t_seccnt sects = sectors_per_buffer;
 
@@ -891,12 +894,12 @@ uptr->disk_ctx = ctx = (struct disk_context *)calloc(1, sizeof(struct disk_conte
 if ((uptr->filename == NULL) || (uptr->disk_ctx == NULL))
     return _err_return (uptr, SCPE_MEM);
 strncpy (uptr->filename, cptr, CBUFSIZE);               /* save name */
-ctx->sector_size = sector_size;                         /* save sector_size */
-ctx->xfer_element_size = xfer_element_size;             /* save xfer_element_size */
+ctx->sector_size = (uint32)sector_size;                 /* save sector_size */
+ctx->xfer_element_size = (uint32)xfer_element_size;     /* save xfer_element_size */
 ctx->dptr = dptr;                                       /* save DEVICE pointer */
 ctx->dbit = dbit;                                       /* save debug bit */
 ctx->auto_format = auto_format;                         /* save that we auto selected format */
-ctx->storage_sector_size = sector_size;                 /* Default */
+ctx->storage_sector_size = (uint32)sector_size;         /* Default */
 if (sim_switches & SWMASK ('R')) {                      /* read only? */
     if ((uptr->flags & UNIT_ROABLE) == 0)               /* allowed? */
         return _err_return (uptr, SCPE_NORO);           /* no, error */
@@ -1467,7 +1470,7 @@ if (Removable) {
 return TRUE;
 }
 
-static t_stat sim_os_disk_info_raw (FILE *Disk, size_t *sector_size, uint32 *removable)
+static t_stat sim_os_disk_info_raw (FILE *Disk, uint32 *sector_size, uint32 *removable)
 {
 DWORD IoctlReturnSize;
 #ifndef __GNUC__
@@ -2819,7 +2822,7 @@ ExpandToFullPath (const char *szFileSpec,
                   size_t BufferSize)
 {
 #ifdef _WIN32
-GetFullPathNameA (szFileSpec, BufferSize, szFullFileSpecBuffer, NULL);
+GetFullPathNameA (szFileSpec, (DWORD)BufferSize, szFullFileSpecBuffer, NULL);
 #else
 strncpy (szFullFileSpecBuffer, szFileSpec, BufferSize);
 #endif
@@ -2902,14 +2905,14 @@ hVHD->Dynamic.ParentLocatorEntries[6].PlatformDataOffset = NtoHll (LocatorPositi
 if (RelativeMatch) {
     memcpy (hVHD->Dynamic.ParentLocatorEntries[5].PlatformCode, "W2ru", 4);
     hVHD->Dynamic.ParentLocatorEntries[5].PlatformDataSpace = NtoHl (BytesPerSector);
-    hVHD->Dynamic.ParentLocatorEntries[5].PlatformDataLength = NtoHl (2*strlen(RelativeParentVHDPath));
+    hVHD->Dynamic.ParentLocatorEntries[5].PlatformDataLength = NtoHl ((uint32)(2*strlen(RelativeParentVHDPath)));
     hVHD->Dynamic.ParentLocatorEntries[5].Reserved = 0;
     hVHD->Dynamic.ParentLocatorEntries[5].PlatformDataOffset = NtoHll (LocatorPosition+LocatorsWritten*BytesPerSector);
     ++LocatorsWritten;
     }
 memcpy (hVHD->Dynamic.ParentLocatorEntries[4].PlatformCode, "W2ku", 4);
 hVHD->Dynamic.ParentLocatorEntries[4].PlatformDataSpace = NtoHl (BytesPerSector);
-hVHD->Dynamic.ParentLocatorEntries[4].PlatformDataLength = NtoHl (2*strlen(FullParentVHDPath));
+hVHD->Dynamic.ParentLocatorEntries[4].PlatformDataLength = NtoHl ((uint32)(2*strlen(FullParentVHDPath)));
 hVHD->Dynamic.ParentLocatorEntries[4].Reserved = 0;
 hVHD->Dynamic.ParentLocatorEntries[4].PlatformDataOffset = NtoHll (LocatorPosition+LocatorsWritten*BytesPerSector);
 ++LocatorsWritten;
diff --git a/sim_ether.c b/sim_ether.c
index 5f33416a..82057c3c 100644
--- a/sim_ether.c
+++ b/sim_ether.c
@@ -56,7 +56,7 @@
 
   Supported/Tested Platforms:
 
-  Windows(NT,2K,XP,2K3)     WinPcap         V3.0+
+  Windows(NT,2K,XP,2K3,Vista,Win7)     WinPcap         V3.0+
   Linux                     libpcap at least 0.9
   OpenBSD,FreeBSD,NetBSD    libpcap at least 0.9
   MAC OS/X                  libpcap at least 0.9
@@ -72,13 +72,18 @@
   libpcap for VMS is available from: 
                         http://simh.trailing-edge.com/sources/vms-pcap.zip
   libpcap for other Unix platforms is available at: 
+        NOTE: As of the release of this version of sim_ether.c ALL current 
+              *nix platforms ship with a sufficiently new version of 
+              libpcap, and ALL provide a libpcap-dev package for developing
+              libpcap based applications.  The OS vendor supplied version
+              of libpcap AND the libpcap-dev components are preferred for
+              proper operation of both simh AND other applications on the 
+              host system which use libpcap.
         Current Version:  http://www.tcpdump.org/daily/libpcap-current.tar.gz
         Released Version: http://www.tcpdump.org/release/
-        Note: You can only use the released version if it is at least 
-              version 0.9
 
-        
-        We've gotten the tarball, unpacked, built and installed it with:
+        When necessary (see NOTE above about vendor supplied libpcap), 
+        we've gotten the tarball, unpacked, built and installed it with:
             gzip -dc libpcap-current.tar.gz | tar xvf -
             cd libpcap-directory-name
             ./configure
@@ -86,10 +91,8 @@
             make install
         Note:  The "make install" step generally will have to be done as root.
         This will install libpcap in /usr/local/lib and /usr/local/include
-        It is then important to make sure that you get the just installed 
-        libpcap components referenced during your build.  This is generally 
-        achieved by invoking gcc with: 
-             -isystem /usr/local/include -L /usr/local/lib
+        The current simh makefile will do the right thing to locate and 
+        reference the OS provided libpcap or the one just installed.
 
 
   Note: Building for the platforms indicated above, with the indicated libpcap, 
diff --git a/sim_fio.c b/sim_fio.c
index 671e8f39..c80c8020 100644
--- a/sim_fio.c
+++ b/sim_fio.c
@@ -96,7 +96,7 @@ if (sim_end || (count == 0) || (size == sizeof (char)))
     return;
 for (j = 0, dptr = sptr = (unsigned char *) bptr;       /* loop on items */
      j < count; j++) { 
-    for (k = size - 1; k >= (((int32) size + 1) / 2); k--) {
+    for (k = (int32)(size - 1); k >= (((int32) size + 1) / 2); k--) {
         by = *sptr;                                     /* swap end-for-end */
         *sptr++ = *(dptr + k);
         *(dptr + k) = by;
@@ -130,7 +130,7 @@ if (sim_end || (size == sizeof (char))) {
     return;
     }
 for (j = 0; j < count; j++) {                           /* loop on items */
-    for (k = size - 1; k >= 0; k--)
+    for (k = (int32)(size - 1); k >= 0; k--)
         *(dptr + k) = *sptr++;
     dptr = dptr + size;
     }
@@ -153,7 +153,7 @@ if (lcnt) nbuf = nbuf + 1;
 else lcnt = nelem;
 total = 0;
 sptr = (unsigned char *) bptr;                          /* init input ptr */
-for (i = nbuf; i > 0; i--) {                            /* loop on buffers */
+for (i = (int32)nbuf; i > 0; i--) {                     /* loop on buffers */
     c = (i == 1)? lcnt: nelem;
     sim_buf_copy_swapped (sim_flip, sptr, size, c);
     sptr = sptr + size * count;
diff --git a/sim_sock.c b/sim_sock.c
index 63c0f573..027f7f1d 100644
--- a/sim_sock.c
+++ b/sim_sock.c
@@ -90,7 +90,7 @@ void sim_close_sock (SOCKET sock, t_bool master)
 return;
 }
 
-SOCKET sim_setnonblock (SOCKET sock)
+int32 sim_setnonblock (SOCKET sock)
 {
 return SOCKET_ERROR;
 }
@@ -289,7 +289,7 @@ return;
 }
 
 #if defined (_WIN32)                                    /* Windows */
-SOCKET sim_setnonblock (SOCKET sock)
+int32 sim_setnonblock (SOCKET sock)
 {
 unsigned long non_block = 1;
 
@@ -297,7 +297,7 @@ return ioctlsocket (sock, FIONBIO, &non_block);         /* set nonblocking */
 }
 
 #elif defined (VMS)                                     /* VMS */
-SOCKET sim_setnonblock (SOCKET sock)
+int32 sim_setnonblock (SOCKET sock)
 {
 int non_block = 1;
 
diff --git a/sim_sock.h b/sim_sock.h
index 5d469519..d8531cbe 100644
--- a/sim_sock.h
+++ b/sim_sock.h
@@ -83,6 +83,6 @@ int32 sim_check_conn (SOCKET sock, t_bool rd);
 int32 sim_read_sock (SOCKET sock, char *buf, int32 nbytes);
 int32 sim_write_sock (SOCKET sock, char *msg, int32 nbytes);
 void sim_close_sock (SOCKET sock, t_bool master);
-SOCKET sim_setnonblock (SOCKET sock);
+int32 sim_setnonblock (SOCKET sock);
 
 #endif
diff --git a/sim_tape.c b/sim_tape.c
index a71aa54b..d66d584b 100644
--- a/sim_tape.c
+++ b/sim_tape.c
@@ -26,6 +26,7 @@
    Ultimately, this will be a place to hide processing of various tape formats,
    as well as OS-specific direct hardware access.
 
+   23-Jan-12    MP      Added support for Logical EOT detection while positioning
    05-Feb-11    MP      Refactored to prepare for SIM_ASYNC_IO support
                         Added higher level routines:
                             sim_tape_wreomrw    - erase remainder of tape & rewind
@@ -146,7 +147,7 @@ struct tape_context *ctx = (struct tape_context *)uptr->tape_ctx;       \
 if ((!callback) || !ctx->asynch_io)
 
 #define AIO_CALL(op, _buf, _bc, _fc, _max, _vbc, _gaplen, _bpi, _obj, _callback)\
-    if (1) {                                                            \
+    if (ctx->asynch_io) {                                               \
         struct tape_context *ctx =                                      \
                       (struct tape_context *)uptr->tape_ctx;            \
                                                                         \
@@ -167,7 +168,10 @@ if ((!callback) || !ctx->asynch_io)
         ctx->objupdate = _obj;                                          \
         ctx->callback = _callback;                                      \
         pthread_cond_signal (&ctx->io_cond);                            \
-        }
+        }                                                               \
+    else                                                                \
+        if (_callback)                                                  \
+            (_callback) (uptr, r);
 #define TOP_DONE  0             /* close */
 #define TOP_RDRF  1             /* sim_tape_rdrecf_a */
 #define TOP_RDRR  2             /* sim_tape_rdrecr_a */
@@ -248,7 +252,7 @@ struct tape_context *ctx = (struct tape_context *)uptr->tape_ctx;
                 ctx->io_status = sim_tape_spfilef (uptr, ctx->vbc, ctx->bc);
                 break;
             case TOP_SFRF:
-                ctx->io_status = sim_tape_spfilebyrecf (uptr, ctx->vbc, ctx->bc, ctx->fc);
+                ctx->io_status = sim_tape_spfilebyrecf (uptr, ctx->vbc, ctx->bc, ctx->fc, ctx->max);
                 break;
             case TOP_SPFR:
                 ctx->io_status = sim_tape_spfiler (uptr, ctx->vbc, ctx->bc);
@@ -761,7 +765,7 @@ if (rbc > max) {                                        /* rec out of range? */
     uptr->pos = opos;
     return MTSE_INVRL;
     }
-i = sim_fread (buf, sizeof (uint8), rbc, uptr->fileref);/* read record */
+i = (t_mtrlnt)sim_fread (buf, sizeof (uint8), rbc, uptr->fileref);/* read record */
 if (ferror (uptr->fileref)) {                           /* error? */
     MT_SET_PNU (uptr);
     uptr->pos = opos;
@@ -820,7 +824,7 @@ if (st = sim_tape_rdlntr (uptr, &tbc))                  /* read rec lnt */
 *bc = rbc = MTR_L (tbc);                                /* strip error flag */
 if (rbc > max)                                          /* rec out of range? */
     return MTSE_INVRL;
-i = sim_fread (buf, sizeof (uint8), rbc, uptr->fileref);/* read record */
+i = (t_mtrlnt)sim_fread (buf, sizeof (uint8), rbc, uptr->fileref);/* read record */
 if (ferror (uptr->fileref))                             /* error? */
     return sim_tape_ioerr (uptr);
 for ( ; i < rbc; i++)                                   /* fill with 0's */
@@ -1422,6 +1426,7 @@ return r;
         count   =       count of files to skip
         skipped =       pointer to number of files actually skipped
         recsskipped =   pointer to number of records skipped
+        check_leot =    flag to detect and stop skip between two successive tape marks
    Outputs:
         status  =       operation status
 
@@ -1435,14 +1440,23 @@ return r;
    data record error    updated
 */
 
-t_stat sim_tape_spfilebyrecf (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped)
+t_stat sim_tape_spfilebyrecf (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped, t_bool check_leot)
 {
 struct tape_context *ctx = (struct tape_context *)uptr->tape_ctx;
 t_stat st;
+t_bool last_tapemark = FALSE;
 uint32 filerecsskipped;
 
-sim_debug (ctx->dbit, ctx->dptr, "sim_tape_spfilebyrecf(unit=%d, count=%d)\n", uptr-ctx->dptr->units, count);
+sim_debug (ctx->dbit, ctx->dptr, "sim_tape_spfilebyrecf(unit=%d, count=%d, check_leot=%d)\n", uptr-ctx->dptr->units, count, check_leot);
 
+if (check_leot) {
+    t_mtrlnt rbc;
+
+    st = sim_tape_rdlntr (uptr, &rbc);
+    last_tapemark = (MTSE_TMK == st);
+    if ((st == MTSE_OK) || (st == MTSE_TMK))
+        sim_tape_rdlntf (uptr, &rbc);
+    }
 *skipped = 0;
 *recsskipped = 0;
 while (*skipped < count) {                              /* loopo */
@@ -1452,20 +1466,28 @@ while (*skipped < count) {                              /* loopo */
         if (st != MTSE_OK)
             break;
         }
-    if (st == MTSE_TMK)
+    if (st == MTSE_TMK) {
         *skipped = *skipped + 1;                        /* # files skipped */
+        if (check_leot && (filerecsskipped == 0) && last_tapemark) {
+            uint32 filefileskipped;
+            sim_tape_spfilebyrecr (uptr, 1, &filefileskipped, &filerecsskipped);
+            *skipped = *skipped - 1;                    /* adjust # files skipped */
+            return MTSE_LEOT;
+            }
+        last_tapemark = TRUE;
+        }
     else
         return st;
     }
 return MTSE_OK;
 }
 
-t_stat sim_tape_spfilebyrecf_a (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped, TAPE_PCALLBACK callback)
+t_stat sim_tape_spfilebyrecf_a (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped, t_bool check_leot, TAPE_PCALLBACK callback)
 {
 t_stat r = MTSE_OK;
 AIO_CALLSETUP
-    r = sim_tape_spfilebyrecf (uptr, count, skipped, recsskipped);
-AIO_CALL(TOP_SPFF, NULL, skipped, recsskipped, 0, count, 0, 0, NULL, callback);
+    r = sim_tape_spfilebyrecf (uptr, count, skipped, recsskipped, check_leot);
+AIO_CALL(TOP_SFRF, NULL, skipped, recsskipped, check_leot, count, 0, 0, NULL, callback);
 return r;
 }
 
@@ -1495,7 +1517,7 @@ uint32 totalrecsskipped;
 
 sim_debug (ctx->dbit, ctx->dptr, "sim_tape_spfilef(unit=%d, count=%d)\n", uptr-ctx->dptr->units, count);
 
-return sim_tape_spfilebyrecf (uptr, count, skipped, &totalrecsskipped);
+return sim_tape_spfilebyrecf (uptr, count, skipped, &totalrecsskipped, FALSE);
 }
 
 t_stat sim_tape_spfilef_a (UNIT *uptr, uint32 count, uint32 *skipped, TAPE_PCALLBACK callback)
@@ -1661,7 +1683,7 @@ else {
     if (flags & MTPOS_M_REV)                            /* reverse? */
         r = sim_tape_spfilebyrecr (uptr, files, filesskipped, &fileskiprecs);
     else
-        r = sim_tape_spfilebyrecf (uptr, files, filesskipped, &fileskiprecs);
+        r = sim_tape_spfilebyrecf (uptr, files, filesskipped, &fileskiprecs, (flags & MTPOS_M_DLE));
     if (r != MTSE_OK)
         return r;
     if (flags & MTPOS_M_REV)                            /* reverse? */
@@ -1762,7 +1784,8 @@ uint32 sim_tape_tpc_map (UNIT *uptr, t_addr *map)
 {
 t_addr tpos;
 t_tpclnt bc;
-uint32 i, objc;
+size_t i;
+uint32 objc;
 
 if ((uptr == NULL) || (uptr->fileref == NULL))
     return 0;
diff --git a/sim_tape.h b/sim_tape.h
index f851ff6e..3d9f785e 100644
--- a/sim_tape.h
+++ b/sim_tape.h
@@ -23,6 +23,7 @@
    used in advertising or otherwise to promote the sale, use or other dealings
    in this Software without prior written authorization from Robert M Supnik.
 
+   23-Jan-12    MP      Added support for Logical EOT detection while positioning
    05-Feb-11    MP      Add Asynch I/O support
    30-Aug-06    JDB     Added erase gap support
    14-Feb-06    RMS     Added variable tape capacity
@@ -99,6 +100,8 @@ typedef uint16          t_tpclnt;                       /* magtape rec lnt */
 #define MTPOS_M_REV     (1u << MTPOS_V_REV)            /* Reverse Direction */
 #define MTPOS_V_OBJ     1
 #define MTPOS_M_OBJ     (1u << MTPOS_V_OBJ)            /* Objects vs Records/Files */
+#define MTPOS_V_DLE     4
+#define MTPOS_M_DLE     (1u << MTPOS_V_DLE)            /* Detect LEOT */
 
 /* Return status codes */
 
@@ -112,6 +115,7 @@ typedef uint16          t_tpclnt;                       /* magtape rec lnt */
 #define MTSE_EOM        7                               /* end of medium */
 #define MTSE_RECE       8                               /* error in record */
 #define MTSE_WRP        9                               /* write protected */
+#define MTSE_LEOT       10                              /* Logical End Of Tape */
 
 typedef void (*TAPE_PCALLBACK)(UNIT *unit, t_stat status);
 
@@ -140,8 +144,8 @@ t_stat sim_tape_sprecsf (UNIT *uptr, uint32 count, uint32 *skipped);
 t_stat sim_tape_sprecsf_a (UNIT *uptr, uint32 count, uint32 *skipped, TAPE_PCALLBACK callback);
 t_stat sim_tape_spfilef (UNIT *uptr, uint32 count, uint32 *skipped);
 t_stat sim_tape_spfilef_a (UNIT *uptr, uint32 count, uint32 *skipped, TAPE_PCALLBACK callback);
-t_stat sim_tape_spfilebyrecf (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped);
-t_stat sim_tape_spfilebyrecf_a (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped, TAPE_PCALLBACK callback);
+t_stat sim_tape_spfilebyrecf (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped, t_bool check_leot);
+t_stat sim_tape_spfilebyrecf_a (UNIT *uptr, uint32 count, uint32 *skipped, uint32 *recsskipped, t_bool check_leot, TAPE_PCALLBACK callback);
 t_stat sim_tape_sprecr (UNIT *uptr, t_mtrlnt *bc);
 t_stat sim_tape_sprecr_a (UNIT *uptr, t_mtrlnt *bc, TAPE_PCALLBACK callback);
 t_stat sim_tape_sprecsr (UNIT *uptr, uint32 count, uint32 *skipped);
diff --git a/sim_timer.h b/sim_timer.h
index 56896f92..f628b2fd 100644
--- a/sim_timer.h
+++ b/sim_timer.h
@@ -31,21 +31,28 @@
 #ifndef _SIM_TIMER_H_
 #define _SIM_TIMER_H_   0
 
+/* Pick up a struct timespec definition if it is available */
 #include <time.h>
+#if defined(SIM_ASYNCH_IO) || defined(USE_READER_THREAD)
+#include <pthread.h>
+#endif
 
 #if defined (__APPLE__)
 #define HAVE_STRUCT_TIMESPEC 1   /* OSX defined the structure but doesn't tell us */
 #endif
 
-#ifndef CLOCK_REALTIME
+#if !defined(CLOCK_REALTIME)
 #define CLOCK_REALTIME 1
 #define NEED_CLOCK_GETTIME 1
-#ifndef HAVE_STRUCT_TIMESPEC
+#if !defined(HAVE_STRUCT_TIMESPEC)
 #define HAVE_STRUCT_TIMESPEC 1
+#if !defined(_TIMESPEC_DEFINED)
+#define _TIMESPEC_DEFINED
 struct timespec {
-        long tv_sec;
-        long tv_nsec;
+    long   tv_sec;
+    long   tv_nsec;
 };
+#endif /* _TIMESPEC_DEFINED */
 #endif /* HAVE_STRUCT_TIMESPEC */
 int clock_gettime(int clock_id, struct timespec *tp);
 #endif
diff --git a/sim_tmxr.c b/sim_tmxr.c
index 1fc4b25f..4cb866de 100644
--- a/sim_tmxr.c
+++ b/sim_tmxr.c
@@ -212,14 +212,14 @@ if (newsock != INVALID_SOCKET) {                        /* got a live one? */
         lp->cnms = sim_os_msec ();                      /* time of conn */
         if (!mp->buffered) {
             lp->txbpi = 0;                              /* init buf pointers */
-            lp->txbpr = lp->txbsz - strlen (msgbuf);
+            lp->txbpr = (int32)(lp->txbsz - strlen (msgbuf));
             lp->rxcnt = lp->txcnt = lp->txdrp = 0;      /* init counters */
             }
         else
             if (lp->txcnt > lp->txbsz)
                 lp->txbpr = (lp->txbpi + 1) % lp->txbsz;
             else
-                lp->txbpr = lp->txbsz - strlen (msgbuf);
+                lp->txbpr = (int32)(lp->txbsz - strlen (msgbuf));
         lp->tsta = 0;                                   /* init telnet state */
         lp->xmte = 1;                                   /* enable transmit */
         lp->dstb = 0;                                   /* default bin mode */
@@ -228,7 +228,7 @@ if (newsock != INVALID_SOCKET) {                        /* got a live one? */
         tmxr_linemsg (lp, msgbuf);                      /* beginning of buffer */
         lp->txbpi = psave;                              /* restore insertion pointer */
         tmxr_poll_tx (mp);                              /* flush output */
-        lp->txcnt -= strlen (msgbuf);                   /* adjust statistics */
+        lp->txcnt -= (int32)strlen (msgbuf);            /* adjust statistics */
         return i;
         }
     }                                                   /* end if newsock */
@@ -752,7 +752,7 @@ return SCPE_NOFNC;
 void tmxr_msg (SOCKET sock, char *msg)
 {
 if (sock)
-    sim_write_sock (sock, msg, strlen (msg));
+    sim_write_sock (sock, msg, (int32)strlen (msg));
 return;
 }
 
@@ -760,7 +760,7 @@ void tmxr_linemsg (TMLN *lp, char *msg)
 {
 int32 len;
 
-for (len = strlen (msg); len > 0; --len)
+for (len = (int32)strlen (msg); len > 0; --len)
     tmxr_putc_ln (lp, *msg++);
 return;
 }