summaryrefslogtreecommitdiff
path: root/Binaeruhr.asm
diff options
context:
space:
mode:
authorStefanie Eckner <stefanie@eckner.net>2020-11-08 19:47:27 +0100
committerStefanie Eckner <stefanie@eckner.net>2020-11-08 19:47:27 +0100
commit921c05e62694c26211b7c5111de44bfde6dec791 (patch)
treebe752d28872a532d8587e749d540f75ff29472dc /Binaeruhr.asm
parentf9e2727c85e22835d8751efa15a9eb86c5bf2535 (diff)
downloadUhr-921c05e62694c26211b7c5111de44bfde6dec791.tar.xz
Binaeruhr.asm: Funk wird nun ordnungsgemäß zum Minutenende übernommen
Diffstat (limited to 'Binaeruhr.asm')
-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