diff --git a/src/syncterm/Makefile b/src/syncterm/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..69dd49ac82bce6e0c3c03b7e546ba00103ed1e78
--- /dev/null
+++ b/src/syncterm/Makefile
@@ -0,0 +1,74 @@
+# Makefile
+
+#########################################################################
+# Makefile for Synchronet BBS Configuration Utility (SCFG)				#
+# For use with Borland C++ Builder 5+ or Borland C++ 5.5 for Win32      #
+# @format.tab-size 4													#
+#########################################################################
+
+# $Id$
+
+# Macros
+#DEBUG	=	1				# Comment out for release (non-debug) version
+#USE_FLTK=	1
+USE_UIFC32= 1
+CC		=	bcc32
+LD		=	ilink32
+SLASH	=	\\
+OFILE	=	obj
+EXEFILE	=	.exe
+EXEODIR	=	bcc.win32	# Executable output directory
+XPDEV   =       ..\xpdev
+UIFC    =       ..\uifc
+CIOLIB  =       ..\conio
+CFLAGS	=	-DSCFG -M -I..;$(UIFC);$(XPDEV);$(CIOLIB)
+DELETE	=	-@echo y | del 
+
+.path.c = .;$(UIFC);$(XPDEV);$(CIOLIB)
+.path.cpp = $(UIFC)
+
+# Enable auto-dependency checking
+.autodepend
+.cacheautodepend	
+
+# Optional compile flags (disable banner, warnings and such)
+CFLAGS	=	$(CFLAGS) -q -d -H -X- -w-csu -w-pch -w-ccc -w-rch -w-par -w-pro -w-8004
+#-w-aus
+
+# Debug or release build?
+!ifdef DEBUG
+CFLAGS	=	$(CFLAGS) -v -Od -D_DEBUG 
+LFLAGS	=	$(LFLAGS) -v
+EXEODIR	=	$(EXEODIR).debug
+!else
+EXEODIR	=	$(EXEODIR).release
+!endif
+LIBODIR =	$(EXEODIR)
+
+# Cross platform/compiler definitions
+!include targets.mk	# defines all targets
+!include objects.mk	# defines $(OBJS)
+
+OBJS = $(OBJS) $(EXEODIR)\uifc32.$(OFILE) \
+	$(EXEODIR)\ciolib.$(OFILE) $(EXEODIR)\ansi_cio.$(OFILE) $(EXEODIR)\win32cio.$(OFILE)
+CFLAGS  =   $(CFLAGS) -DUSE_UIFC32 -WM
+
+# Implicit C Compile Rule for SCFG
+.c.$(OFILE):
+	@$(CC) $(CFLAGS) -n$(EXEODIR) -c $<
+
+.cpp.$(OFILE):
+	@$(CC) $(CFLAGS) -n$(EXEODIR) -c $<
+
+# Create output directory if it doesn't exist
+$(EXEODIR):
+	@if not exist $(EXEODIR) mkdir $(EXEODIR)
+
+# Monolithic executable Build Rule
+$(EXEODIR)/syncterm.exe: $(OBJS)
+	@echo Linking $@
+        $(CC) $(CFLAGS) -e$@ $**
+
+clean:
+	@echo Deleting $(EXEODIR)
+	$(QUIET)$(DELETE) $(EXEODIR)\*
diff --git a/src/syncterm/objects.mk b/src/syncterm/objects.mk
index 7f2c7f7cbfecc6bcf1560bff60d7cc5c37ded5f8..3d48daa02b2c4b5780363b5698812c316037c5f1 100644
--- a/src/syncterm/objects.mk
+++ b/src/syncterm/objects.mk
@@ -1,13 +1,14 @@
-OBJS	:=	${LIBODIR}/syncterm.${OFILE} \
-			${LIBODIR}/bbslist.${OFILE} \
-			${LIBODIR}/uifcinit.${OFILE} \
-			${LIBODIR}/rlogin.${OFILE} \
-			${LIBODIR}/sockwrap.${OFILE} \
-			${LIBODIR}/dirwrap.${OFILE} \
-			${LIBODIR}/filewrap.${OFILE} \
-			${LIBODIR}/term.${OFILE} \
-			${LIBODIR}/genwrap.${OFILE} \
-			${LIBODIR}/ini_file.${OFILE} \
-			${LIBODIR}/str_list.${OFILE} \
-			${LIBODIR}/window.${OFILE} \
-			${LIBODIR}/menu.${OFILE}
+OBJS    =      $(LIBODIR)/syncterm.$(OFILE) \
+                        $(LIBODIR)/bbslist.$(OFILE) \
+                        $(LIBODIR)/uifcinit.$(OFILE) \
+                        $(LIBODIR)/rlogin.$(OFILE) \
+                        $(LIBODIR)/sockwrap.$(OFILE) \
+                        $(LIBODIR)/dirwrap.$(OFILE) \
+                        $(LIBODIR)/filewrap.$(OFILE) \
+                        $(LIBODIR)/cterm.$(OFILE) \
+                        $(LIBODIR)/term.$(OFILE) \
+                        $(LIBODIR)/genwrap.$(OFILE) \
+                        $(LIBODIR)/ini_file.$(OFILE) \
+                        $(LIBODIR)/str_list.$(OFILE) \
+                        $(LIBODIR)/window.$(OFILE) \
+                        $(LIBODIR)/menu.$(OFILE)
diff --git a/src/syncterm/rlogin.c b/src/syncterm/rlogin.c
index e914c8d87246f65869f42229fe5c65ed468523da..0ae44b150c72b6eb85631316f3c507a71b4cb0b0 100644
--- a/src/syncterm/rlogin.c
+++ b/src/syncterm/rlogin.c
@@ -51,6 +51,7 @@ int rlogin_connect(char *addr, int port, char *ruser, char *passwd, int bedumb)
 	char	nil=0;
 	char	*p;
 	unsigned int	neta;
