diff options
-rw-r--r-- | Binaeruhr.asm | 47 |
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 |