Rev 5132 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
9952 | turbocat | 1 | #include |
4973 | right-hear | 2 | |
9952 | turbocat | 3 | #define B_SZ 10 |
4973 | right-hear | 4 | |
9952 | turbocat | 5 | static char* title = "BinClock"; |
4973 | right-hear | 6 | |
9952 | turbocat | 7 | static void draw_small_box(int x, int y, int is_on) |
4973 | right-hear | 8 | { |
9952 | turbocat | 9 | _ksys_draw_bar(x, y, B_SZ, B_SZ, is_on ? 0xFF0000 : 0x103000); |
4973 | right-hear | 10 | } |
11 | |||
9952 | turbocat | 12 | static void draw_box_group(int x, int y, int num) |
4973 | right-hear | 13 | { |
9952 | turbocat | 14 | int i, j; |
15 | char buf[2]; |
||
16 | buf[0] = (num&(1+2+4+8))+'0'; |
||
17 | buf[1] = '\0'; |
||
18 | for(i = 0; i < 4; i++) { |
||
19 | j = (B_SZ+2)*i; |
||
20 | draw_small_box(x,y+((B_SZ+2)*i),num & (1<<(3-i)) ? 1 : 0); |
||
21 | } |
||
22 | _ksys_draw_bar(x, y+((B_SZ+2)*4),B_SZ,B_SZ, 0x800000); |
||
23 | _ksys_draw_text(buf, x+2, y+((B_SZ+2)*4)+3, 1, 0xFFFFFF); |
||
4973 | right-hear | 24 | } |
25 | |||
5098 | clevermous | 26 | static void draw_bcd_num(int x,int y,int num) |
4973 | right-hear | 27 | { |
9952 | turbocat | 28 | int v1, v2; |
29 | v1 = (num>>4)&(1+2+4+8); |
||
30 | v2 = num&(1+2+4+8); |
||
31 | draw_box_group(x, y, v1); |
||
32 | draw_box_group(x+B_SZ+2, y ,v2); |
||
4973 | right-hear | 33 | } |
34 | |||
5098 | clevermous | 35 | static void draw_hms(int x,int y) |
4973 | right-hear | 36 | { |
9952 | turbocat | 37 | unsigned t; |
38 | int h, m, s; |
||
39 | __asm__ __volatile__("int $0x40" : "=a"(t) : "a"(3)); |
||
40 | s = (t & 0x00FF0000)>>16; |
||
41 | m = (t & 0x0000FF00)>>8; |
||
42 | h = (t & 0x000000FF); |
||
43 | draw_bcd_num(x,y,h); |
||
44 | x+=((B_SZ+2)<<1)+2; |
||
45 | draw_bcd_num(x,y,m); |
||
46 | x+=((B_SZ+2)<<1)+2; |
||
47 | draw_bcd_num(x,y,s); |
||
4973 | right-hear | 48 | } |
49 | |||
5098 | clevermous | 50 | static void draw_h(void) |
4973 | right-hear | 51 | { |
9952 | turbocat | 52 | draw_hms(22, 28); |
4973 | right-hear | 53 | } |
54 | |||
5098 | clevermous | 55 | static void paint(void) |
4973 | right-hear | 56 | { |
9952 | turbocat | 57 | _ksys_start_draw(); |
58 | _ksys_create_window(100, 100, 40+((B_SZ+2)*6)+4,30+((B_SZ+2)*4)+16, title, 0x80, 0x13); |
||
59 | _ksys_draw_bar(20, 26, ((B_SZ+2)*6)+4+2,4+((B_SZ+1)*4)+2, 0); |
||
60 | draw_h(); |
||
61 | _ksys_end_draw(); |
||
4973 | right-hear | 62 | } |
63 | |||
5132 | clevermous | 64 | int main(void) |
4973 | right-hear | 65 | { |
9952 | turbocat | 66 | int i; |
4973 | right-hear | 67 | paint(); |
9952 | turbocat | 68 | |
69 | for(;;) { |
||
70 | i = _ksys_wait_event_timeout(20); |
||
71 | draw_h(); |
||
72 | switch(i) { |
||
73 | case 1: |
||
74 | paint(); |
||
75 | continue; |
||
76 | case 2: |
||
77 | _ksys_get_key(); |
||
78 | continue; |
||
79 | case 3: |
||
80 | if (_ksys_get_button() == 1) return 0; |
||
81 | continue; |
||
82 | } |
||
83 | } |
||
4973 | right-hear | 84 | }1)+2; |
9952 | turbocat | 85 |