+	unsigned long	l;
 
 	for(p=addr;*p;p++)
 		if(*p!='.' && !isdigit(*p))
@@ -92,7 +93,9 @@ int rlogin_connect(char *addr, int port, char *ruser, char *passwd, int bedumb)
 		return(-1);
 	}
 
-	fcntl(rlogin_socket, F_SETFL, fcntl(rlogin_socket, F_GETFL)|O_NONBLOCK);
+	l=1;
+	ioctlsocket(rlogin_socket, FIONBIO,&l);
+	/* fcntl(rlogin_socket, F_SETFL, fcntl(rlogin_socket, F_GETFL)|O_NONBLOCK); */
 
 	if(!bedumb) {
 		rlogin_send("",1,1000);
diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c
index 51866551a842af7cf2b196331278eb2d536b0087..ecde88d944023fff660fbae5e182c436a425483a 100644
--- a/src/syncterm/syncterm.c
+++ b/src/syncterm/syncterm.c
@@ -71,4 +71,5 @@ int main(int argc, char **argv)
 	if(WSAInitialized && WSACleanup()!=0) 
 		fprintf(stderr,"!WSACleanup ERROR %d",ERROR_VALUE);
 #endif
+	return(0);
 }
diff --git a/src/syncterm/targets.mk b/src/syncterm/targets.mk
index daba4416a6d1b5ffb7a0104ddcf52a31ce2164a6..5f07f586dd370c5e3781db5ad24af5ee91a828f0 100644
--- a/src/syncterm/targets.mk
+++ b/src/syncterm/targets.mk
@@ -1 +1 @@
-all: $(LIBODIR) $(BUILD_DEPENDS) ${EXEODIR}/syncterm
+all: $(LIBODIR) $(BUILD_DEPENDS) $(EXEODIR)/syncterm$(EXEFILE)
diff --git a/src/syncterm/uifcinit.c b/src/syncterm/uifcinit.c
index e81ec0f661aa28576e0f97bc43c8875f3c90d50b..ed3def1f3b7f5f74f95d9784143780d878456345 100644
--- a/src/syncterm/uifcinit.c
+++ b/src/syncterm/uifcinit.c
@@ -15,7 +15,7 @@ int	init_uifc(void) {
 		return(0);
 	uifc.size=sizeof(uifc);
 	uifc.mode=UIFC_IBM|UIFC_COLOR;
-	if(i=uifcini32(&uifc)) {
+	if((i=uifcini32(&uifc))!=0) {
 		fprintf(stderr,"uifc library init returned error %d\n",i);
 		return(-1);
 	}