diff --git a/xtrn/chat_pager/ircbot/pager.js b/xtrn/chat_pager/ircbot/pager.js
index 43a7c2b4c5413052c0a748cf56825778ce2670f1..857a309a0746165709dac2abd2939b72b504d218 100644
--- a/xtrn/chat_pager/ircbot/pager.js
+++ b/xtrn/chat_pager/ircbot/pager.js
@@ -23,7 +23,9 @@ var settings = load_settings(fullpath(this.dir + '../settings.ini'));
 
 if (bot_cfg !== null && settings !== null) {
 
-	var queue = new Queue(settings.queue.queue_name);
+	if (!settings.queue.disabled) {
+		var queue = new Queue(settings.queue.queue_name);
+	}
 	var timer = new Timer();
 	var scanner = new Scanner(settings.scanner);
 	var messages = [];
@@ -58,11 +60,21 @@ if (bot_cfg !== null && settings !== null) {
 		}
 	}
 
-	Bot_Commands["CHAT"] = new Bot_Command(0, false, false);
+	Bot_Commands["CHAT"] = new Bot_Command(90, false, false);
 	Bot_Commands["CHAT"].usage = get_cmd_prefix() + "!chat [node]";
 	Bot_Commands["CHAT"].command = function (target, onick, ouh, srv, lbl, cmd) {
-		var valname = "chat_" + cmd[1];
-		queue.write(system.timer, valname);
+		if (cmd.length > 0) {
+			var nn = parseInt(cmd[1]);
+			if (isNaN(nn) || nn < 1 || nn > system.node_list.length) {
+				return;
+			} else if (!settings.queue.disabled) {
+				var valname = "chat_" + cmd[1];
+				queue.write(system.timer, valname);
+			} else {
+				var valname = system.temp_dir + "syspage_response." + cmd[1];
+				file_touch(valname);
+			}
+		}
 	}
 
 } else {
diff --git a/xtrn/chat_pager/page_sysop.js b/xtrn/chat_pager/page_sysop.js
index 083466c84ab75a0fe9b6acb0ecd07b949d1d02ce..6159bcb57bef159034b8a9718db0d2d02471cc33 100644
--- a/xtrn/chat_pager/page_sysop.js
+++ b/xtrn/chat_pager/page_sysop.js
@@ -3,6 +3,8 @@ load('frame.js');
 load('progress-bar.js');
 load(js.exec_dir + 'lib.js');
 
+// Flush any existing named values (valname) and return the last one
+// (I haven't checked yet, but I assume Queue is FIFO)
 function get_last_queued_value(queue, valname) {
     var val, temp_val;
     while (typeof (temp_val = queue.read(valname)) !== 'undefined') {
@@ -11,9 +13,17 @@ function get_last_queued_value(queue, valname) {
     return val;
 }
 
+function get_node_response_time(filename) {
+    return (file_exists(filename) ? (file_date(filename) * 1000) : null);
+}
+
 function await_page_response(settings, frame) {
-    var queue = new Queue(settings.queue.queue_name);
-    var valname = "chat_" + bbs.node_num;
+    if (!settings.queue.disabled) {
+        var queue = new Queue(settings.queue.queue_name);
+        var valname = "chat_" + bbs.node_num;
+    } else {
+        var valname = system.temp_dir + 'syspage_response.' + bbs.node_num;
+    }
     var answered = false;
     var stime = system.timer;
     var utime = system.timer;
@@ -29,10 +39,13 @@ function await_page_response(settings, frame) {
             progress_bar.set_progress(
                 (((now - stime) * 1000) / settings.terminal.wait_time) * 100
             );
-            progress_bar.cycle();
             utime = now;
         }
-        var val = get_last_queued_value(queue, valname);
+        var val = (
+            !settings.queue.disabled
+            ? get_last_queued_value(queue, valname)
+            : get_node_response_time(valname)
+        );
         if (typeof val == 'number' && val > stime) answered = true;
         frame.cycle();
         bbs.node_sync();