1 --- clock-1.1/clock-alpha.c.fix Thu Oct 1 02:58:19 1998
2 +++ clock-1.1/clock-alpha.c Thu Oct 1 03:03:34 1998
4 /* Here the information for time adjustments is kept. */
5 #define ADJPATH "/etc/adjtime"
8 +/* for BCD formart clock maintenance */
9 +#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
10 +#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10)
12 /* used for debugging the code. */
24 save_freq_select = cmos_read (10); /* stop and reset prescaler */
25 cmos_write (10, (save_freq_select | clockport));
27 + if (arcit) /* Alpha ARC console */
30 + if (!(cmos_read (11) & 0x04) || bcdit) {
32 + printf("writing CMOS time in BCD format!\n");
34 + BIN_TO_BCD(tm->tm_sec);
35 + BIN_TO_BCD(tm->tm_min);
36 + BIN_TO_BCD(tm->tm_hour);
37 + BIN_TO_BCD(tm->tm_wday);
38 + BIN_TO_BCD(tm->tm_mday);
39 + BIN_TO_BCD(tm->tm_mon);
40 + BIN_TO_BCD(tm->tm_year);
43 cmos_write (0, tm->tm_sec);
44 cmos_write (2, tm->tm_min);
45 cmos_write (4, tm->tm_hour);
46 cmos_write (6, tm->tm_wday + 3);
47 cmos_write (7, tm->tm_mday);
48 cmos_write (8, tm->tm_mon + 1);
49 - if (arcit) /* Alpha ARC console */
51 cmos_write (9, tm->tm_year);
53 cmos_write (10, save_freq_select);
55 /* Wait for rise.... (may take upto 1 second) */
57 for (i = 0; i < 10000000; i++)
58 - if (cmos_read (10) & 0x80)
60 + if (cmos_read (12) & 0x10)
61 +#else /* __alpha__ */
62 + if (cmos_read (10) & 0x80)
63 +#endif /* __alpha__ */
66 /* Wait for fall.... (must try at least 2.228 ms) */
68 tm.tm_year = cmos_read (9);
70 while (tm.tm_sec != cmos_read (0));
72 + if (!(cmos_read (11) & 0x04) || bcdit) {
74 + printf("reading CMOS time in BCD format!\n");
76 + BCD_TO_BIN(tm.tm_sec);
77 + BCD_TO_BIN(tm.tm_min);
78 + BCD_TO_BIN(tm.tm_hour);
79 + BCD_TO_BIN(tm.tm_wday);
80 + BCD_TO_BIN(tm.tm_mday);
81 + BCD_TO_BIN(tm.tm_mon);
82 + BCD_TO_BIN(tm.tm_year);
85 if (arcit) { /* Alpha ARC console */