diff --git a/minichlink/minichlink.c b/minichlink/minichlink.c
index 7a2dc21c69eda0e8e3c5e235272717c37a292aaf..6e89a6dda74518b33f4e5a370b098ed1aa811635 100644
--- a/minichlink/minichlink.c
+++ b/minichlink/minichlink.c
@@ -41,6 +41,7 @@ int bootloader_len = 512;
 int main( int argc, char ** argv )
 {
 	int status;
+	int must_be_end = 0;
 	uint8_t rbuff[1024];
 
 	libusb_device_handle * devh = wch_link_base_setup();
@@ -50,6 +51,12 @@ int main( int argc, char ** argv )
 	{
 		char * argchar = argv[iarg];
 		if( argchar[0] != '-' ) goto help;
+		if( must_be_end )
+		{
+			fprintf( stderr, "Error: the command '%c' cannot be followed by other commands.\n", must_be_end );
+			return -1;
+		}
+		
 keep_going:
 		switch( argchar[1] )
 		{
@@ -65,8 +72,16 @@ keep_going:
 			case 'R':
 				// Part one "immediately" places the part into reset.  Part 2 says when we're done, leave part in reset.
 				wch_link_multicommands( devh, 2, 4, "\x81\x0d\x01\x02", 4, "\x81\x0d\x01\x01" );
+				must_be_end = 'R';
 				break;
 
+			// disable NRST pin (turn it into a GPIO)
+			case 'd': 
+				wch_link_multicommands( devh, 2, 11, "\x81\x06\x08\x02\xf7\xff\xff\xff\xff\xff\xff", 4, "\x81\x0b\x01\x01" );
+				break;
+			case 'D':
+				wch_link_multicommands( devh, 2, 11, "\x81\x06\x08\x02\xff\xff\xff\xff\xff\xff\xff", 4, "\x81\x0b\x01\x01" );
+				break;
 			// PROTECTION UNTESTED!
 			/*
 			case 'p':
@@ -185,6 +200,8 @@ help:
 	fprintf( stderr, " -f Disable 5V\n" );
 	fprintf( stderr, " -r Release from reest\n" );
 	fprintf( stderr, " -R Place into Reset\n" );
+	fprintf( stderr, " -D Configure NRST as GPIO\n" );
+	fprintf( stderr, " -d Configure NRST as NRST\n" );
 //	fprintf( stderr, " -P Enable Read Protection (UNTESTED)\n" );
 //	fprintf( stderr, " -p Disable Read Protection (UNTESTED)\n" );
 	fprintf( stderr, " -w [binary image to write]\n" );
diff --git a/minichlink/test.bat b/minichlink/test.bat
index 3f9a1bfd1df10365d470a54bc608834c137a23f8..912a017fa01887c3f7cadc63175b0d09bb5405d1 100644
--- a/minichlink/test.bat
+++ b/minichlink/test.bat
@@ -3,7 +3,8 @@
 tcc wch_erase.c libusb-1.0.dll
 tcc wch_reset.c libusb-1.0.dll
 tcc wch_write_simple.c libusb-1.0.dll
+tcc minichlink.c libusb-1.0.dll
 
-wch_erase.exe
-wch_write_simple.exe ..\barebones\barebones.bin
-wch_reset.exe
+rem wch_erase.exe
+rem wch_write_simple.exe ..\barebones\barebones.bin
+rem wch_reset.exe
diff --git a/sandbox/sandbox.c b/sandbox/sandbox.c
index d2a92cf91437ae191c48f70e48bcfea232b44593..895d1bc186f8e443552abd8044214d21678a7c48 100644
--- a/sandbox/sandbox.c
+++ b/sandbox/sandbox.c
@@ -61,6 +61,8 @@ int main()
 		GPIOD->BSHR = 1;
 		GPIOD->BSHR = 1<<16;
 		GPIOD->BSHR = 1;
+		Delay_Ms( 1 );
 		GPIOD->BSHR = (128+64+1)<<16;
+		Delay_Ms( 1 );
 	}
 }