1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
diff --git a/rbutil/mkamsboot/dualboot/dualboot.S b/rbutil/mkamsboot/dualboot/du
index fe1a64b..7a2b230 100644
--- a/rbutil/mkamsboot/dualboot/dualboot.S
+++ b/rbutil/mkamsboot/dualboot/dualboot.S
@@ -157,10 +157,22 @@ uclcopy:
         cmp     r1, #0             /* C3 = #0 means button pressed */
         beq     boot_of
 #elif defined(SANSA_CLIPPLUS)
-        /* TODO */
+        ldr     r0, =GPIOA
+        ldr     r1, [r0, #0x400]    @ r1 = GPIOA_DIR
+        bic     r2, r1, #(1<<1)     @ A1 = input
+        str     r2, [r0, #0x400]    @ write back direction
+
+        ldr     r2, [r0, #4*(1<<1)] @ read A1
+        str     r1, [r0, #0x400]    @ write back original GPIOA_DIR
+
+        ands    r2, #(1<<1)         @ test A1
+        beq     immediate           @ boot immediately if unset
+
         mov     r0, #0x500000       /* Approximately 5 seconds */
 1:      subs    r0, r0, #1          /* just to prove we are running */
         bne     1b
+
+immediate:
         b       boot_of             /* branch to OF */
 #elif defined(SANSA_C200V2)
         /* check for RIGHT on C6, should changed to LEFT as soon as it