diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 4f7b497b2ec5e69cb568df9ba73631e27bf67f87..957736add671297900fb1b37fca364bf17dd834f 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -445,12 +445,27 @@ js_logout(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	return(JS_TRUE);
 }
 
+static JSBool
+js_reset_loop(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
+{
+	service_client_t* client;
+
+	if((client=(service_client_t*)JS_GetContextPrivate(cx))==NULL)
+		return(JS_FALSE);
+
+	client->js_loop=0;
+	*rval = JSVAL_VOID;
+	return(JS_TRUE);
+}
+
 static JSFunctionSpec js_global_functions[] = {
-	{"write",			js_write,			1},		/* write to client socket */
-	{"writeln",			js_writeln,			1},		/* write line to client socket */
-	{"log",				js_log,				1},		/* Log a string */
+	{"write",			js_write,			0},		/* write to client socket */
+	{"writeln",			js_writeln,			0},		/* write line to client socket */
+	{"print",			js_writeln,			0},		/* write line to client socket */
+	{"log",				js_log,				0},		/* Log a string */
  	{"login",			js_login,			2},		/* Login specified username and password */
 	{"logout",			js_logout,			0},		/* Logout user */
+	{"reset_loop",		js_reset_loop,		0},		/* reset loop counter */
     {0}
 };