BYTE CmosReadData(VOID)
{
+ BYTE Value;
SYSTEMTIME CurrentTime;
/* Get the current time */
switch (SelectedRegister)
{
case CMOS_REG_SECONDS:
- return READ_CMOS_DATA(CmosMemory, CurrentTime.wSecond);
+ {
+ Value = READ_CMOS_DATA(CmosMemory, CurrentTime.wSecond);
+ break;
+ }
case CMOS_REG_ALARM_SEC:
- return READ_CMOS_DATA(CmosMemory, CmosMemory.AlarmSecond);
+ {
+ Value = READ_CMOS_DATA(CmosMemory, CmosMemory.AlarmSecond);
+ break;
+ }
case CMOS_REG_MINUTES:
- return READ_CMOS_DATA(CmosMemory, CurrentTime.wMinute);
+ {
+ Value = READ_CMOS_DATA(CmosMemory, CurrentTime.wMinute);
+ break;
+ }
case CMOS_REG_ALARM_MIN:
- return READ_CMOS_DATA(CmosMemory, CmosMemory.AlarmMinute);
+ {
+ Value = READ_CMOS_DATA(CmosMemory, CmosMemory.AlarmMinute);
+ break;
+ }
case CMOS_REG_HOURS:
{
BOOLEAN Afternoon = FALSE;
- BYTE Value = CurrentTime.wHour;
+ Value = CurrentTime.wHour;
if (!(CmosMemory.StatusRegB & CMOS_STB_24HOUR) && (Value >= 12))
{
/* Convert to 12-hour */
if (Afternoon) Value |= 0x80;
- return Value;
+ break;
}
case CMOS_REG_ALARM_HRS:
{
BOOLEAN Afternoon = FALSE;
- BYTE Value = CmosMemory.AlarmHour;
+ Value = CmosMemory.AlarmHour;
if (!(CmosMemory.StatusRegB & CMOS_STB_24HOUR) && (Value >= 12))
{
/* Convert to 12-hour */
if (Afternoon) Value |= 0x80;
- return Value;
+ break;
}
case CMOS_REG_DAY_OF_WEEK:
+ {
/*
* The CMOS value is 1-based but the
* GetLocalTime API value is 0-based.
* Correct it.
*/
- return READ_CMOS_DATA(CmosMemory, CurrentTime.wDayOfWeek + 1);
+ Value = READ_CMOS_DATA(CmosMemory, CurrentTime.wDayOfWeek + 1);
+ break;
+ }
case CMOS_REG_DAY:
- return READ_CMOS_DATA(CmosMemory, CurrentTime.wDay);
+ {
+ Value = READ_CMOS_DATA(CmosMemory, CurrentTime.wDay);
+ break;
+ }
case CMOS_REG_MONTH:
- return READ_CMOS_DATA(CmosMemory, CurrentTime.wMonth);
+ {
+ Value = READ_CMOS_DATA(CmosMemory, CurrentTime.wMonth);
+ break;
+ }
case CMOS_REG_YEAR:
- return READ_CMOS_DATA(CmosMemory, CurrentTime.wYear % 100);
+ {
+ Value = READ_CMOS_DATA(CmosMemory, CurrentTime.wYear % 100);
+ break;
+ }
case CMOS_REG_STATUS_C:
{
- BYTE Value = CmosMemory.StatusRegC;
+ /* Return the old value */
+ Value = CmosMemory.StatusRegC;
/* Clear status register C */
CmosMemory.StatusRegC = 0x00;
- /* Return the old value */
- return Value;
+ break;
}
case CMOS_REG_STATUS_A:
default:
{
// ASSERT(SelectedRegister < CMOS_REG_MAX);
- return CmosMemory.Regs[SelectedRegister];
+ Value = CmosMemory.Regs[SelectedRegister];
}
}
/* Return to Status Register D */
SelectedRegister = CMOS_REG_STATUS_D;
+
+ return Value;
}
VOID CmosWriteData(BYTE Value)
SelectedRegister = CMOS_REG_STATUS_D;
}
-BYTE WINAPI CmosReadPort(ULONG Port)
+BYTE WINAPI CmosReadPort(USHORT Port)
{
ASSERT(Port == CMOS_DATA_PORT);
return CmosReadData();
}
-VOID WINAPI CmosWritePort(ULONG Port, BYTE Data)
+VOID WINAPI CmosWritePort(USHORT Port, BYTE Data)
{
if (Port == CMOS_ADDRESS_PORT)
CmosWriteAddress(Data);
ASSERT(hCmosRam == INVALID_HANDLE_VALUE);
/* Clear the CMOS memory */
- ZeroMemory(&CmosMemory, sizeof(CmosMemory));
+ RtlZeroMemory(&CmosMemory, sizeof(CmosMemory));
/* Always open (and if needed, create) a RAM file with shared access */
SetLastError(0); // For debugging purposes
{
/* Bad CMOS Ram file. Reinitialize the CMOS memory. */
DPRINT1("Invalid CMOS file, read bytes %u, expected bytes %u\n", CmosSize, sizeof(CmosMemory));
- ZeroMemory(&CmosMemory, sizeof(CmosMemory));
+ RtlZeroMemory(&CmosMemory, sizeof(CmosMemory));
}
DPRINT1("CMOS loading %s ; GetLastError() = %u\n", Success ? "succeeded" : "failed", GetLastError());
SetFilePointer(hCmosRam, 0, NULL, FILE_BEGIN);