diff --git a/software/code.hex b/software/code.hex
index 3b8869c1b9cb04b4b4ff62fd54fb7ebed0fd87b1..371413ae5a8f4221cf74b166edbb2e5b4ed111b9 100644
--- a/software/code.hex
+++ b/software/code.hex
@@ -109,12 +109,12 @@
 @006B 4770B002
 @006C 00000284
 @006D 681B4B0A
-@006E 2200330C
+@006E 22003318
 @006F 4B08601A
-@0070 3308681B
+@0070 3310681B
 @0071 601A2200
 @0072 681B4B05
-@0073 22003304
+@0073 22003308
 @0074 4B03601A
 @0075 2200681B
 @0076 46C0601A
diff --git a/software/code.vmem b/software/code.vmem
index b60db45c80a5f867bada4f219de229e7f7ca486e..7420f6f63e1e8d11f6b9dba92f80d5e2ad689d0b 100644
--- a/software/code.vmem
+++ b/software/code.vmem
@@ -109,12 +109,12 @@
   assign memory[ 107 ] = 32'h4770B002;
   assign memory[ 108 ] = 32'h00000284;
   assign memory[ 109 ] = 32'h681B4B0A;
-  assign memory[ 110 ] = 32'h2200330C;
+  assign memory[ 110 ] = 32'h22003318;
   assign memory[ 111 ] = 32'h4B08601A;
-  assign memory[ 112 ] = 32'h3308681B;
+  assign memory[ 112 ] = 32'h3310681B;
   assign memory[ 113 ] = 32'h601A2200;
   assign memory[ 114 ] = 32'h681B4B05;
-  assign memory[ 115 ] = 32'h22003304;
+  assign memory[ 115 ] = 32'h22003308;
   assign memory[ 116 ] = 32'h4B03601A;
   assign memory[ 117 ] = 32'h2200681B;
   assign memory[ 118 ] = 32'h46C0601A;
diff --git a/software/code/main.lst b/software/code/main.lst
index 42e3e8a8da922a4a6d410fde4328cab4a084a4fc..9db66f19b0b7939658626b3246f719620cdb1083 100644
--- a/software/code/main.lst
+++ b/software/code/main.lst
@@ -1,4 +1,4 @@
-ARM GAS  /tmp/cci8IZ5Q.s 			page 1
+ARM GAS  /tmp/ccUFN2w6.s 			page 1
 
 
    1              		.syntax unified
@@ -58,7 +58,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
   55              		.type	SW_REGS, %object
   56              		.size	SW_REGS, 4
   57              	SW_REGS:
-ARM GAS  /tmp/cci8IZ5Q.s 			page 2
+ARM GAS  /tmp/ccUFN2w6.s 			page 2
 
 
   58 0000 00000040 		.word	1073741824
@@ -118,7 +118,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
   30:code/main.c   **** 
   31:code/main.c   ****   OUT_REGS[0] = value_0;
   83              		.loc 1 31 0
-ARM GAS  /tmp/cci8IZ5Q.s 			page 3
+ARM GAS  /tmp/ccUFN2w6.s 			page 3
 
 
   84 0004 034B     		ldr	r3, .L2	@ tmp111,
@@ -178,7 +178,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  131              		.cfi_endproc
  132              	.LFE1:
  133              		.size	write_out_1, .-write_out_1
-ARM GAS  /tmp/cci8IZ5Q.s 			page 4
+ARM GAS  /tmp/ccUFN2w6.s 			page 4
 
 
  134              		.align	2
