[Delphi] Zapis do pamięci CMOS (Bios)

0

Witam, mam kod do odczytu aktualnej godziny(poniżej).

Jak mam przerobić ten kod, żeby nic nie popsuć w biosie oraz zmienić aktualną godzinę. (Osobiście chcę zmienić godzinę "Resume by Alarm", ale ona w różnych biosach ma rożną pozycje, gdy się dowiem jak zmienić aktualną godzinę wtedy bez problemów przerobię kod na taki co mi pasuje), czyli koniecznie przez BIOS.

Function Bcd2Dec8 (n: byte) : byte;
begin
Bcd2Dec8 := (N shr 4)*10 +N and 15;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
case ZlIOStarted of
  true: StatusBar1.SimpleText :=  'Sterownik portów załadowany';
  false: StatusBar1.SimpleText :=  'Problem ze sterownikiem portów!';
  end;
end;

procedure TForm1.bCzytajClick(Sender: TObject);
begin
try
  portwriteb($70, $04);
  sleep(50);
  eData1.Text := IntToStr(Bcd2Dec8(portreadb($71)));
  portwriteb($70, $02);
  sleep(50);
  eData2.Text := IntToStr(Bcd2Dec8(portreadb($71)));
  portwriteb($70, $00);
  sleep(50);
  eData3.Text := IntToStr(Bcd2Dec8(portreadb($71)));
except
  eData1.Text := '##';
  eData2.Text := '##';
  eData3.Text := '##';
  end;

end;

PS. Nie chce próbować metodą prób i błędów żeby czegoś nie popsuć.

0

tez się kiedyś bawiłem z BIOSem tymi komponentami.. i wszystko chodziło pięknie .. adres szukałem w ten sposób że ustawiłem sobie dzien i godzine alarmu potem zczytywałem sobie cały bios do pliku w postaci hexadecymalnej potem zmieniałem czas alarmu na inny znów zapisywałem BIOS i porównywałem oba pliki jakie bajty się zmieniają. Przeliczyłem czas na hex i łatwo znalazłem.. oprócz tego trzeba obliczyć i zmienić sumę kontrolną zapisywaną na końcu.

0

Jest gdzieś opisany algorytm obliczania sumy kontrolnej dla dumpa BIOSu ?

0

kiedys byl taki dosowy programik, nie pamietam nazwy, mozliwe ze po prostu "bios".
byl napisany w turbopascalu. umozliwial sporo operacji na biosie, bardzo mozliwe ze w jego zrodlach znajdziesz gotowa funkcje do wyliczania sumy.

//EDIT:
http://www.11a.nu/software/bios-pc-bios-security-and-maintanance-toolkit/

0

Podziękówka

0

algorytm jest bardzo prosty :P ... w moim przypadku dodawałem wszystkie wartości z zakresu od 64 do 122 a w bajtach nr 123 i 124 była ta liczba zapisywana

1 użytkowników online, w tym zalogowanych: 0, gości: 1