diff --git a/rbutil/mkamsboot/dualboot/dualboot.S b/rbutil/mkamsboot/dualboot/dualboot.S
index 5210ba5..30afa5e 100644
--- a/rbutil/mkamsboot/dualboot/dualboot.S
+++ b/rbutil/mkamsboot/dualboot/dualboot.S
@@ -34,6 +34,9 @@
 .set GPIOD,     0xC80E0000
 .set CGU_PERI,  0xC80F0014

+.set CGU_DBOP,  0xC80F0038
+.set DBOP,      0xC8120000
+

 /* Vectors */

@@ -157,14 +160,56 @@ uclcopy:
         cmp     r1, #0             /* C3 = #0 means button pressed */
         beq     boot_of
 #elif defined(SANSA_C200V2)
-        /* check for RIGHT on C6, should changed to LEFT as soon as it
-         * known in which pin that is in order for consistency  */
-        ldr     r0, =GPIOC
-        mov     r1, #0
-        str     r1, [r0, #0x400]      /* set pin to output */
+        ldr     r0, =CGU_DBOP
+        mov     r1, #(1<<3)         @ no divider
+        str     r1, [r0]

-        ldr     r1, [r0, #256]        /* 1<<(6+2) */
-        cmp     r1, #0                /* C6 low means button pressed */
+        ldr     r0, =DBOP
+        ldr     r1, =0xe167e167
+        str     r1, [r0]            @ DBOP_TIMPOL_01
+        ldr     r1, =0xe167006e
+        str     r1, [r0, #4]        @ DBOP_TIMPOL_23
+
+        ldr     r2, =GPIOB
+        mov     r1, #0xc
+        str     r1, [r2, #0x420]    @ GPIOB_AFSEL
+        ldr     r2, =GPIOC
+        mov     r1, #0xff
+        str     r1, [r2, #0x420]    @ GPIOC_AFSEL
+
+        ldr     r1, =0x6006e
+        str     r1, [r0, #4]        @ DBOP_TIMPOL_23
+        ldr     r1, =0x52008
+        str     r1, [r0, #8]        @ DBOP_CTRL
+        ldr     r1, =0x6e167
+        str     r1, [r0]            @ DBOP_TIMPOL_01
+        ldr     r1, =0xa167e06f
+        str     r1, [r0, #4]        @ DBOP_TIMPOL_23
+
+1:      ldr     r1, [r0, #0xc]      @ DOBP_STAT
+        orrs    r1, r1, #(1<<10)
+        beq     1b                  @ make sure fifo is empty
+
+        ldr     r1, =0xe167e167
+        str     r1, [r0, #4]        @ DBOP_TIMPOL_23
+        mov     r1, #(1<<16)        @ enable write
+        orr     r1, r1, #(1<<12)    @ 16 bit data width
+        str     r1, [r0, #8]        @ DBOP_CTRL
+        mvn     r1, #0              @ 0xffff
+        strh    r1, [r0, #0x10]     @ DBOP_DOUT
+
+1:      ldr     r1, [r0, #0xc]      @ DOBP_STAT
+        orrs    r1, r1, #(1<<10)
+        beq     1b                  @ make sure fifo is empty
+
+        mov     r1, #31
+        orr     r1, r1, #(1<<12)    @ 16 bit data width
+        orr     r1, r1, #(1<<15)    @ start read
+        str     r1, [r0, #8]        @ DBOP_CTRL
+
+        ldrh    r1, [r0, #0x14]     @ DBOP_DIN
+
+        ands    r1, r1, #(1<<2)     @ button left
         beq     boot_of
 #elif defined(SANSA_M200V4)
 .set row, (1<<5) /* enable output on A5 */