--- ./charset.c.org	Tue Jan 31 15:55:28 1995
+++ ./charset.c	Wed Feb 22 18:34:50 1995
@@ -260,6 +260,8 @@
 control_char(c)
 	int c;
 {
+	if (c == ESC)
+		return 0;
 	c &= 0377;
 	return (chardef[c] & IS_CONTROL_CHAR);
 }
@@ -274,14 +276,17 @@
 {
 	static char buf[8];
 
-	c &= 0377;
-	if (!control_char(c))
-		sprintf(buf, "%c", c);
-	else if (c == ESC)
-		sprintf(buf, "ESC");
-	else if (c < 128 && !control_char(c ^ 0100))
-		sprintf(buf, "^%c", c ^ 0100);
+	if(c == ESC)
+		sprintf(buf, "%c", ESC);
 	else
-		sprintf(buf, binfmt, c);
+	{
+		c &= 0377;
+		if (!control_char(c))
+			sprintf(buf, "%c", c);
+		else if (!control_char(c ^ 0100))
+			sprintf(buf, "^%c", c ^ 0100);
+		else
+			sprintf(buf, binfmt, c);
+	}
 	return (buf);
 }
