Index: ram/ptdisp.c
===================================================================
--- ram/ptdisp.c	(revision fa5007636147a8ab53fddf39eaa7874735b84e5b)
+++ ram/ptdisp.c	(revision 26553e220dab452fa582e6e93bbb7bf903759c16)
@@ -9,5 +9,5 @@
 
 uint16_t	seqflag[16];		/* sequence flags */
-uint16_t	seqline[16];		/* current sequencer line */
+int16_t		seqline[16];		/* current sequencer line */
 uint16_t	seqstim[16];		/* sequence stimulus */
 uint16_t	seqtime[16];		/* sequence timers */
Index: ram/ptdisp.x
===================================================================
--- ram/ptdisp.x	(revision fa5007636147a8ab53fddf39eaa7874735b84e5b)
+++ ram/ptdisp.x	(revision 26553e220dab452fa582e6e93bbb7bf903759c16)
@@ -20,5 +20,5 @@
 extern	int8_t		*ptmcon[];
 extern	uint16_t	seqflag[16];
-extern	uint16_t	seqline[16];
+extern	int16_t		seqline[16];
 extern	uint16_t	seqstim[16];
 extern	struct	seqent	seqtab[NSLINES];
Index: ram/sqexec.c
===================================================================
--- ram/sqexec.c	(revision fa5007636147a8ab53fddf39eaa7874735b84e5b)
+++ ram/sqexec.c	(revision 26553e220dab452fa582e6e93bbb7bf903759c16)
@@ -21,8 +21,10 @@
 #endif
 
-int16_t	seqdspn;
-
-int16_t	rtab[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F,
-		   0x003F, 0x003F, 0x003F };
+int16_t		seqdspn;
+
+uint16_t	rtab[] = {
+			0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F,
+			0x003F, 0x003F, 0x003F
+};
 
 /*
@@ -50,5 +52,5 @@
 	case SQ_RND:	/* random number */
 
-		return((int16_t)rand24() & rtab[SQ_MVAL & dat]);
+		return((uint16_t)rand24() & rtab[SQ_MVAL & dat]);
 
 	default:	/* something weird got in here ... */
@@ -64,5 +66,5 @@
 */
 
-int16_t dosqact(uint16_t seq, uint16_t act, uint16_t dat)
+int16_t dosqact(int16_t seq, uint16_t act, uint16_t dat)
 {
 	register uint16_t obj, val;
@@ -105,5 +107,5 @@
 		trstate[val] = 1;
 		putwq(&ptefifo, (0x1100 | val));
-		seqdupd |= (1 << val);
+		seqdupd |= ((uint16_t)1 << val);
 		return(0);
 
@@ -111,5 +113,5 @@
 
 		trstate[val] = 0;
-		seqdupd |= (1 << val);
+		seqdupd |= ((uint16_t)1 << val);
 		return(0);
 
@@ -121,5 +123,5 @@
 			putwq(&ptefifo, (0x1100 | val));
 
-		seqdupd |= (1 << val);
+		seqdupd |= ((uint16_t)1 << val);
 		return(0);
 
@@ -131,5 +133,5 @@
 
 		sregval[obj] = evaltv(dat);
-		seqdupd |= (1 << obj);
+		seqdupd |= ((uint16_t)1 << obj);
 		return(0);
 
@@ -138,23 +140,23 @@
 		if (dat & SQ_MFLG) {
 
-			sv = sregval[obj] - evaltv(dat);
+			sv = (int16_t)(sregval[obj] - evaltv(dat));
 
 			if (sv < 0)
 				sv = 0;
 
-			sregval[obj] = sv;
+			sregval[obj] = (uint16_t)sv;
 
 		} else {
 
-			sv = sregval[obj] + evaltv(dat);
+			sv = (int16_t)(sregval[obj] + evaltv(dat));
 
 			if (sv > 99)
 				sv = 99;
 
-			sregval[obj] = sv;
+			sregval[obj] = (uint16_t)sv;
 
 		}
 
-		seqdupd |= (1 << obj);
+		seqdupd |= ((uint16_t)1 << obj);
 		return(0);
 
@@ -195,9 +197,9 @@
 	case SQ_JUMP:			/* Jump to sequence line */
 
-		seqline[seq]  = dat;
+		seqline[seq]  = (int16_t)dat;
 		seqtime[seq]  = seqtab[dat].seqtime;
 		seqflag[seq] |= SQF_CLK;
 
-		seqdupd |= (1 << seq);
+		seqdupd |= ((uint16_t)1 << seq);
 		return(-1);
 
@@ -209,5 +211,5 @@
 		seqtime[seq] = 0;
 
-		seqdupd |= (1 << seq);
+		seqdupd |= ((uint16_t)1 << seq);
 		return(-1);
 
@@ -221,9 +223,9 @@
 */
 
-void sqexec(uint16_t seq)
+void sqexec(int16_t seq)
 {
-	register uint16_t act, dat, line;
+	register uint16_t act, dat;
 	register struct seqent *sp;
-	register int16_t rc;
+	register int16_t line, rc;
 
 	line = seqline[seq];
@@ -291,5 +293,5 @@
 #endif
 
-	seqdupd |= (1 << seq);
+	seqdupd |= ((uint16_t)1 << seq);
 }
 
@@ -302,6 +304,6 @@
 void seqproc(void)
 {
-	register uint16_t oldsr, seq;
-	register int16_t dspn;
+	register uint16_t oldsr;
+	register int16_t seq, dspn;
 	register uint16_t *fp;
 	int8_t  linbuf[66];
@@ -319,9 +321,9 @@
 
 					if (0 EQ --seqtime[seq])
-						*fp &= ~SQF_CLK;
+						*fp &= ~(uint16_t)SQF_CLK;
 
 				} else {
 
-					*fp &= ~SQF_CLK;
+					*fp &= ~(uint16_t)SQF_CLK;
 				}
 			}
@@ -344,5 +346,5 @@
 			ndisp, seqdupd);
 #endif
-		if (seqdupd & (1 << seqdspn)) {
+		if (seqdupd & ((uint16_t)1 << seqdspn)) {
 
 			dspn = seqdspn;
@@ -371,5 +373,5 @@
 				  PDSEQRN : PDSEQFG) << 4) | PDSEQBG, 16);
 #endif
-			seqdupd &= ~(1 << dspn);
+			seqdupd &= ~((uint16_t)1 << dspn);
 		}
 
Index: ram/sqexec.x
===================================================================
--- ram/sqexec.x	(revision fa5007636147a8ab53fddf39eaa7874735b84e5b)
+++ ram/sqexec.x	(revision 26553e220dab452fa582e6e93bbb7bf903759c16)
@@ -15,5 +15,5 @@
 */
 
-extern	int16_t		rtab[];
+extern	uint16_t	rtab[];
 extern	int16_t		seqdspn;
 
@@ -24,6 +24,6 @@
 */
 
-extern	int16_t		dosqact(uint16_t seq, uint16_t act, uint16_t dat);
+extern	int16_t		dosqact(int16_t seq, uint16_t act, uint16_t dat);
 extern	uint16_t	evaltv(uint16_t dat);
 extern	void		seqproc(void);
-extern	void		sqexec(uint16_t seq);
+extern	void		sqexec(int16_t seq);
