Made bitmap view and path AppMessage targets. Picture files can now be
[AROS.git] / arch / m68k-amiga / battclock / battclock_intern.c
blob74d89aa7ee0946138982e2c537a3ba77e532f1e1
2 #define DEBUG 0
4 #include <aros/debug.h>
5 #include <aros/libcall.h>
7 #include "battclock_intern.h"
9 UBYTE getreg(volatile UBYTE *p, UBYTE regnum)
11 return p[regnum * 4 + 3] & 15;
13 void putreg(volatile UBYTE *p, UBYTE regnum, UBYTE v)
15 p[regnum * 4 + 3] = v;
17 UBYTE getbcd(volatile UBYTE *p, UBYTE regnum)
19 return getreg(p, regnum + 1) * 10 + getreg(p, regnum);
21 void putbcd(volatile UBYTE *p, UBYTE regnum, UBYTE v)
23 putreg(p, regnum + 1, v / 10);
24 putreg(p, regnum, v % 10);
27 void stopclock(struct BattClockBase *Battclock)
29 volatile UBYTE *p = Battclock->clockptr;
30 if (Battclock->clocktype == MSM6242B) {
31 putreg(p, 0xf, 4 + 2);
32 } else if (Battclock->clocktype == RF5C01A) {
33 putreg(p, 0xd, 0);
36 void startclock(struct BattClockBase *Battclock)
38 volatile UBYTE *p = Battclock->clockptr;
39 if (Battclock->clocktype == MSM6242B) {
40 putreg(p, 0xf, 4);
41 } else if (Battclock->clocktype == RF5C01A) {
42 putreg(p, 0xd, 8);
46 void resetbattclock(struct BattClockBase *Battclock)
48 volatile UBYTE *p = Battclock->clockptr;
49 UBYTE i, j;
51 if (!p)
52 return;
54 if (Battclock->clocktype == MSM6242B) {
55 putreg(p, 0xd, 0);
56 putreg(p, 0xe, 0);
57 putreg(p, 0xf, 2);
58 for (i = 0; i < 12; i++)
59 putreg(p, i, 0);
60 putreg(p, 0xf, 7); // reset
61 putreg(p, 0xf, 4); // leave 24h on
62 } else if (Battclock->clocktype == RF5C01A) {
63 putreg(p, 0xd, 0); // stop
64 putreg(p, 0xe, 0);
65 for (j = 0; j < 4; j++) {
66 putreg(p, 0xd, j);
67 for (i = 0; i < 12; i++)
68 putreg(p, i, 0);
70 putreg(p, 0xd, 0);
71 putreg(p, 0xf, 3); // reset
72 putreg(p, 0xf, 0); // reset off
73 putreg(p, 0xd, 8); // timer en