Index: rom/romp.c
===================================================================
--- rom/romp.c	(revision c59409ecb4964b2dfc1b86fabb892798f7c896e7)
+++ rom/romp.c	(revision 8c8b4e5664e0c1a049b4575d5003752b342481d6)
@@ -261,6 +261,7 @@
 		baroff,		/* bar 'off' color */
 		swon,		/* switch 'on' color */
-		swoff,		/* switch 'off' color */
-		*obj0;		/* object pointer */
+		swoff;		/* switch 'off' color */
+
+volatile 	uint16_t	*obj0;	/* object pointer */
 #endif
 
@@ -436,6 +437,6 @@
 void dobar(int16_t nb, int16_t bv)
 {
-	register uint16_t *bp;
-	register int16_t i;
+	volatile uint16_t *bp;
+	int16_t i;
 
 	if ((nb LT 1) OR (nb GT 82))
@@ -472,6 +473,7 @@
 void dosw(int16_t nb, int16_t sv)
 {
-	register uint16_t *bp, j;
-	register int16_t i;
+	volatile uint16_t *bp;
+	uint16_t j;
+	int16_t i;
 
 	if ((nb LT 1) OR (nb GT 82))
@@ -516,8 +518,8 @@
 int16_t cx_adsp(void)
 {
-	register int16_t xasig, xastat, xaval;
-	register int32_t xafi;
-	register int32_t lc;
-	register uint16_t *bp;
+	int16_t xasig, xastat, xaval;
+	int32_t xafi;
+	int32_t lc;
+	volatile uint16_t *bp;
 	int16_t	i, j, k;
 	int16_t	oldi;
@@ -529,5 +531,5 @@
 	vsndpal(dfltpal);
 
-	obj0 = (uint16_t *)0x200400L;
+	obj0 = (volatile uint16_t *)0x200400L;
 
 	SetObj(0, 0, 0, obj0, 512, 350, 0, 0, (V_RES3 | V_TDE), -1);
Index: rom/romp.x
===================================================================
--- rom/romp.x	(revision c59409ecb4964b2dfc1b86fabb892798f7c896e7)
+++ rom/romp.x	(revision 8c8b4e5664e0c1a049b4575d5003752b342481d6)
@@ -24,4 +24,6 @@
    =============================================================================
 */
+
+extern	volatile	uint16_t	*obj0;
 
 extern	int32_t		afi;
@@ -59,5 +61,4 @@
 extern	int8_t		*monptr;
 extern	int16_t		monsw;
-extern	uint16_t	*obj0;
 extern	uint16_t	*p_ba0;
 extern	uint16_t	*p_ba1;