@@ -238,7 +238,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  182              		.cfi_def_cfa_offset 8
  183 004a 0190     		str	r0, [sp, #4]	@ value_3, value_3
   45:code/main.c   **** 
-ARM GAS  /tmp/cci8IZ5Q.s 			page 5
+ARM GAS  /tmp/ccUFN2w6.s 			page 5
 
 
   46:code/main.c   ****   OUT_REGS[6] = value_3;
@@ -276,29 +276,29 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  212              		@ frame_needed = 0, uses_anonymous_args = 0
  213              		@ link register save eliminated.
   50:code/main.c   **** 	
-  51:code/main.c   ****   OUT_REGS[3] = 0;
+  51:code/main.c   ****   OUT_REGS[6] = 0;
  214              		.loc 1 51 0
  215 0060 0A4B     		ldr	r3, .L14	@ tmp117,
  216 0062 1B68     		ldr	r3, [r3]	@ D.4304, OUT_REGS
- 217 0064 0C33     		adds	r3, r3, #12	@ D.4304,
+ 217 0064 1833     		adds	r3, r3, #24	@ D.4304,
  218 0066 0022     		movs	r2, #0	@ tmp118,
  219 0068 1A60     		str	r2, [r3]	@ tmp118, *_3
-  52:code/main.c   ****   OUT_REGS[2] = 0;
+  52:code/main.c   ****   OUT_REGS[4] = 0;
  220              		.loc 1 52 0
  221 006a 084B     		ldr	r3, .L14	@ tmp119,
  222 006c 1B68     		ldr	r3, [r3]	@ D.4304, OUT_REGS
- 223 006e 0833     		adds	r3, r3, #8	@ D.4304,
+ 223 006e 1033     		adds	r3, r3, #16	@ D.4304,
  224 0070 0022     		movs	r2, #0	@ tmp120,
  225 0072 1A60     		str	r2, [r3]	@ tmp120, *_6
-  53:code/main.c   ****   OUT_REGS[1] = 0;
+  53:code/main.c   ****   OUT_REGS[2] = 0;
  226              		.loc 1 53 0
  227 0074 054B     		ldr	r3, .L14	@ tmp121,
  228 0076 1B68     		ldr	r3, [r3]	@ D.4304, OUT_REGS
- 229 0078 0433     		adds	r3, r3, #4	@ D.4304,
+ 229 0078 0833     		adds	r3, r3, #8	@ D.4304,
  230 007a 0022     		movs	r2, #0	@ tmp122,
  231 007c 1A60     		str	r2, [r3]	@ tmp122, *_9
   54:code/main.c   ****   OUT_REGS[0] = 0;
-ARM GAS  /tmp/cci8IZ5Q.s 			page 6
+ARM GAS  /tmp/ccUFN2w6.s 			page 6
 
 
  232              		.loc 1 54 0
@@ -339,9 +339,9 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  261 0090 024B     		ldr	r3, .L18	@ tmp113,
  262 0092 1B68     		ldr	r3, [r3]	@ D.4305, OUT_REGS
  263 0094 1B68     		ldr	r3, [r3]	@ D.4306, *_2
-  61:code/main.c   ****   return OUT_REGS[1];
-  62:code/main.c   ****   return OUT_REGS[2];
-  63:code/main.c   ****   return OUT_REGS[3];  
+  61:code/main.c   ****   return OUT_REGS[2];
+  62:code/main.c   ****   return OUT_REGS[4];
+  63:code/main.c   ****   return OUT_REGS[6];  
   64:code/main.c   **** }
  264              		.loc 1 64 0
  265 0096 1800     		movs	r0, r3	@, <retval>
@@ -358,7 +358,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  276              		.global	read_switches
  277              		.code	16
  278              		.thumb_func
-ARM GAS  /tmp/cci8IZ5Q.s 			page 7
+ARM GAS  /tmp/ccUFN2w6.s 			page 7
 
 
  279              		.type	read_switches, %function
