Index: ram/asgvce.c
===================================================================
--- ram/asgvce.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/asgvce.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -94,5 +94,5 @@
 				newflag = TRUE;
 
-			se_disp(ep, D_FWD, gdstbc, 1);
+			se_disp((struct s_entry *)ep, D_FWD, gdstbc, 1);
 
 		} else {
@@ -139,5 +139,5 @@
 						      ep_adj(p_cur, 0, t_cur))->e_fwd;
 
-					se_disp(ep, D_FWD, gdstbc, 1);
+					se_disp((struct s_entry *)ep, D_FWD, gdstbc, 1);
 
 					if (lstendc < NLSTENTS)
@@ -251,5 +251,5 @@
 				      ep_adj(p_cur, 0, t_cur))->e_fwd;
 
-			se_disp(ep, D_FWD, gdstbc, 1);
+			se_disp((struct s_entry *)ep, D_FWD, gdstbc, 1);
 
 			if (t_cur EQ t_ctr)
Index: ram/dcopy.c
===================================================================
--- ram/dcopy.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/dcopy.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -22,5 +22,5 @@
 {
 	register FILE *fp;
-	register int8_t *from;
+	register uint8_t *from;
 	register int32_t wrtlen, loadlen, bsslen, txtlen;
 
@@ -59,5 +59,5 @@
 	/* write program header to disk */
 
-	from = &mphead;
+	from = (uint8_t *)&mphead;
 
 	for (wrtlen = sizeof mphead; wrtlen--; )
@@ -72,5 +72,5 @@
 	/* write MIDAS-VII to disk */
 
-	from = &Lo_RAM;
+	from = (uint8_t *)&Lo_RAM;
 
 	for (wrtlen = loadlen; wrtlen--; )
Index: ram/delnote.c
===================================================================
--- ram/delnote.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/delnote.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -78,5 +78,5 @@
 					/* scan right from note begin until: */
 
-					ep = bp->e_fwd;
+					ep = (struct n_entry *)bp->e_fwd;
 					scantag = TRUE;
 
@@ -102,5 +102,5 @@
 
 							if (cp EQ ep)
-								cp = cp->e_bak;
+								cp = (struct n_entry *)cp->e_bak;
 
 							if (p_ctr EQ ep)
@@ -116,10 +116,10 @@
 								p_cur = p_cur->e_bak;
 
-							e_del(e_rmv(ep));
+							e_del(e_rmv((struct s_entry *)ep));
 
 							/* delete note begin */
 
 							if (cp EQ bp)
-								cp = cp->e_bak;
+								cp = (struct n_entry *)cp->e_bak;
 
 							if (p_ctr EQ bp)
@@ -135,5 +135,5 @@
 								p_cur = p_cur->e_bak;
 
-							e_del(e_rmv(bp));
+							e_del(e_rmv((struct s_entry *)bp));
 
 							disptag = TRUE;
@@ -149,5 +149,5 @@
 
 							if (cp EQ bp)
-								cp = cp->e_bak;
+								cp = (struct n_entry *)cp->e_bak;
 
 							if (p_ctr EQ bp)
@@ -163,5 +163,5 @@
 								p_cur = p_cur->e_bak;
 
-							e_del(e_rmv(bp));
+							e_del(e_rmv((struct s_entry *)bp));
 
 							disptag = TRUE;
@@ -173,5 +173,5 @@
 						/* scan right */
 
-						ep = ep->e_fwd;
+						ep = (struct n_entry *)ep->e_fwd;
 
 					}	/* end while (scantag) */
@@ -181,5 +181,5 @@
 				/* scan left */
 
-				bp = bp->e_bak;
+				bp = (struct n_entry *)bp->e_bak;
 
 			}	/* end while (runtag) */
@@ -207,9 +207,9 @@
 		/* search current time for a bar marker - delete any found */
 
