Index: ram/gcurpos.c
===================================================================
--- ram/gcurpos.c	(revision f70aaad283907a81833976b54017ada93d1a9a41)
+++ ram/gcurpos.c	(revision f798356774f17aca78a3156d1009b48e0eab9f01)
@@ -247,5 +247,5 @@
 	op->objy = yloc + yo;
 	op->obase = arrows[ab + (xloc & 0x0001)];
-	op->odtw1 = 0x0400 | (0x03FF & (op->objx >> 1));
+	op->odtw1 = (uint16_t)(0x0400 | (0x03FF & (op->objx >> 1)));
 
 	SetPri(GCURS, GCPRI);
@@ -276,7 +276,7 @@
 */
 
-void arcurs(uint16_t icolor)
-{
-	register int16_t color;
+void arcurs(int16_t icolor)
+{
+	uint16_t color;
 
 	color = exp_c(icolor);
Index: ram/gcurpos.x
===================================================================
--- ram/gcurpos.x	(revision f70aaad283907a81833976b54017ada93d1a9a41)
+++ ram/gcurpos.x	(revision f798356774f17aca78a3156d1009b48e0eab9f01)
@@ -16,5 +16,5 @@
 
 extern	void		andcopy(volatile uint16_t *to, volatile uint16_t *from, uint16_t with, int16_t len);
-extern	void		arcurs(uint16_t icolor);
+extern	void		arcurs(int16_t icolor);
 extern	int16_t		gcurpos(int16_t xloc, int16_t yloc);
 extern	void		sgcoff(void);