@@ -418,7 +418,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  325 00be 0190     		str	r0, [sp, #4]	@ addr, addr
   73:code/main.c   **** 
   74:code/main.c   ****   int status, switches_ready;
-ARM GAS  /tmp/cci8IZ5Q.s 			page 8
+ARM GAS  /tmp/ccUFN2w6.s 			page 8
 
 
   75:code/main.c   ****   
@@ -478,7 +478,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  369              		@ link register save eliminated.
   86:code/main.c   **** 
   87:code/main.c   ****   // this is a 'busy wait'
-ARM GAS  /tmp/cci8IZ5Q.s 			page 9
+ARM GAS  /tmp/ccUFN2w6.s 			page 9
 
 
   88:code/main.c   **** 
@@ -538,7 +538,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  104:code/main.c   **** 
  105:code/main.c   ****   write_out_0( 0x000 ); 
  408              		.loc 1 105 0
-ARM GAS  /tmp/cci8IZ5Q.s 			page 10
+ARM GAS  /tmp/ccUFN2w6.s 			page 10
 
 
  409 0106 0020     		movs	r0, #0	@,
@@ -598,7 +598,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  455 002e 08       		.byte	0x8
  456 002f 01010000 		.4byte	.LASF1
  457 0033 02       		.uleb128 0x2
-ARM GAS  /tmp/cci8IZ5Q.s 			page 11
+ARM GAS  /tmp/ccUFN2w6.s 			page 11
 
 
  458 0034 02       		.byte	0x2
@@ -658,7 +658,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  512 00a0 01       		.byte	0x1
  513 00a1 1D       		.byte	0x1d
  514 00a2 76000000 		.4byte	0x76
-ARM GAS  /tmp/cci8IZ5Q.s 			page 12
+ARM GAS  /tmp/ccUFN2w6.s 			page 12
 
 
  515 00a6 02       		.byte	0x2
@@ -718,7 +718,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  569 0112 25010000 		.4byte	0x125
  570 0116 06       		.uleb128 0x6
  571 0117 24020000 		.4byte	.LASF18
-ARM GAS  /tmp/cci8IZ5Q.s 			page 13
+ARM GAS  /tmp/ccUFN2w6.s 			page 13
 
 
  572 011b 01       		.byte	0x1
@@ -778,7 +778,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  626 0181 01       		.byte	0x1
  627 0182 5E010000 		.4byte	.LASF21
  628 0186 01       		.byte	0x1
-ARM GAS  /tmp/cci8IZ5Q.s 			page 14
+ARM GAS  /tmp/ccUFN2w6.s 			page 14
 
 
  629 0187 48       		.byte	0x48
@@ -838,7 +838,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  683 01ed 01       		.byte	0x1
  684 01ee 68000000 		.4byte	0x68
  685 01f2 04010000 		.4byte	.LFB9
-ARM GAS  /tmp/cci8IZ5Q.s 			page 15
+ARM GAS  /tmp/ccUFN2w6.s 			page 15
 
 
  686 01f6 2C010000 		.4byte	.LFE9
@@ -898,7 +898,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  740 0019 0B       		.uleb128 0xb
  741 001a 03       		.uleb128 0x3
  742 001b 0E       		.uleb128 0xe
-ARM GAS  /tmp/cci8IZ5Q.s 			page 16
+ARM GAS  /tmp/ccUFN2w6.s 			page 16
 
 
  743 001c 00       		.byte	0
@@ -958,7 +958,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  797 0053 03       		.uleb128 0x3
  798 0054 0E       		.uleb128 0xe
  799 0055 3A       		.uleb128 0x3a
-ARM GAS  /tmp/cci8IZ5Q.s 			page 17
+ARM GAS  /tmp/ccUFN2w6.s 			page 17
 
 
  800 0056 0B       		.uleb128 0xb
@@ -1018,7 +1018,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  854 008e 0C       		.uleb128 0xc
  855 008f 00       		.byte	0
  856 0090 00       		.byte	0
-ARM GAS  /tmp/cci8IZ5Q.s 			page 18
+ARM GAS  /tmp/ccUFN2w6.s 			page 18
 
 
  857 0091 09       		.uleb128 0x9
@@ -1078,7 +1078,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  911 00c8 0C       		.uleb128 0xc
  912 00c9 49       		.uleb128 0x49
  913 00ca 13       		.uleb128 0x13
-ARM GAS  /tmp/cci8IZ5Q.s 			page 19
+ARM GAS  /tmp/ccUFN2w6.s 			page 19
 
 
  914 00cb 11       		.uleb128 0x11
@@ -1138,7 +1138,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  968 0014 0200     		.2byte	0x2
  969 0016 7D       		.byte	0x7d
  970 0017 08       		.sleb128 8
-ARM GAS  /tmp/cci8IZ5Q.s 			page 20
+ARM GAS  /tmp/ccUFN2w6.s 			page 20
 
 
  971 0018 00000000 		.4byte	0
@@ -1198,7 +1198,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  1025              	.LLST5:
  1026 00a0 BC000000 		.4byte	.LFB7-.Ltext0
  1027 00a4 BE000000 		.4byte	.LCFI5-.Ltext0
-ARM GAS  /tmp/cci8IZ5Q.s 			page 21
+ARM GAS  /tmp/ccUFN2w6.s 			page 21
 
 
  1028 00a8 0200     		.2byte	0x2
@@ -1258,7 +1258,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  1071      745F3100 
  1072              	.LASF15:
  1073 0026 77726974 		.ascii	"write_out_2\000"
-ARM GAS  /tmp/cci8IZ5Q.s 			page 22
+ARM GAS  /tmp/ccUFN2w6.s 			page 22
 
 
  1073      655F6F75 
@@ -1318,7 +1318,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  1095      647900
  1096              	.LASF5:
  1097 011e 6C6F6E67 		.ascii	"long unsigned int\000"
-ARM GAS  /tmp/cci8IZ5Q.s 			page 23
+ARM GAS  /tmp/ccUFN2w6.s 			page 23
 
 
  1097      20756E73 
@@ -1378,7 +1378,7 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  1120              	.LASF10:
  1121 01c2 75696E74 		.ascii	"uint32_t\000"
  1121      33325F74 
-ARM GAS  /tmp/cci8IZ5Q.s 			page 24
+ARM GAS  /tmp/ccUFN2w6.s 			page 24
 
 
  1121      00
@@ -1410,43 +1410,43 @@ ARM GAS  /tmp/cci8IZ5Q.s 			page 1
  1136 022c 5F426F6F 		.ascii	"_Bool\000"
  1136      6C00
  1137              		.ident	"GCC: (GNU Tools for ARM Embedded Processors) 5.4.1 20160919 (release) [ARM/embedded-5-bran
-ARM GAS  /tmp/cci8IZ5Q.s 			page 25
+ARM GAS  /tmp/ccUFN2w6.s 			page 25
 
 
 DEFINED SYMBOLS
                             *ABS*:00000000 main.c
-     /tmp/cci8IZ5Q.s:57     .data:00000000 SW_REGS
-     /tmp/cci8IZ5Q.s:54     .data:00000000 $d
-     /tmp/cci8IZ5Q.s:63     .data:00000004 OUT_REGS
-     /tmp/cci8IZ5Q.s:66     .text:00000000 $t
-     /tmp/cci8IZ5Q.s:71     .text:00000000 write_out_0
-     /tmp/cci8IZ5Q.s:96     .text:00000014 $d
-     /tmp/cci8IZ5Q.s:100    .text:00000018 $t
-     /tmp/cci8IZ5Q.s:105    .text:00000018 write_out_1
-     /tmp/cci8IZ5Q.s:130    .text:0000002c $d
-     /tmp/cci8IZ5Q.s:134    .text:00000030 $t
-     /tmp/cci8IZ5Q.s:139    .text:00000030 write_out_2
-     /tmp/cci8IZ5Q.s:164    .text:00000044 $d
-     /tmp/cci8IZ5Q.s:168    .text:00000048 $t
-     /tmp/cci8IZ5Q.s:173    .text:00000048 write_out_3
-     /tmp/cci8IZ5Q.s:198    .text:0000005c $d
-     /tmp/cci8IZ5Q.s:202    .text:00000060 $t
-     /tmp/cci8IZ5Q.s:207    .text:00000060 set_out_invalid
-     /tmp/cci8IZ5Q.s:244    .text:0000008c $d
-     /tmp/cci8IZ5Q.s:248    .text:00000090 $t
-     /tmp/cci8IZ5Q.s:253    .text:00000090 read_out
-     /tmp/cci8IZ5Q.s:271    .text:0000009c $d
-     /tmp/cci8IZ5Q.s:275    .text:000000a0 $t
-     /tmp/cci8IZ5Q.s:280    .text:000000a0 read_switches
-     /tmp/cci8IZ5Q.s:306    .text:000000b8 $d
-     /tmp/cci8IZ5Q.s:310    .text:000000bc $t
-     /tmp/cci8IZ5Q.s:315    .text:000000bc check_switches
-     /tmp/cci8IZ5Q.s:354    .text:000000e8 $d
-     /tmp/cci8IZ5Q.s:358    .text:000000ec $t
-     /tmp/cci8IZ5Q.s:363    .text:000000ec wait_for_any_switch_data
-     /tmp/cci8IZ5Q.s:388    .text:00000100 $d
-     /tmp/cci8IZ5Q.s:392    .text:00000104 $t
-     /tmp/cci8IZ5Q.s:397    .text:00000104 main
+     /tmp/ccUFN2w6.s:57     .data:00000000 SW_REGS
+     /tmp/ccUFN2w6.s:54     .data:00000000 $d
+     /tmp/ccUFN2w6.s:63     .data:00000004 OUT_REGS
+     /tmp/ccUFN2w6.s:66     .text:00000000 $t
+     /tmp/ccUFN2w6.s:71     .text:00000000 write_out_0
+     /tmp/ccUFN2w6.s:96     .text:00000014 $d
+     /tmp/ccUFN2w6.s:100    .text:00000018 $t
+     /tmp/ccUFN2w6.s:105    .text:00000018 write_out_1
+     /tmp/ccUFN2w6.s:130    .text:0000002c $d
+     /tmp/ccUFN2w6.s:134    .text:00000030 $t
+     /tmp/ccUFN2w6.s:139    .text:00000030 write_out_2
+     /tmp/ccUFN2w6.s:164    .text:00000044 $d
+     /tmp/ccUFN2w6.s:168    .text:00000048 $t
+     /tmp/ccUFN2w6.s:173    .text:00000048 write_out_3
+     /tmp/ccUFN2w6.s:198    .text:0000005c $d
+     /tmp/ccUFN2w6.s:202    .text:00000060 $t
+     /tmp/ccUFN2w6.s:207    .text:00000060 set_out_invalid
+     /tmp/ccUFN2w6.s:244    .text:0000008c $d
+     /tmp/ccUFN2w6.s:248    .text:00000090 $t
+     /tmp/ccUFN2w6.s:253    .text:00000090 read_out
+     /tmp/ccUFN2w6.s:271    .text:0000009c $d
+     /tmp/ccUFN2w6.s:275    .text:000000a0 $t
+     /tmp/ccUFN2w6.s:280    .text:000000a0 read_switches
+     /tmp/ccUFN2w6.s:306    .text:000000b8 $d
+     /tmp/ccUFN2w6.s:310    .text:000000bc $t
+     /tmp/ccUFN2w6.s:315    .text:000000bc check_switches
+     /tmp/ccUFN2w6.s:354    .text:000000e8 $d
+     /tmp/ccUFN2w6.s:358    .text:000000ec $t
+     /tmp/ccUFN2w6.s:363    .text:000000ec wait_for_any_switch_data
+     /tmp/ccUFN2w6.s:388    .text:00000100 $d
+     /tmp/ccUFN2w6.s:392    .text:00000104 $t
+     /tmp/ccUFN2w6.s:397    .text:00000104 main
                      .debug_frame:00000010 $d
 
 NO UNDEFINED SYMBOLS
diff --git a/software/code/main.o b/software/code/main.o
index 094648b7651ef77abbba08e8467c572c2b06e5fc..33f4aa89b2d133b6ad3d00c1b1ce365b35a70adb 100644
Binary files a/software/code/main.o and b/software/code/main.o differ
diff --git a/software/test_designstart.elf b/software/test_designstart.elf
index b00e53de97f3be09040fe0ecaddec24eecd90941..407a9515ac89196903ee38c90348e5a0681b88c3 100755
Binary files a/software/test_designstart.elf and b/software/test_designstart.elf differ
diff --git a/software/test_designstart.hex b/software/test_designstart.hex
index f21b3eafc20385744f3bbcce6c417a3f408dac90..defde2d37e00231413fed4eb202281748159bf03 100644
--- a/software/test_designstart.hex
+++ b/software/test_designstart.hex
@@ -25,8 +25,8 @@
 :100180008402000082B00190034B1B681033019A77
 :100190001A60C04602B070478402000082B001902D
 :1001A000034B1B681833019A1A60C04602B07047AF
-:1001B000840200000A4B1B680C3300221A60084BB3
-:1001C0001B68083300221A60054B1B6804330022A9
+:1001B000840200000A4B1B68183300221A60084BA7
+:1001C0001B68103300221A60054B1B68083300229D
 :1001D0001A60034B1B6800221A60C0467047C04675
 :1001E00084020000024B1B681B6818007047C04661
 :1001F0008402000082B00190044B1A68019B9B00AE