|
|
researchv10 Norman
#include "hdr.h"
Time
gettime()
{
char buf[64];
Time t;
if(cmd(4, "timer", buf, "%c%c%c", 0x61, 0x0C, 1)){
t.h = t.m = t.s = t.f = 0;
return(t);
}
return(atotime(buf+2));
}
settimer(t, who)
Time t;
{
cmd(0, "settimer", (char *)0, "%c%c%t", 0x44, who, t);
}
timer(type)
{
char buf[64];
Time t;
if(cmd(4, "timer", buf, "%c%c%c", 0x61, 0x0C, type))
return;
t = atotime(buf+2);
switch(buf[1])
{
case 0x04: print("LTC: %T\n", t); break;
case 0x14: print("corrected LTC: %T\n", t); break;
case 0x06: print("VITC: %T\n", t); break;
case 0x00: print("TIMER-1: %T\n", t); break;
case 0x01: print("TIMER-2: %T\n", t); break;
default: print("unexpect timer return type %2.2ux\n", buf[1]);
}
}
Time
atotime(b)
char *b;
{
#define M(x) ((((x)>>4)&0x7)*10 + ((x)&0xF))
Time t;
t.f = M(b[0]&0x3F);
t.s = M(b[1]);
t.m = M(b[2]);
t.h = M(b[3]);
return(t);
}
taddfr(t, n)
register Time *t;
{
t->f += n;
if(t->f >= 30){
t->s += t->f/30;
t->f %= 30;
if(t->s >= 60){
t->m += t->s/60;
t->s %= 60;
if(t->m >= 60){
t->h += t->m/60;
t->m %= 60;
}
}
}
}
timecmp(t0, t1)
Time t0, t1;
{
register k;
if(k = t0.h - t1.h) return(k);
if(k = t0.m - t1.m) return(k);
if(k = t0.s - t1.s) return(k);
return(t0.f - t1.f);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.