Simple Digital Clock
Perry Kivolowitz
perry at heurikon.UUCP
Sat Nov 17 16:46:41 AEST 1984
Here is a simple digital clock for you idle hours...compile with -lcurses and
-ltermcap(or lib, whatever). This code should compile under any Unix system!
-----------------------------------------------------------------------------
#include <stdio.h>
#include <curses.h>
/*
*** D C L O C K . C
***
*** A Simple Digital Clock Program (C) Perry S. Kivolowitz, 1984
***
*** Perry S. Kivolowitz
*** ihnp4!heurikon!perry
*** uwvax!heurikon!perry
***
*** cc -O -o dlock dclock.c -lcurses -ltermcap
***
*/
char *vers_id = "dlock.c v-1 (c) perry s. kivolowitz 1984";
short ctab[][13] = {
0000,0174,0202,0206,0212,0222,0242,0302,0202,0174,0000,0000,0000, /* 0 */
0000,0020,0060,0120,0020,0020,0020,0020,0020,0174,0000,0000,0000, /* 1 */
0000,0174,0202,0202,0004,0070,0100,0200,0200,0376,0000,0000,0000, /* 2 */
0000,0174,0202,0002,0002,0074,0002,0002,0202,0174,0000,0000,0000, /* 3 */
0000,0004,0014,0024,0044,0104,0204,0376,0004,0004,0000,0000,0000, /* 4 */
0000,0376,0200,0200,0370,0004,0002,0002,0204,0170,0000,0000,0000, /* 5 */
0000,0074,0100,0200,0200,0374,0202,0202,0202,0174,0000,0000,0000, /* 6 */
0000,0376,0202,0004,0010,0020,0040,0040,0040,0040,0000,0000,0000, /* 7 */
0000,0174,0202,0202,0202,0174,0202,0202,0202,0174,0000,0000,0000, /* 8 */
0000,0174,0202,0202,0202,0176,0002,0002,0004,0170,0000,0000,0000, /* 9 */
};
pchar(wind , digit)
WINDOW *wind;
{
short *bit_mask = ctab[digit - '0'];
register int i , j;
for (i = 0; i < 13; i++ , bit_mask++) {
wmove(wind , i , 0);
for (j = 7; j >= 0; j--)
wprintw(wind , "%c" , (1 << j) & *bit_mask ? '@' : ' ');
}
}
WINDOW *mshr , *lshr , *msmn , *lsmn , *mssc , *lssc;
main()
{
long time_now;
char *buffer;
extern long time();
extern char *ctime();
char Msmn , Mssc , Mshr;
char Lsmn , Lssc , Lshr;
initscr();
clear();
refresh();
Msmn = Mssc = Mshr = Lsmn = Lssc = Lshr = 0;
mshr = subwin(stdscr,13,8,0,0);
lshr = subwin(stdscr,13,8,0,8);
msmn = subwin(stdscr,13,8,0,32);
lsmn = subwin(stdscr,13,8,0,40);
mssc = subwin(stdscr,13,8,0,64);
lssc = subwin(stdscr,13,8,0,72);
while (1) {
time_now = time((long *) 0);
buffer = ctime(&time_now);
if (Lssc != buffer[18]) {
Lssc = buffer[18];
pchar(lssc , Lssc);
wrefresh(lssc);
}
if (Mssc != buffer[17]) {
Mssc = buffer[17];
pchar(mssc , Mssc);
wrefresh(mssc);
}
if (Lsmn != buffer[15]) {
Lsmn = buffer[15];
pchar(lsmn , Lsmn);
wrefresh(lsmn);
}
if (Msmn != buffer[14]) {
Msmn = buffer[14];
pchar(msmn , Msmn);
wrefresh(msmn);
}
if (Lshr != buffer[12]) {
Lshr = buffer[12];
pchar(lshr , Lshr);
wrefresh(lshr);
}
if (Mshr != buffer[11]) {
Mshr = buffer[11];
pchar(mshr , Mshr);
wrefresh(mshr);
}
}
}
More information about the Comp.sources.unix
mailing list