-		ep = ep_adj(p_cur, 1, ctime);
+		ep = (struct n_entry *)ep_adj(p_cur, 1, ctime);
 
 		while (ctime EQ ep->e_time) {
 
-			bp = ep->e_fwd;
+			bp = (struct n_entry *)ep->e_fwd;
 
 			if (EV_BAR EQ ep->e_type) {
@@ -227,5 +227,5 @@
 					p_fwd = p_fwd->e_bak;
 
-				e_del(e_rmv(ep));
+				e_del(e_rmv((struct s_entry *)ep));
 				disptag = TRUE;
 			}
Index: ram/delpnts.c
===================================================================
--- ram/delpnts.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/delpnts.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -103,6 +103,6 @@
 		/* move points down */
 
-		pp1 = &vp->idhpnt[pt1];
-		pp2 = &vp->idhpnt[pt2];
+		pp1 = (int8_t *)&vp->idhpnt[pt1];
+		pp2 = (int8_t *)&vp->idhpnt[pt2];
 
 		for (i = nmv * (int16_t)PT_SIZE; i > 0; i--)
@@ -153,6 +153,6 @@
 			/* move points down */
 
-			pp1 = &vp->idhpnt[pt1];
-			pp2 = &vp->idhpnt[pt2];
+			pp1 = (int8_t *)&vp->idhpnt[pt1];
+			pp2 = (int8_t *)&vp->idhpnt[pt2];
 
 			for (i = nmv * (int16_t)PT_SIZE; i > 0; i--)
@@ -244,6 +244,6 @@
 	for (k = 0; k < npts; k++) {		/* move things up */
 
-		fp1 = &ip->idhpnt[i--];
-		fp2 = &ip->idhpnt[j--];
+		fp1 = (int8_t *)&ip->idhpnt[i--];
+		fp2 = (int8_t *)&ip->idhpnt[j--];
 
 		for (l = 0; l < sizeof (struct instpnt); l++)
Index: ram/fcnote.c
===================================================================
--- ram/fcnote.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/fcnote.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -56,5 +56,5 @@
 			/* done -- can't see begin,  or note not there */
 
-			return(E_NULL);
+			return((struct n_entry *)E_NULL);
 
 		} else if ((et EQ EV_NEND) AND (en EQ tnote) AND (eg EQ grp)) {
@@ -62,5 +62,5 @@
 			/* done -- hit note end first -- notes overlap */
 
-			return(E_NULL);
+			return((struct n_entry *)E_NULL);
 
 		} else if ((et EQ EV_NBEG) AND (en EQ tnote) AND (eg EQ grp)) {
@@ -68,5 +68,5 @@
 			/* found note begin -- possible note starting at bp */
 
-			ep = bp->e_fwd;		/* scan to right of begin */
+			ep = (struct n_entry *)bp->e_fwd;	/* scan to right of begin */
 
 			FOREVER {	/* scan right from note begin */
@@ -81,5 +81,5 @@
 					/* hit note begin first -- done -- notes overlap */
 
-					return(E_NULL);
+					return((struct n_entry *)E_NULL);
 
 				} else if ((et EQ EV_NEND) AND (en EQ tnote) AND
@@ -97,8 +97,8 @@
 					/* hit score end -- done -- can't find end */
 
-					return(E_NULL);
+					return((struct n_entry *)E_NULL);
 				}
 
-				ep = ep->e_fwd;		/* scan right */
+				ep = (struct n_entry *)ep->e_fwd;	/* scan right */
 
 			}	/* end FOREVER */
@@ -106,5 +106,5 @@
 		}	/* end if */
 
-		bp = bp->e_bak;		/* scan left */
+		bp = (struct n_entry *)bp->e_bak;	/* scan left */
 
 	}	/* end FOREVER */
Index: ram/im700.c
===================================================================
--- ram/im700.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/im700.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -527,6 +527,6 @@
 	for (i = 0; i < NGPSRS; i++) {
 
-		valents[i].nxt = &valents[i];
-		valents[i].prv = &valents[i];
+		valents[i].nxt = (struct sment *)&valents[i];
+		valents[i].prv = (struct sment *)&valents[i];
 		valents[i].val = valof(i & 0x000F);
 	}
@@ -642,6 +642,6 @@
 			k = (i << 4) + fnoff[j];
 
-			funcndx[k][0] = &ip->idhfnc[j];
-			funcndx[k][1] = ip->idhpnt;
+			funcndx[k][0] = (int8_t *)&ip->idhfnc[j];
+			funcndx[k][1] = (int8_t *)ip->idhpnt;
 		}
 	}
@@ -736,5 +736,5 @@
 	e_key = nokey;
 	m_key = stdmkey;
-	d_key = nokey;
+	d_key = nodkey;
 
 	not_fld = nonf;
Index: ram/initi.c
===================================================================
--- ram/initi.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/initi.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -350,6 +350,6 @@
 
 		k = (voice << 4) + fnoff[j];
