]> git.sur5r.net Git - c128-kasse/blob - src/c128time.c
Merge pull request #37 from sur5r/issue36
[c128-kasse] / src / c128time.c
1 /*
2  * RGB2R-C128-Kassenprogramm
3  * © 2007-2009 phil_fry, sECuRE, sur5r
4  * See LICENSE for license information
5  *
6  */
7 #include <peekpoke.h>
8 #include <stdlib.h>
9 #include <stdio.h>
10 #include "general.h"
11 #include <stdint.h>
12
13 char *get_time(void) {
14   uint32_t h = PEEK(0x00A0) * 65536, m = PEEK(0x00A1) * 256, s = PEEK(0x00A2);
15   static char buffer[9];
16   BYTE hrs, min;
17
18   h = (h + m + s) / 60;
19   hrs = (h / 3600);
20   h -= ((uint32_t)hrs * (uint32_t)3600);
21   min = (h / 60);
22   h -= (min * 60);
23
24   sprintf(buffer, "%02d:%02d:%02d", hrs, min, (BYTE)h);
25   return buffer;
26 }
27
28 void set_time(BYTE hrs, BYTE min, BYTE sec) {
29   uint32_t added = ((uint32_t)sec + ((uint32_t)min * (uint32_t)60) +
30                     ((uint32_t)hrs * (uint32_t)3600)) *
31                    (uint32_t)60;
32   uint32_t lowbit = (added & 0xFF);
33   uint32_t middlebit = (added >> 8) & 0xFF;
34   uint32_t highbit = (added >> 16) & 0xFF;
35
36   POKE(0x00A0, (BYTE)highbit);
37   POKE(0x00A1, (BYTE)middlebit);
38   POKE(0x00A2, (BYTE)lowbit);
39 }