www.pudn.com > IBM-PC CMOS.zip > CMOSLOOK.C
/* CMOSLOOK.C - Look at IBM PC/AT's Real-time Clock/CMOS RAM information Jim Cronin 2-86 */ #include#define IOADDRESS 0x070 #define IODATA 0x071 static char *what[] = { /* 00 */ "Seconds", "Second alarm", /* 02 */ "Minutes", "Minute alarm", /* 04 */ "Hours", "Hour alarm", /* 06 */ "Day of week", "Date of month", /* 08 */ "Month", "Year", /* 0A */ "Status register A", "Status register B", /* 0C */ "Status register C", "Status register D", /* 0E */ "Diagnostic status byte", "Shutdown status byte", /* 10 */ "Diskette drive type byte - drives A and B","Reserved", /* 12 */ "Fixed disk type byte - drives C and D", "Reserved", /* 14 */ "Equipment byte", "Low base memory byte", /* 16 */ "High base memory byte", "Low expansion memory byte", /* 18 */ "High expansion memory byte", "Reserved", /* 1A */ "Reserved", "Reserved", /* 1C */ "Reserved", "Reserved", /* 1E */ "Reserved", "Reserved", /* 20 */ "Reserved", "Reserved", /* 22 */ "Reserved", "Reserved", /* 24 */ "Reserved", "Reserved", /* 26 */ "Reserved", "Reserved", /* 28 */ "Reserved", "Reserved", /* 2A */ "Reserved", "Reserved", /* 2C */ "Reserved", "Reserved", /* 2E */ "Checksum byte 1", "Checksum byte 2", /* 30 */ "Low expansion memory byte", "High expansion memory byte", /* 32 */ "Date century byte", "Information flags", /* 34 */ "Reserved", "Reserved", /* 36 */ "Reserved", "Reserved", /* 38 */ "Reserved", "Reserved", /* 3A */ "Reserved", "Reserved", /* 3C */ "Reserved", "Reserved", /* 3E */ "Reserved", "Reserved", ""}; main () { unsigned char location, value; extern unsigned char inportb(); printf (" Loc. Hex Binary Name\n ---- --- -------- ----\n"); for (location = 0; *what[location] != '\0'; location++) { outportb (IOADDRESS, location); value = inportb (IODATA); printf (" %4x %3x %8b %s\n", location, value, value, what[location]); } }