Index: rom/romp.c
===================================================================
--- rom/romp.c	(revision 8c8b4e5664e0c1a049b4575d5003752b342481d6)
+++ rom/romp.c	(revision 2a87ef34fd07974c881421fb76ef1350c42eb653)
@@ -501,11 +501,13 @@
 */
 
-uint16_t exp_c(uint16_t c)
-{
-	c &= 0x000F;
-	c |= c << 4;
-	c |= c << 8;
-
-	return(c);
+uint16_t exp_c(int16_t c)
+{
+	uint16_t r;
+
+	r = (uint16_t)c & 0x000F;
+	r |= r << 4;
+	r |= r << 8;
+
+	return(r);
 }
 
Index: rom/romp.x
===================================================================
--- rom/romp.x	(revision 8c8b4e5664e0c1a049b4575d5003752b342481d6)
+++ rom/romp.x	(revision 2a87ef34fd07974c881421fb76ef1350c42eb653)
@@ -153,5 +153,5 @@
 extern	void		dosw(int16_t nb, int16_t sv);
 extern	int16_t		dtext(int8_t *loc, int8_t *lastloc, int16_t nwide, int16_t unit);
-extern	uint16_t	exp_c(uint16_t c);
+extern	uint16_t	exp_c(int16_t c);
 extern	int16_t		getarg(void);
 extern	int16_t		getcmd(void);
