perry@heurikon.UUCP (Perry Kivolowitz) (11/17/84)
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); } } }