FROMBCD
ct.sec = FROMBCD(val & 0x7f);
ct.min = FROMBCD((val & 0x7f00) >> 8);
ct.hour = FROMBCD((val & 0x3f0000) >> 16);
ct.dow = FROMBCD((val & 0x7000000) >> 24) - 1;
ct.day = FROMBCD(val & 0x7f);
ct.mon = FROMBCD((val & 0x1f00) >> 8);
ct.year = YEAR_BASE + FROMBCD((val & 0xff0000) >> 16);
ct.sec = FROMBCD(RTC_READ4(rtc_sc, RTC_SECONDS) & 0x7f);
ct.min = FROMBCD(RTC_READ4(rtc_sc, RTC_MINUTES) & 0x7f);
ct.hour = FROMBCD(RTC_READ4(rtc_sc, RTC_HOURS) & 0x3f);
ct.day = FROMBCD(RTC_READ4(rtc_sc, RTC_DAYS) & 0x3f);
ct.mon = FROMBCD(RTC_READ4(rtc_sc, RTC_MONTHS) & 0x1f);
ct.year = FROMBCD(RTC_READ4(rtc_sc, RTC_YEARS) & 0xff);
ct.sec = FROMBCD(time_regs.secs & 0x7f);
ct.min = FROMBCD(time_regs.mins & 0x7f);
ct.hour = FROMBCD(time_regs.hours & 0x3f);
ct.day = FROMBCD(time_regs.date & 0x3f);
ct.mon = FROMBCD(time_regs.month & 0x1f) - 1;
ct.year = FROMBCD(time_regs.year) + 2000;
ct.year = FROMBCD(byear) + FROMBCD(bcent) * 100;
ct.mon = FROMBCD(bct->mon);
ct.day = FROMBCD(bct->day);
ct.hour = FROMBCD(bct->hour);
ct.min = FROMBCD(bct->min);
ct.sec = FROMBCD(bct->sec);
ct.sec = FROMBCD((*sc->sc_read)(dev, DS1553_OFF_SECONDS) &
ct.min = FROMBCD((*sc->sc_read)(dev, DS1553_OFF_MINUTES) &
ct.hour = FROMBCD((*sc->sc_read)(dev, DS1553_OFF_HOURS) &
ct.dow = FROMBCD((*sc->sc_read)(dev, DS1553_OFF_DAYOFWEEK) &
ct.day = FROMBCD((*sc->sc_read)(dev, DS1553_OFF_DATE) &
ct.mon = FROMBCD((*sc->sc_read)(dev, DS1553_OFF_MONTH) &
ct.year = FROMBCD((*sc->sc_read)(dev, DS1553_OFF_YEAR));