[net.sources] Simple Digital Clock

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);
		}
	}
}