micetools/src/micetools/util/micedump/cmos.c

59 lines
1.4 KiB
C

#include <Windows.h>
#include <stdio.h>
/*
Cmos:
00-01: 00 21 <- "00 21" = "Boot: USB, HDD", "10 20" = "Boot HDD,USB"
02-0F: 43 65 87 a9 0b 21 43 65 87 a9 3b 93 99 54
10-19: 35 25 00 00 00 40 4f 40 50 08
1A-1B: 1a 08
1C-1D: 1a 08 <- USB flags(?). 08 = normal, 09 = disabled
1E-1F: 1a 0a
20-2F: 03 14 1d 12 28 00 00 00 00 07 00 00 00 00 00 08
30-3F: 01 80 ce 10 14 00 8a 48 06 01 d4 ff ff 1f 04 00
40-4B: 60 a0 9f 0b a0 29 47 15 7d 80 90 3f
4C: 00 <- SEGA flags. 00 = None, 02 = Security freeze, 03 = Freeze + Certified
4D: 9d
4E: 00 <- 00 = Boot HDD first, 01 = Boot USB first
4F: b4
50-5F: 25 d6 e7 8f 7f 22 72 af b5 1a 00 8f 1c 3c c0 90
60: 00
61: 00
62-6F: 06 37 50 8c 66 bd ac 38 7b 52 4a 04 4c dc
70-7F: 82 62 0d 2a 5d 1c 32 6e 05 af 44 c3 45 2e 08 96
*/
#include "../lib/am/amCmos.h"
#include "../lib/am/amPlatform.h"
AM_PLATFORM_CMOS_PARAM config = {
.index = { { 0, 0 }, { 0, 0 } },
.m_MbrCount = 0,
};
BOOL miceDumpCMOS() {
amCmosDebugLevel = 1;
fprintf(stderr, "Dumping RTC CMOS using %s\n", amCmosVersion);
AM_CMOS_STATUS err = amCmosInit(&config);
if (err != AM_CMOS_STATUS_OK) {
fprintf(stderr, "amCmosInit failed: %d\n", err);
amCmosExit();
return FALSE;
}
for (BYTE index = 0; index < 0x80; index++) {
BYTE data;
amCmosReadByteInRearpart(index, &data);
printf(" %02x", data);
}
puts("");
amCmosExit();
return TRUE;
}