CMOS falsch ausgelesen
-
hey ho ich bin es schon wieder.
Ich lese gerade das CMOS aus (Arten der Floppy und Uhrzeit/Datum)also mit dem Floppy habe ich keine Probleme, allerdings mit der Uhrzeit und dem Datum.
die Uhrzeit geht exakt 3 Stunden vor, und das Datum ist völlig falsch.
Schaue ich in das BIOs da steht es richitg drin. Die frage ist jetzt lese ich es falsch aus oder spielt mir VMWare da evtl. einen Streich?ich lese wie folgt aus:
unsigned int BcdToInt(unsigned int value) { int x= value >> 4; x*=10; x+= (value & 0xf); return x; } unsigned char inportb (unsigned short _port) { unsigned char rv; __asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port)); return rv; } void outportb (unsigned short _port, unsigned char _data) { __asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data)); } void DisplayInfo() { outportb(0x70, 0x7); x = inportb(0x71); puts(itoa(BcdToInt(x),buf,10)); puts(". "); outportb(0x70, 0x8); x = inportb(0x71); puts(itoa(BcdToInt(x),buf,10)); puts(". "); outportb(0x70, 0x9); x = inportb(0x71); puts(itoa(BcdToInt(x),buf,10)); puts("\n"); } //sollte eigentlich 18.5.6 ausgeben //tatsächlich gibt er den 18.8.8 aus :-( // wie kommt das denn?
-
Das Datum ist in gepackter Form abgelegt.
(Ist glaub ich nicht BCD gepackt)
-
gargyle schrieb:
Das Datum ist in gepackter Form abgelegt.
(Ist glaub ich nicht BCD gepackt)Doch eigentlich schon packed-bcd (zumindest wenn im Statusregister B das 2te bit nicht gesetzt ist, andernfalls ist es normal binär codiert.)
Ich würds einfach mal auf nem richtigen PC testen. Abgesehen davon könnte die Uhrzeit auch UTC sein und dann muss man halt je nach Zeitzone a bisl was dazu (oder weg?) tun.
-
hmm *lol* die Idee hätte mir natürlich auch kommen können.
habe es jetzt probiert, natürlich geht es
da scheint mir wirklich VMWare ein Streich zu spielen das ist ärgerlich.
-
Hab inzwischen nachgeschaut:
Folgendes sollte man beachten:
Bit 7 von Statusregister D -> Die Daten sind Gültig Ja/Nein
Bit 7 von Statusregister A -> Es findete ein UpDate statt Ja/nein
Bit 2 von Statutregister B -> Datenmodus BCD/Binär
Bit 1 von Statusregister B -> Uhrmodus 24/12
Bit 0 von Statusregister B -> Sommerzeit/Winterzeitund dann gibt es noch das JahrhundertByte.(Offset 50)
-
Buch Tipp:
ISBN 3 8273 1461 5"PC Harwarebuch"
-
gargyle schrieb:
Buch Tipp:
ISBN 3 8273 1461 5"PC Harwarebuch"
jup, genau das Buch hab ich auch. Ist wirklich sehr gut.
-
jo habe mir das Buch jetzt auch bei Amazon gekauft,
schaun wir mal ob es wirklich so gut istvielen Dank
Fabian