-		funcndx[k][0] = &ip->idhfnc[j];
-		funcndx[k][1] = ip->idhpnt;
+		funcndx[k][0] = (int8_t *)&ip->idhfnc[j];
+		funcndx[k][1] = (int8_t *)ip->idhpnt;
 	}
 
Index: ram/lcdlbls.c
===================================================================
--- ram/lcdlbls.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/lcdlbls.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -578,4 +578,15 @@
 /*
    =============================================================================
+	_l_load() -- forward processing to l_load()
+   =============================================================================
+*/
+
+void _l_load(void)
+{
+	l_load(1, 0);
+}
+
+/*
+   =============================================================================
 	l_load() -- process "Load" key
    =============================================================================
@@ -636,7 +647,7 @@
 		oldmkey = m_key;
 		d_key   = loadkey;
-		x_key   = l_load;
-		e_key   = l_load;
-		m_key   = l_load;
+		x_key   = _l_load;
+		e_key   = _l_load;
+		m_key   = _l_load;
 
 		loadsw = TRUE;
Index: ram/lcdlbls.x
===================================================================
--- ram/lcdlbls.x	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/lcdlbls.x	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -51,4 +51,5 @@
 extern	void		l_init(int16_t stat, int16_t _2);
 extern	void		l_inst(int16_t stat, int16_t _2);
+extern	void		_l_load(void);
 extern	void		l_load(int16_t stat, int16_t _2);
 extern	void		l_none(int16_t _1, int16_t _2);
Index: ram/localkb.c
===================================================================
--- ram/localkb.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/localkb.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -242,5 +242,5 @@
 					while (lstendc-- > 0) {	/* note ends */
 
-						ep = lstends[lstendc];
+						ep = (struct s_entry *)lstends[lstendc];
 						lstends[lstendc] = (struct n_entry *)NULL;
 
