summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Binaeruhr.asm47
1 files changed, 45 insertions, 2 deletions
diff --git a/Binaeruhr.asm b/Binaeruhr.asm
index 9ff6e93..2a8919f 100644
--- a/Binaeruhr.asm
+++ b/Binaeruhr.asm
@@ -224,8 +224,25 @@ neue_Funkminute:
ror r17
ror r16
-; TODO: Minute prüfen und übernehmen
-; TODO: Stunde prüfen und übernehmen
+ cbr r17,0x80
+
+ mov r18,r16
+ rcall checksum
+ brts Funk_initialisieren
+
+ mov r18,r17
+ rcall checksum
+ brts Funk_initialisieren
+
+ mov r18,r16
+ cbr r18,0x80
+ rcall bcd_to_bin
+ mov Minute,r18
+
+ mov r18,r17
+ cbr r18,0xc0
+ rcall bcd_to_bin
+ mov Stunde,r18
clr Sekunde
@@ -301,3 +318,29 @@ nach_Funkeinfuegung:
out SREG,r16
pop r16
reti
+
+bcd_to_bin: ; input/output: r18; tmp: r19
+ mov r19,r18
+ cbr r18,0xf0
+ swap r19
+ cbr r19,0xf0
+ lsl r19
+ add r18,r19
+ lsl r19
+ lsl r19
+ add r18,r19
+ ret
+
+checksum: ; input: r18; tmp: r19; output: T-Flag
+ mov r19,r18
+ swap r19
+ eor r18,r19
+ mov r19,r18
+ ror r19
+ ror r19
+ eor r18,r19
+ mov r19,r18
+ ror r19
+ eor r18,r19
+ bst r18,0
+ ret