Index: drawboard.c
===================================================================
RCS file: /sources/gnubg/gnubg/drawboard.c,v
retrieving revision 1.54
diff -u -r1.54 drawboard.c
--- drawboard.c	30 Jun 2008 21:22:58 -0000	1.54
+++ drawboard.c	15 Mar 2009 17:08:17 -0000
@@ -33,6 +33,7 @@
 #include "positionid.h"
 
 int fClockwise = FALSE; /* Player 1 moves clockwise */
+extern int fOutputCombineMoves;
 
 /*
  *  GNU Backgammon  Position ID: 0123456789ABCD 
@@ -615,81 +616,85 @@
     /* Order the moves in decreasing order of source point. */
     qsort( aanMove, 4, 4 * sizeof( int ), CompareMoves );
 
-    /* Combine moves of a single chequer. */
-    for( i = 0; i < 4; i++ )
-        for( j = i; j < 4; j++ )
-            if( pnSource[ i ] && pnSource[ j ] &&
-                *pnDest[ i ] == *pnSource[ j ] ) {
-                if( anBoard[ 0 ][ 24 - *pnDest[ i ] ] )
-                    /* Hitting blot; record intermediate point. */
-                    *++pnDest[ i ] = *pnDest[ j ];
-                else
-                    /* Non-hit; elide intermediate point. */
-                    *pnDest[ i ] = *pnDest[ j ];
-
-                pnSource[ j ] = NULL;           
-            }
+    if (fOutputCombineMoves) {
+        /* Combine moves of a single chequer. */
+        for( i = 0; i < 4; i++ )
+            for( j = i; j < 4; j++ )
+                if( pnSource[ i ] && pnSource[ j ] &&
+                    *pnDest[ i ] == *pnSource[ j ] ) {
+                    if( anBoard[ 0 ][ 24 - *pnDest[ i ] ] )
+                        /* Hitting blot; record intermediate point. */
+                        *++pnDest[ i ] = *pnDest[ j ];
+                    else
+                        /* Non-hit; elide intermediate point. */
+                        *pnDest[ i ] = *pnDest[ j ];
 
-    /* Compact array. */
-    i = 0;
+                    pnSource[ j ] = NULL;           
+                }
 
-    for( j = 0; j < 4; j++ )
-        if( pnSource[ j ] ) {
-            if( j > i ) {
-                pnSource[ i ] = pnSource[ j ];
-                pnDest[ i ] = pnDest[ j ];
-            }
+        /* Compact array. */
+        i = 0;
 
-	    i++;
-        }
+        for( j = 0; j < 4; j++ )
+            if( pnSource[ j ] ) {
+                if( j > i ) {
+                    pnSource[ i ] = pnSource[ j ];
+                    pnDest[ i ] = pnDest[ j ];
+                }
 
-    while( i < 4 )
-        pnSource[ i++ ] = NULL;
+    	    i++;
+            }
 
+        while( i < 4 )
+            pnSource[ i++ ] = NULL;
+    }
+    
     for ( i = 0; i < 4; i++)
         anCount[i] = pnSource[i] ? 1 : 0;
 
