10 /* #define DEBUG_INT */
13 #define BCD_TO_BIN(x) ((x&15) + (x>>4)*10)
14 #define BIN_TO_BCD(x) ((x%10) + ((x/10)<<4))
17 /**********************************************************************
20 * Handler for int 1ah (date and time).
22 void INT_Int1aHandler( struct sigcontext_struct sigcontext )
24 #define context (&sigcontext)
32 /* This should give us the (approximately) correct
33 * 18.206 clock ticks per second since midnight
34 * expected from this interrupt
36 gettimeofday(&tvs, NULL);
37 bdtime = localtime(&tvs.tv_sec);
38 ticks = (((bdtime->tm_hour * 3600 + bdtime->tm_min * 60 +
39 bdtime->tm_sec) * 18206) / 1000) +
40 (tvs.tv_usec / 54927);
42 DX = ticks & 0x0000FFFF;
43 AX = 0; /* No midnight rollover */
44 dprintf_int(stddeb,"int1a_00 // ticks=%ld\n", ticks);
49 bdtime = localtime(<ime);
51 CX = (BIN_TO_BCD(bdtime->tm_hour)<<8) | BIN_TO_BCD(bdtime->tm_min);
52 DX = (BIN_TO_BCD(bdtime->tm_sec)<<8);
56 bdtime = localtime(<ime);
57 CX = (BIN_TO_BCD(bdtime->tm_year/100)<<8) | BIN_TO_BCD((bdtime->tm_year-1900)%100);
58 DX = (BIN_TO_BCD(bdtime->tm_mon)<<8) | BIN_TO_BCD(bdtime->tm_mday);
61 /* setting the time,date or RTC is not allow -EB */