@@ -268,5 +268,5 @@
 					while (lstbgnc-- > 0) {	/* note begins */
 
-						ep = lstbgns[lstbgnc];
+						ep = (struct s_entry *)lstbgns[lstbgnc];
 						lstbgns[lstbgnc] = (struct n_entry *)NULL;
 
Index: ram/scselbx.c
===================================================================
--- ram/scselbx.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/scselbx.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -144,5 +144,5 @@
 */
 
-void svtdsp(uint16_t *obj, uint16_t fg, uint16_t bg, int16_t row, int16_t col, int8_t *buf)
+void svtdsp(volatile uint16_t *obj, int16_t fg, int16_t bg, int16_t row, int16_t col, int8_t *buf)
 {
 	(void)fg;
Index: ram/scselbx.x
===================================================================
--- ram/scselbx.x	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/scselbx.x	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -48,4 +48,4 @@
 extern	void		showsm(void);
 extern	void		showtm(void);
-extern	void		svtdsp(uint16_t *obj, uint16_t fg, uint16_t bg, int16_t row, int16_t col, int8_t *buf);
+extern	void		svtdsp(volatile uint16_t *obj, int16_t fg, int16_t bg, int16_t row, int16_t col, int8_t *buf);
 extern	void		svtstop(void);
Index: ram/sedump.c
===================================================================
--- ram/sedump.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/sedump.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -391,5 +391,5 @@
 	}
 
-	cura6 = A6PTR;
+	cura6 = (int32_t *)A6PTR;
 
 	while (cura6) {
@@ -400,5 +400,5 @@
 			cura6, olda6, *(cura6 + 4L));
 
-		prptr = cura6 + 8L;
+		prptr = (int16_t *)(cura6 + 8L);
 		n = 8;
 
Index: ram/showcfg.c
===================================================================
--- ram/showcfg.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/showcfg.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -313,5 +313,5 @@
 {
 	register int16_t i, np;
-	int16_t idbuf[8];
+	int8_t idbuf[8];
 	register int8_t *cfgdat, *cfp;
 
Index: ram/sqscan.c
===================================================================
--- ram/sqscan.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/sqscan.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -63,5 +63,5 @@
 	}
 
-	cval = spool;
+	cval = (struct s_entry *)spool;
 
 	if (ptr LT cval) {
@@ -75,5 +75,5 @@
 	}
 
-	cval = &spool[(int32_t)MAX_SE-1];
+	cval = (struct s_entry *)&spool[(int32_t)MAX_SE-1];
 
 	if (ptr GT cval) {
@@ -104,5 +104,6 @@
 	nsp->e_vel   = vel;
 
-	return(e_ins((struct s_entry *)nsp, ep_adj(p_cur, 0, t_cur))->e_fwd);
+	return((struct n_entry *)
+		e_ins((struct s_entry *)nsp, ep_adj(p_cur, 0, t_cur))->e_fwd);
 }
 
@@ -704,5 +705,5 @@
 		while (tsp2) {
 
-			tsp3 = &spool[0];
+			tsp3 = (struct s_entry *)&spool[0];
 
 			if (tsp2 LT tsp3) {
@@ -715,5 +716,5 @@
 			}
 
-			tsp3 = &spool[MAX_SE-1];
+			tsp3 = (struct s_entry *)&spool[MAX_SE-1];
 
 			if (tsp2 GT tsp3) {
@@ -840,5 +841,5 @@
 
 		noteon = t_cur;
-		p_cur = insnevt(nsp1, EV_NBEG, curgrp, notenum, 64);
+		p_cur = (struct s_entry *)insnevt(nsp1, EV_NBEG, curgrp, notenum, 64);
 
 		if (verbose)
@@ -857,5 +858,5 @@
 
 		noteoff = t_cur;
-		p_cur = insnevt(nsp1, EV_NEND, curgrp, notenum, 64);
+		p_cur = (struct s_entry *)insnevt(nsp1, EV_NEND, curgrp, notenum, 64);
 
 		if (verbose)
@@ -882,5 +883,5 @@
 		}
 
-		p_cur = insnevt(nsp1, EV_NBEG, curgrp, notenum, 64);
+		p_cur = (struct s_entry *)insnevt(nsp1, EV_NBEG, curgrp, notenum, 64);
 
 		if (E_NULL EQ (nsp1 = (struct n_entry *)e_alc(E_SIZE1))) {
@@ -915,5 +916,5 @@
 	}
 
-	p_cur = insnevt(nsp1, EV_NBEG, curgrp, notenum, 64);
+	p_cur = (struct s_entry *)insnevt(nsp1, EV_NBEG, curgrp, notenum, 64);
 
 	if (E_NULL EQ (nsp1 = (struct n_entry *)e_alc(E_SIZE1))) {
Index: ram/wdfield.c
===================================================================
--- ram/wdfield.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/wdfield.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -198,6 +198,6 @@
 	ip = &vbufs[curvce];			/* instrument definition */
 
-	ov = curwslt	? &ip->idhwvbo		/* offsets in definition */
-			: &ip->idhwvao;
+	ov = curwslt	? ip->idhwvbo		/* offsets in definition */
+			: ip->idhwvao;
 
 	cwnp   = wdcurct[curwdth][0];		/* number of points effected */
@@ -271,5 +271,5 @@
 
 	ip   = &vbufs[curvce];
-	ov   = curwslt ? &ip->idhwvbo : &ip->idhwvao;
+	ov   = curwslt ? ip->idhwvbo : ip->idhwvao;
 
 	ov[curwpnt] = curwoff << 5;	/* force current point value */
@@ -411,5 +411,5 @@
 	case 2:		/* harmonic selected */
 
-		hv = curwslt ? &ip->idhwvbh : &ip->idhwvah;
+		hv = curwslt ? ip->idhwvbh : ip->idhwvah;
 
 		curwhrv = abs(hv[curwhrm]) - cyrate;
@@ -514,5 +514,5 @@
 
 			ip = &vbufs[curvce];
-			hv = curwslt ? &ip->idhwvbh : &ip->idhwvah;
+			hv = curwslt ? ip->idhwvbh : ip->idhwvah;
 
 			if (hitbox EQ 0) {	/* waveshape area */
Index: ram/wsdsp.c
===================================================================
--- ram/wsdsp.c	(revision 7c5def4322be4f432cd667d03c188624872c8022)
+++ ram/wsdsp.c	(revision 72741f40bd3be649adcb12facf48298bf8e49980)
@@ -90,7 +90,7 @@
 
 	ip = &vbufs[curvce];
-	fv = curwslt ? &ip->idhwvbf : &ip->idhwvaf;
-	ov = curwslt ? &ip->idhwvbo : &ip->idhwvao;
-	hv = curwslt ? &ip->idhwvbh : &ip->idhwvah;
+	fv = curwslt ? ip->idhwvbf : ip->idhwvaf;
+	ov = curwslt ? ip->idhwvbo : ip->idhwvao;
+	hv = curwslt ? ip->idhwvbh : ip->idhwvah;
 
 	point = wdpoint;
