diff options
author | YamaArashi <shadow962@live.com> | 2016-01-23 12:25:42 -0800 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-01-23 12:25:42 -0800 |
commit | 1362b60f3467f0894d55e82f3294980b6373021d (patch) | |
tree | c53b76333cbb099df9e12dfe7ebfc56bd258b707 /asm/librtc.s |
Initial commit
Diffstat (limited to 'asm/librtc.s')
-rw-r--r-- | asm/librtc.s | 1152 |
1 files changed, 1152 insertions, 0 deletions
diff --git a/asm/librtc.s b/asm/librtc.s new file mode 100644 index 000000000..80387ce2f --- /dev/null +++ b/asm/librtc.s @@ -0,0 +1,1152 @@ + thumb_func_start RTC_SetReadWrite +; void RTC_SetReadWrite() +RTC_SetReadWrite: ; 81DFF18 + push {r7,lr} + mov r7, sp + bl RTC_SetReadWriteInternal + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + pop {r7} + pop {r0} + bx r0 + .pool + thumb_func_end RTC_SetReadWrite + + thumb_func_start RTC_SetReadOnly +; void RTC_SetReadOnly() +RTC_SetReadOnly: ; 81DFF30 + push {r7,lr} + mov r7, sp + bl RTC_SetReadOnlyInternal + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + pop {r7} + pop {r0} + bx r0 + .pool + thumb_func_end RTC_SetReadOnly + + thumb_func_start RTC_Init +; u8 RTC_Init() +RTC_Init: ; 81DFF48 + push {r7,lr} + sub sp, 0x10 + mov r7, sp + adds r1, r7, 0x4 + adds r0, r1, 0 + bl RTC_GetControlReg + lsls r1, r0, 24 + lsrs r0, r1, 24 + cmp r0, 0 + bne _081DFF62 + movs r0, 0 + b _081E0016 +_081DFF62: + adds r0, r7, 0 + movs r1, 0 + strb r1, [r0] + adds r0, r7, 0x4 + ldrb r1, [r0, 0x7] + movs r2, 0xC0 + adds r0, r1, 0 + ands r0, r2 + adds r2, r0, 0 + lsls r1, r2, 24 + lsrs r0, r1, 24 + cmp r0, 0x80 + beq _081DFF92 + adds r0, r7, 0x4 + ldrb r1, [r0, 0x7] + movs r2, 0xC0 + adds r0, r1, 0 + ands r0, r2 + adds r2, r0, 0 + lsls r1, r2, 24 + lsrs r0, r1, 24 + cmp r0, 0 + bne _081DFFB0 + b _081DFF92 +_081DFF92: + bl RTC_Reset + lsls r1, r0, 24 + lsrs r0, r1, 24 + cmp r0, 0 + bne _081DFFA2 + movs r0, 0 + b _081E0016 +_081DFFA2: + adds r1, r7, 0 + adds r0, r7, 0 + adds r1, r7, 0 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] +_081DFFB0: + adds r1, r7, 0x4 + adds r0, r1, 0 + bl RTC_GetTime + adds r0, r7, 0x4 + ldrb r1, [r0, 0x6] + movs r2, 0x80 + adds r0, r1, 0 + ands r0, r2 + adds r2, r0, 0 + lsls r1, r2, 24 + lsrs r0, r1, 24 + cmp r0, 0 + beq _081DFFFE + bl RTC_Reset + lsls r1, r0, 24 + lsrs r0, r1, 24 + cmp r0, 0 + bne _081DFFF0 + adds r0, r7, 0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r1, r0, 0 + movs r2, 0xF + adds r0, r1, 0 + bics r0, r2 + adds r1, r0, 0 + lsls r0, r1, 24 + lsrs r1, r0, 24 + adds r0, r1, 0 + b _081E0016 +_081DFFF0: + adds r1, r7, 0 + adds r0, r7, 0 + adds r1, r7, 0 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] +_081DFFFE: + adds r0, r7, 0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r1, r0, 0 + movs r2, 0x1 + adds r0, r1, 0 + orrs r0, r2 + adds r1, r0, 0 + lsls r0, r1, 24 + lsrs r1, r0, 24 + adds r0, r1, 0 + b _081E0016 +_081E0016: + add sp, 0x10 + pop {r7} + pop {r1} + bx r1 + thumb_func_end RTC_Init + + thumb_func_start RTC_Reset +; u8 RTC_Reset() +RTC_Reset: ; 81E0020 + push {r7,lr} + sub sp, 0x10 + mov r7, sp + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E0038 + movs r0, 0 + b _081E009C + .pool +_081E0038: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x60 + bl RTC_WriteByte + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + adds r0, r7, 0x4 + ldrb r1, [r0, 0x7] + movs r2, 0 + ands r1, r2 + adds r2, r1, 0 + movs r3, 0x40 + adds r1, r2, 0 + orrs r1, r3 + adds r2, r1, 0 + strb r2, [r0, 0x7] + adds r1, r7, 0x4 + adds r0, r1, 0 + bl RTC_SetControlReg + adds r1, r7, 0 + strb r0, [r1] + adds r0, r7, 0 + ldrb r1, [r0] + adds r0, r1, 0 + b _081E009C + .pool +_081E009C: + add sp, 0x10 + pop {r7} + pop {r1} + bx r1 + thumb_func_end RTC_Reset + + thumb_func_start RTC_GetControlReg +; u8 RTC_GetControlReg(struct RTCInfo *rtc) +RTC_GetControlReg: ; 81E00A4 + push {r4,r7,lr} + sub sp, 0x8 + mov r7, sp + str r0, [r7] + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E00BC + movs r0, 0 + b _081E0168 + .pool +_081E00BC: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x63 + bl RTC_WriteByte + ldr r0, =GPIOPortDirection + movs r1, 0x5 + strh r1, [r0] + bl RTC_ReadByte + adds r1, r7, 0x4 + strb r0, [r1] + ldr r0, [r7] + adds r1, r7, 0x4 + ldrb r2, [r1] + movs r3, 0xC0 + adds r1, r2, 0 + ands r1, r3 + adds r2, r7, 0x4 + ldrb r3, [r2] + movs r4, 0x20 + adds r2, r3, 0 + ands r2, r4 + adds r4, r2, 0 + lsls r3, r4, 24 + lsrs r2, r3, 24 + lsrs r3, r2, 3 + adds r2, r3, 0 + orrs r1, r2 + adds r2, r7, 0x4 + ldrb r3, [r2] + movs r4, 0x8 + adds r2, r3, 0 + ands r2, r4 + adds r4, r2, 0 + lsls r3, r4, 24 + lsrs r2, r3, 24 + lsrs r3, r2, 2 + adds r2, r3, 0 + orrs r1, r2 + adds r2, r7, 0x4 + ldrb r3, [r2] + movs r4, 0x2 + adds r2, r3, 0 + ands r2, r4 + adds r4, r2, 0 + lsls r3, r4, 24 + lsrs r2, r3, 24 + lsrs r3, r2, 1 + adds r2, r3, 0 + orrs r1, r2 + ldrb r2, [r0, 0x7] + movs r3, 0 + ands r2, r3 + adds r3, r2, 0 + adds r2, r3, 0 + orrs r2, r1 + adds r1, r2, 0 + strb r1, [r0, 0x7] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081E0168 + .pool +_081E0168: + add sp, 0x8 + pop {r4,r7} + pop {r1} + bx r1 + thumb_func_end RTC_GetControlReg + + thumb_func_start RTC_SetControlReg +; u8 RTC_SetControlReg(struct RTCInfo *rtc) +RTC_SetControlReg: ; 81E0170 + push {r4,r7,lr} + sub sp, 0x8 + mov r7, sp + str r0, [r7] + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E0188 + movs r0, 0 + b _081E0210 + .pool +_081E0188: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + adds r0, r7, 0x4 + ldr r1, [r7] + ldrb r2, [r1, 0x7] + movs r3, 0x4 + adds r1, r2, 0 + ands r1, r3 + adds r2, r1, 0 + lsls r1, r2, 3 + ldr r2, [r7] + ldrb r3, [r2, 0x7] + movs r4, 0x2 + adds r2, r3, 0 + ands r2, r4 + adds r3, r2, 0 + lsls r2, r3, 2 + adds r3, r2, 0 + movs r4, 0x40 + adds r2, r3, 0 + orrs r2, r4 + orrs r1, r2 + ldr r2, [r7] + ldrb r3, [r2, 0x7] + movs r4, 0x1 + adds r2, r3, 0 + ands r2, r4 + adds r3, r2, 0 + lsls r2, r3, 1 + orrs r1, r2 + adds r2, r1, 0 + strb r2, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x62 + bl RTC_WriteByte + adds r0, r7, 0x4 + ldrb r1, [r0] + adds r0, r1, 0 + bl RTC_WriteByteReversed + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081E0210 + .pool +_081E0210: + add sp, 0x8 + pop {r4,r7} + pop {r1} + bx r1 + thumb_func_end RTC_SetControlReg + + thumb_func_start RTC_GetDateTime +; u8 RTC_GetDateTime(u8 *rtcDateTime) +RTC_GetDateTime: ; 81E0218 + push {r7,lr} + sub sp, 0x8 + mov r7, sp + str r0, [r7] + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E0230 + movs r0, 0 + b _081E02C0 + .pool +_081E0230: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x65 + bl RTC_WriteByte + ldr r0, =GPIOPortDirection + movs r1, 0x5 + strh r1, [r0] + adds r0, r7, 0x4 + movs r1, 0 + strb r1, [r0] +_081E025A: + adds r0, r7, 0x4 + ldrb r1, [r0] + cmp r1, 0x6 + bls _081E0270 + b _081E028E + .pool +_081E0270: + bl RTC_ReadByte + adds r1, r7, 0x4 + ldrb r2, [r1] + ldr r3, [r7] + adds r1, r2, r3 + strb r0, [r1] + adds r1, r7, 0x4 + adds r0, r7, 0x4 + adds r1, r7, 0x4 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] + b _081E025A +_081E028E: + ldr r1, [r7] + adds r0, r1, 0x4 + ldr r2, [r7] + adds r1, r2, 0x4 + ldrb r2, [r1] + movs r3, 0x7F + adds r1, r2, 0 + ands r1, r3 + adds r2, r1, 0 + strb r2, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081E02C0 + .pool +_081E02C0: + add sp, 0x8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end RTC_GetDateTime + + thumb_func_start RTC_SetDateTime +; u8 RTC_SetDateTime(u8 *rtcDateTime) +RTC_SetDateTime: ; 81E02C8 + push {r7,lr} + sub sp, 0x8 + mov r7, sp + str r0, [r7] + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E02E0 + movs r0, 0 + b _081E035C + .pool +_081E02E0: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x64 + bl RTC_WriteByte + adds r0, r7, 0x4 + movs r1, 0 + strb r1, [r0] +_081E0304: + adds r0, r7, 0x4 + ldrb r1, [r0] + cmp r1, 0x6 + bls _081E031C + b _081E033C + .pool +_081E031C: + adds r0, r7, 0x4 + ldrb r1, [r0] + ldr r2, [r7] + adds r0, r1, r2 + ldrb r1, [r0] + adds r0, r1, 0 + bl RTC_WriteByteReversed + adds r1, r7, 0x4 + adds r0, r7, 0x4 + adds r1, r7, 0x4 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] + b _081E0304 +_081E033C: + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081E035C + .pool +_081E035C: + add sp, 0x8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end RTC_SetDateTime + + thumb_func_start RTC_GetTime +; u8 RTC_GetTime(u8 *rtcTime) +RTC_GetTime: ; 81E0364 + push {r7,lr} + sub sp, 0x8 + mov r7, sp + str r0, [r7] + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E037C + movs r0, 0 + b _081E0410 + .pool +_081E037C: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x67 + bl RTC_WriteByte + ldr r0, =GPIOPortDirection + movs r1, 0x5 + strh r1, [r0] + adds r0, r7, 0x4 + movs r1, 0 + strb r1, [r0] +_081E03A6: + adds r0, r7, 0x4 + ldrb r1, [r0] + cmp r1, 0x2 + bls _081E03BC + b _081E03DC + .pool +_081E03BC: + bl RTC_ReadByte + adds r1, r7, 0x4 + ldrb r2, [r1] + ldr r3, [r7] + adds r1, r2, r3 + adds r2, r1, 0x4 + strb r0, [r2] + adds r1, r7, 0x4 + adds r0, r7, 0x4 + adds r1, r7, 0x4 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] + b _081E03A6 +_081E03DC: + ldr r1, [r7] + adds r0, r1, 0x4 + ldr r2, [r7] + adds r1, r2, 0x4 + ldrb r2, [r1] + movs r3, 0x7F + adds r1, r2, 0 + ands r1, r3 + adds r2, r1, 0 + strb r2, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081E0410 + .pool +_081E0410: + add sp, 0x8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end RTC_GetTime + + thumb_func_start RTC_SetTime +; u8 RTC_SetTime(u8 *rtcTime) +RTC_SetTime: ; 81E0418 + push {r7,lr} + sub sp, 0x8 + mov r7, sp + str r0, [r7] + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E0430 + movs r0, 0 + b _081E04AC + .pool +_081E0430: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x66 + bl RTC_WriteByte + adds r0, r7, 0x4 + movs r1, 0 + strb r1, [r0] +_081E0454: + adds r0, r7, 0x4 + ldrb r1, [r0] + cmp r1, 0x2 + bls _081E046C + b _081E048E + .pool +_081E046C: + adds r0, r7, 0x4 + ldrb r1, [r0] + ldr r2, [r7] + adds r0, r1, r2 + adds r1, r0, 0x4 + ldrb r2, [r1] + adds r0, r2, 0 + bl RTC_WriteByteReversed + adds r1, r7, 0x4 + adds r0, r7, 0x4 + adds r1, r7, 0x4 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] + b _081E0454 +_081E048E: + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081E04AC + .pool +_081E04AC: + add sp, 0x8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end RTC_SetTime + + thumb_func_start RTC_SetUnknownData +; u8 RTC_SetUnknownData(struct RTCInfo *rtc) +RTC_SetUnknownData: ; 81E04B4 + push {r4,r7,lr} + sub sp, 0xC + mov r7, sp + str r0, [r7] + ldr r0, =0x03000F36 + ldrb r1, [r0] + cmp r1, 0x1 + bne _081E04CC + movs r0, 0 + b _081E05E0 + .pool +_081E04CC: + ldr r0, =0x03000F36 + movs r1, 0x1 + strb r1, [r0] + adds r0, r7, 0 + adds r0, 0x8 + ldr r1, [r7] + ldrb r2, [r1, 0x8] + movs r3, 0xF + adds r1, r2, 0 + ands r1, r3 + ldr r2, [r7] + ldrb r3, [r2, 0x8] + lsrs r2, r3, 4 + adds r3, r2, 0 + movs r4, 0xF + adds r2, r3, 0 + ands r2, r4 + adds r4, r2, 0 + lsls r3, r4, 24 + lsrs r2, r3, 24 + adds r4, r2, 0 + lsls r3, r4, 2 + adds r3, r2 + lsls r2, r3, 1 + adds r1, r2 + ldrb r2, [r0] + movs r3, 0 + ands r2, r3 + adds r3, r2, 0 + adds r2, r3, 0 + orrs r2, r1 + adds r1, r2, 0 + strb r1, [r0] + adds r0, r7, 0 + adds r0, 0x8 + ldrb r1, [r0] + cmp r1, 0xB + bhi _081E0538 + adds r0, r7, 0 + adds r0, 0x8 + ldr r1, [r7] + ldrb r2, [r0] + movs r3, 0 + ands r2, r3 + adds r3, r2, 0 + ldrb r1, [r1, 0x8] + adds r2, r3, 0 + orrs r2, r1 + adds r1, r2, 0 + strb r1, [r0] + b _081E0556 + .pool +_081E0538: + adds r0, r7, 0 + adds r0, 0x8 + ldr r1, [r7] + ldrb r2, [r1, 0x8] + movs r3, 0x80 + adds r1, r2, 0 + orrs r1, r3 + ldrb r2, [r0] + movs r3, 0 + ands r2, r3 + adds r3, r2, 0 + adds r2, r3, 0 + orrs r2, r1 + adds r1, r2, 0 + strb r1, [r0] +_081E0556: + adds r0, r7, 0 + adds r0, 0x8 + ldr r1, [r7] + ldrb r2, [r0, 0x1] + movs r3, 0 + ands r2, r3 + adds r3, r2, 0 + ldrb r1, [r1, 0x9] + adds r2, r3, 0 + orrs r2, r1 + adds r1, r2, 0 + strb r1, [r0, 0x1] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + ldr r0, =GPIOPortDirection + movs r1, 0x7 + strh r1, [r0] + movs r0, 0x68 + bl RTC_WriteByte + adds r0, r7, 0x4 + movs r1, 0 + strb r1, [r0] +_081E058C: + adds r0, r7, 0x4 + ldrb r1, [r0] + cmp r1, 0x1 + bls _081E05A0 + b _081E05C2 + .pool +_081E05A0: + adds r0, r7, 0 + adds r0, 0x8 + adds r1, r7, 0x4 + ldrb r2, [r1] + adds r0, r2 + ldrb r1, [r0] + adds r0, r1, 0 + bl RTC_WriteByteReversed + adds r1, r7, 0x4 + adds r0, r7, 0x4 + adds r1, r7, 0x4 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] + b _081E058C +_081E05C2: + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x1 + strh r1, [r0] + ldr r0, =0x03000F36 + movs r1, 0 + strb r1, [r0] + movs r0, 0x1 + b _081E05E0 + .pool +_081E05E0: + add sp, 0xC + pop {r4,r7} + pop {r1} + bx r1 + thumb_func_end RTC_SetUnknownData + + thumb_func_start RTC_WriteByte +; u8 RTC_WriteByte(u8 value) +RTC_WriteByte: ; 81E05E8 + push {r4,r5,r7,lr} + sub sp, 0x4 + mov r7, sp + adds r1, r0, 0 + adds r2, r7, 0 + strb r1, [r2] + adds r1, r7, 0x1 + movs r2, 0 + strb r2, [r1] +_081E05FA: + adds r1, r7, 0x1 + ldrb r2, [r1] + cmp r2, 0x7 + bls _081E0604 + b _081E0684 +_081E0604: + adds r1, r7, 0x2 + adds r3, r7, 0 + ldrb r2, [r3] + adds r3, r7, 0x1 + ldrb r4, [r3] + movs r5, 0x7 + subs r3, r5, r4 + asrs r2, r3 + adds r3, r2, 0 + movs r4, 0x1 + adds r2, r3, 0 + ands r2, r4 + adds r3, r2, 0 + strb r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x4 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x4 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x4 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x5 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + adds r2, r7, 0x1 + adds r1, r7, 0x1 + adds r2, r7, 0x1 + ldrb r3, [r2] + adds r2, r3, 0x1 + adds r3, r2, 0 + strb r3, [r1] + b _081E05FA + .pool +_081E0684: + add sp, 0x4 + pop {r4,r5,r7} + pop {r1} + bx r1 + thumb_func_end RTC_WriteByte + + thumb_func_start RTC_WriteByteReversed +; u8 RTC_WriteByteReversed(u8 value) +RTC_WriteByteReversed: ; 81E068C + push {r4,r7,lr} + sub sp, 0x4 + mov r7, sp + adds r1, r0, 0 + adds r2, r7, 0 + strb r1, [r2] + adds r1, r7, 0x1 + movs r2, 0 + strb r2, [r1] +_081E069E: + adds r1, r7, 0x1 + ldrb r2, [r1] + cmp r2, 0x7 + bls _081E06A8 + b _081E0724 +_081E06A8: + adds r1, r7, 0x2 + adds r3, r7, 0 + ldrb r2, [r3] + adds r3, r7, 0x1 + ldrb r4, [r3] + asrs r2, r4 + adds r3, r2, 0 + movs r4, 0x1 + adds r2, r3, 0 + ands r2, r4 + adds r3, r2, 0 + strb r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x4 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x4 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x4 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + ldr r1, =GPIOPortData + adds r2, r7, 0x2 + ldrb r3, [r2] + adds r2, r3, 0 + lsls r3, r2, 1 + adds r2, r3, 0 + movs r3, 0x5 + orrs r2, r3 + adds r3, r2, 0 + strh r3, [r1] + adds r2, r7, 0x1 + adds r1, r7, 0x1 + adds r2, r7, 0x1 + ldrb r3, [r2] + adds r2, r3, 0x1 + adds r3, r2, 0 + strb r3, [r1] + b _081E069E + .pool +_081E0724: + add sp, 0x4 + pop {r4,r7} + pop {r1} + bx r1 + thumb_func_end RTC_WriteByteReversed + + thumb_func_start RTC_ReadByte +; u8 RTC_ReadByte() +RTC_ReadByte: ; 81E072C + push {r7,lr} + sub sp, 0x4 + mov r7, sp + adds r0, r7, 0 + movs r1, 0 + strb r1, [r0] +_081E0738: + adds r0, r7, 0 + ldrb r1, [r0] + cmp r1, 0x7 + bls _081E0742 + b _081E07A8 +_081E0742: + ldr r0, =GPIOPortData + movs r1, 0x4 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x4 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x4 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x4 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x4 + strh r1, [r0] + ldr r0, =GPIOPortData + movs r1, 0x5 + strh r1, [r0] + adds r0, r7, 0x1 + ldr r1, =GPIOPortData + ldrh r2, [r1] + movs r3, 0x2 + adds r1, r2, 0 + ands r1, r3 + adds r3, r1, 0 + lsls r2, r3, 16 + lsrs r1, r2, 16 + lsrs r2, r1, 1 + adds r1, r2, 0 + strb r1, [r0] + adds r0, r7, 0x2 + adds r1, r7, 0x2 + ldrb r2, [r1] + lsrs r1, r2, 1 + adds r2, r7, 0x1 + ldrb r3, [r2] + lsls r2, r3, 7 + orrs r1, r2 + adds r2, r1, 0 + strb r2, [r0] + adds r1, r7, 0 + adds r0, r7, 0 + adds r1, r7, 0 + ldrb r2, [r1] + adds r1, r2, 0x1 + adds r2, r1, 0 + strb r2, [r0] + b _081E0738 + .pool +_081E07A8: + adds r0, r7, 0x2 + ldrb r1, [r0] + adds r0, r1, 0 + b _081E07B0 +_081E07B0: + add sp, 0x4 + pop {r7} + pop {r1} + bx r1 + thumb_func_end RTC_ReadByte + + thumb_func_start RTC_SetReadWriteInternal +; void RTC_SetReadWriteInternal() +RTC_SetReadWriteInternal: ; 81E07B8 + push {r7,lr} + mov r7, sp + ldr r0, =GPIOPortReadWrite + movs r1, 0x1 + strh r1, [r0] + pop {r7} + pop {r0} + bx r0 + .pool + thumb_func_end RTC_SetReadWriteInternal + + thumb_func_start RTC_SetReadOnlyInternal +; void RTC_SetReadOnlyInternal() +RTC_SetReadOnlyInternal: ; 81E07CC + push {r7,lr} + mov r7, sp + ldr r0, =GPIOPortReadWrite + movs r1, 0 + strh r1, [r0] + pop {r7} + pop {r0} + bx r0 + .pool + thumb_func_end RTC_SetReadOnlyInternal |