-    for ( i = 0; i < 3; i++) {
-        if (pnSource[i]) {
-            nMoves = pnDest[i] - pnSource[i];
-            for (j = i + 1; j < 4; j++) {
-                if (pnSource[j]) {
-                    nDuplicate = 1;
+    if (fOutputCombineMoves) {
+        for ( i = 0; i < 3; i++) {
+            if (pnSource[i]) {
+                nMoves = pnDest[i] - pnSource[i];
+                for (j = i + 1; j < 4; j++) {
+                    if (pnSource[j]) {
+                        nDuplicate = 1;
 		    
-                    if (pnDest[j] - pnSource[j] != nMoves)
-                        nDuplicate = 0;
-                    else
-                        for (k = 0; k <= nMoves && nDuplicate; k++)
-			    {
-				if (pnSource[i][k] != pnSource[j][k])
-				    nDuplicate = 0;
-			    }
-                    if (nDuplicate) {
-                        anCount[i]++;
-                        pnSource[j] = NULL;
+                        if (pnDest[j] - pnSource[j] != nMoves)
+                            nDuplicate = 0;
+                        else
+                            for (k = 0; k <= nMoves && nDuplicate; k++)
+    			    {
+    				if (pnSource[i][k] != pnSource[j][k])
+    				    nDuplicate = 0;
+    			    }
+                        if (nDuplicate) {
+                            anCount[i]++;
+                            pnSource[j] = NULL;
+                        }
                     }
                 }
             }
         }
-    }
 
-    /* Compact array. */
-    i = 0;
+        /* Compact array. */
+        i = 0;
 
-    for( j = 0; j < 4; j++ )
-        if( pnSource[ j ] ) {
-            if( j > i ) {
-                pnSource[ i ] = pnSource[ j ];
-                pnDest[ i ] = pnDest[ j ];
-		anCount[ i ] = anCount[ j ];
-            }
-
-	    i++;
-        }
+        for( j = 0; j < 4; j++ )
+            if( pnSource[ j ] ) {
+                if( j > i ) {
+                    pnSource[ i ] = pnSource[ j ];
+                    pnDest[ i ] = pnDest[ j ];
+    		anCount[ i ] = anCount[ j ];
+                }
 
-    if( i < 4 )
-        pnSource[ i ] = NULL;
+    	    i++;
+            }
 
+        if( i < 4 )
+            pnSource[ i ] = NULL;
+    }
+    
     for( i = 0; i < 4 && pnSource[ i ]; i++ ) {
         if( i )
             *pch++ = ' ';
Index: gnubg.c
===================================================================
RCS file: /sources/gnubg/gnubg/gnubg.c,v
retrieving revision 1.832
diff -u -r1.832 gnubg.c
--- gnubg.c	14 Mar 2009 00:10:17 -0000	1.832
+++ gnubg.c	15 Mar 2009 17:08:29 -0000
@@ -223,6 +223,7 @@
 int fGotoFirstGame = FALSE;
 int fInvertMET = FALSE;
 int fJacoby = TRUE;
+int fOutputCombineMoves = TRUE;
 int fOutputRawboard = FALSE;
 int fPlayersAreSame = TRUE;
 int fRecord = TRUE;
@@ -3211,11 +3212,13 @@
 
     fprintf( pf, "set output matchpc %s\n"
 	     "set output mwc %s\n"
+	     "set output combinemoves %s\n"
 	     "set output rawboard %s\n"
 	     "set output winpc %s\n"
              "set output digits %d\n"
              "set output errorratefactor %s\n",
 	     fOutputMatchPC ? "on" : "off",
+	     fOutputCombineMoves ? "on" : "off",
 	     fOutputMWC ? "on" : "off",
 	     fOutputRawboard ? "on" : "off",
 	     fOutputWinPC ? "on" : "off",
Index: set.c
===================================================================
RCS file: /sources/gnubg/gnubg/set.c,v
retrieving revision 1.327
diff -u -r1.327 set.c
--- set.c	12 Mar 2009 21:10:45 -0000	1.327
+++ set.c	15 Mar 2009 17:08:34 -0000
@@ -2776,6 +2776,13 @@
 	       _("Match evaluations will be shown as equivalent money equity.") );
 }
 
+extern void CommandSetOutputCombineMoves( char *sz ) {
+
+    SetToggle( "output combinemoves", &fOutputCombineMoves, sz,
+	       _("Moves output will be in standard combined format."),
+	       _("Moves output will be in non standard non combined format.") );
+}
+
 extern void CommandSetOutputRawboard( char *sz ) {
 
     SetToggle( "output rawboard", &fOutputRawboard, sz,
Index: backgammon.h
===================================================================
RCS file: /sources/gnubg/gnubg/backgammon.h,v
retrieving revision 1.404
diff -u -r1.404 backgammon.h
--- backgammon.h	13 Mar 2009 23:52:28 -0000	1.404
+++ backgammon.h	15 Mar 2009 17:08:43 -0000
@@ -355,6 +355,7 @@
 extern int fInvertMET;
 extern int fJacoby;
 extern int fNextTurn;
+extern int fOutputCombineMoves;
 extern int fOutputRawboard;
 extern int fRecord;
 extern int fShowProgress;
@@ -824,6 +825,7 @@
 extern void CommandSetOutputErrorRateFactor(char *);
 extern void CommandSetOutputMatchPC(char *);
 extern void CommandSetOutputMWC(char *);
+extern void CommandSetOutputCombineMoves(char *);
 extern void CommandSetOutputRawboard(char *);
 extern void CommandSetOutputWinPC(char *);
 extern void CommandSetPanelWidth(char *);
Index: commands.inc
===================================================================
RCS file: /sources/gnubg/gnubg/commands.inc,v
retrieving revision 1.13
diff -u -r1.13 commands.inc
--- commands.inc	12 Mar 2009 21:10:44 -0000	1.13
+++ commands.inc	15 Mar 2009 17:08:49 -0000
@@ -638,6 +638,8 @@
       szONOFF, &cOnOff },
     { "mwc", CommandSetOutputMWC, N_("Show output in MWC (on) or "
       "equity (off) (match play only)"), szONOFF, &cOnOff },
+    { "combinemoves", CommandSetOutputCombineMoves, N_("Output standard combined moves "
+      "(on), or individual moves (off)"), szONOFF, &cOnOff },
     { "rawboard", CommandSetOutputRawboard, N_("Give FIBS \"boardstyle 3\" "
       "output (on), or an ASCII board (off)"), szONOFF, &cOnOff },
     { "winpc", CommandSetOutputWinPC,
