diff --git a/xtrn/lord2/lord2.js b/xtrn/lord2/lord2.js
index 37e4585416e7a7403da2e28b26324ad38ba2d8e1..30fd2a8f182f78ba698abd5389f05a1c4f9c6557 100644
--- a/xtrn/lord2/lord2.js
+++ b/xtrn/lord2/lord2.js
@@ -870,6 +870,7 @@ function lord_to_ansi(str)
 					ret += '\x1b[0;34m';
 					break;
 				case '*':
+					// TODO: This may not do 41...
 					ret += '\x1b[0;30;41m';
 					break;
 				case '2':
@@ -1036,20 +1037,20 @@ function more()
 	dk.console.attr.value = oa;
 }
 
-function lw(str) {
+function handle_lordcodes(str)
+{
 	var i;
 	var to;
 	var oop;
 	var snip = '';
 	var lwch;
 
-	str = replace_vars(str);
 	for (i=0; i<str.length; i += 1) {
 		if (str[i] === '`') {
 			sw(snip);
 			snip = '';
 			i += 1;
-			if (i > str.length) {
+			if (i >= str.length) {
 				break;
 			}
 			switch(str[i]) {
@@ -1111,6 +1112,7 @@ function lw(str) {
 					foreground(15);
 					break;
 				case '^':
+				case '*':
 					foreground(0);
 					break;
 				case 'b':
@@ -1126,7 +1128,7 @@ function lw(str) {
 				case 'r':
 				case 'R':
 					i += 1;
-					if (i > str.length) {
+					if (i >= str.length) {
 						break;
 					}
 					switch (str[i]) {
@@ -1163,7 +1165,11 @@ function lw(str) {
 		}
 	}
 	sw(snip);
+}
 
+function lw(str) {
+	str = replace_vars(str);
+	handle_lordcodes(str);
 }
 
 function lln(str)
@@ -1962,7 +1968,8 @@ function run_ref(sec, fname)
 					for (i = 0; i < 22; i++) {
 						if (p*22+i >= l.length)
 							continue;
-						lln(l[p*22+i]);
+						handle_lordcodes(l[p*22+i]);
+						sln('');
 					}
 					sattr = dk.console.attr.value;
 					dk.console.gotoxy(0, 22);