diff --git a/src/syncterm/SyncTERM.vcxproj b/src/syncterm/SyncTERM.vcxproj
index 1eda4c0680718eaf7f38b3ab87c290d7c0b1f8aa..9306dd03cc3ca8c3f2a147842c111c244b51ecc9 100644
--- a/src/syncterm/SyncTERM.vcxproj
+++ b/src/syncterm/SyncTERM.vcxproj
@@ -123,6 +123,7 @@
     <ClCompile Include="ooii_cmenus.c" />
     <ClCompile Include="ooii_logons.c" />
     <ClCompile Include="ooii_sounds.c" />
+    <ClCompile Include="ripper.c" />
     <ClCompile Include="rlogin.c" />
     <ClCompile Include="syncterm.c" />
     <ClCompile Include="telnet_io.c" />
diff --git a/src/syncterm/amigafont.h b/src/syncterm/amigafont.h
index 3452148e05ffef00b7ba92ffcaccce6c839f6650..3d523f1cc3549a669986e9ffefffa970585eeaca 100644
--- a/src/syncterm/amigafont.h
+++ b/src/syncterm/amigafont.h
@@ -36,7 +36,21 @@ struct FontList {
 	} entry[];
 };
 
-struct FontHeader {
+#if defined(_WIN32) || defined(__BORLANDC__)
+	#define PRAGMA_PACK
+#endif
+
+#if defined(PRAGMA_PACK) || defined(__WATCOMC__)
+	#define _PACK
+#else
+	#define _PACK __attribute__ ((packed))
+#endif
+
+#if defined(PRAGMA_PACK)
+	#pragma pack(push,1)			/* Disk image structures must be packed */
+#endif
+
+struct _PACK FontHeader {
 	uint8_t		ignore[0x6E];
 	uint16_t	height;
 	uint8_t		style;
@@ -52,6 +66,10 @@ struct FontHeader {
 	uint32_t	charlocOffset;
 	uint32_t	fontSpaceOffset;
 	uint32_t	kernOffset;
-} __attribute__((packed));	// TODO: Deal with Microsoft.
+};
+
+#if defined(PRAGMA_PACK)
+#pragma pack(pop)		/* original packing */
+#endif
 
 #endif
diff --git a/src/syncterm/ripper.c b/src/syncterm/ripper.c
index a289c3e2938ab19d356b33734798d9515fd77d74..e03f1f243e1144c2a5859cb4a5770bf3596b7f8a 100644
--- a/src/syncterm/ripper.c
+++ b/src/syncterm/ripper.c
@@ -3,6 +3,9 @@
  */
 #include <sys/stat.h>
 
+#if defined(_MSC_VER)
+	#define _USE_MATH_DEFINES // for C
+#endif
 #include <math.h>
 #include <string.h>
 #include <stdbool.h>
@@ -17,7 +20,9 @@
 #include <genwrap.h>
 #include <sockwrap.h>
 #include <strwrap.h>
-#include <unistd.h>
+#if defined(__unix__)
+	#include <unistd.h>
+#endif
 #include <vidmodes.h>
 #include <xpbeep.h>
 
diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index 79f00751de455a1c806cf13d2f363085d8b64fa4..8eb87d6e9f70c13c50f091c413c365f84089b376 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -2479,7 +2479,7 @@ BOOL doterm(struct bbslist *bbs)
 #endif
 	int ooii_mode=0;
 	recv_byte_buffer_len=recv_byte_buffer_pos=0;
-	struct mouse_state ms = {};
+	struct mouse_state ms = {0};
 	int speedwatch = 0;
 
 	gettextinfo(&txtinfo);