Index: tests/coroutine/devicedriver.cfa
===================================================================
--- tests/coroutine/devicedriver.cfa	(revision 0c81320eb90e67e2084f9afa0ef4a97e396c1568)
+++ tests/coroutine/devicedriver.cfa	(revision 571bf75fca1908eab72cd01b00ab71ac182c788c)
@@ -10,6 +10,6 @@
 // Created On       : Sat Mar 16 15:30:34 2019
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar 18 08:29:20 2019
-// Update Count     : 79
+// Last Modified On : Tue Mar 19 15:59:06 2019
+// Update Count     : 87
 // 
 
@@ -28,7 +28,14 @@
 } // next
 
+void checkCRC( Driver & d, unsigned int sum ) with( d ) {
+	suspend();
+	unsigned short int crc = byte << 8;					// sign extension over written
+	suspend();
+	// prevent sign extension for signed char
+	status = (crc | (unsigned char)byte) == sum ? MSG : ECRC;
+} // checkCRC
+
 void main( Driver & d ) with( d ) {
 	enum { STX = '\002', ESC = '\033', ETX = '\003', MaxMsg = 64 };
-	unsigned short int crc;								// error checking
   msg: for () {											// parse message
 		status = CONT;
@@ -52,8 +59,5 @@
 		} // for
 		msg[lnth] = '\0';								// terminate string
-		suspend();
-		crc = (unsigned char)byte << 8;	// prevent sign extension for signed char
-		suspend();
-		status = (crc | (unsigned char)byte) == sum ? MSG : ECRC;
+		checkCRC( d, sum );								// refactor CRC check
 		suspend();
 	} // for
