#define GETBATTSEG 0xC000 /* Die Routine zum Auslesen der Batterie steht an C000:06D1 */
#define GETBATTOFS 0x06D1
#define GETBATTTARGET {0xCB, 0xE4, 0x6A, 0x0C, 0x10} /* Dort sollte dieser Code stehen */
int GetBatt()
{
unsigned char test[] = GETBATTTARGET;
unsigned int (far * GetBattValue)();
unsigned char far * p;
int i;
/* Erst testen, ob die Routine auf diesem PV auch vorhanden ist */
p = MK_FP(GETBATTSEG,GETBATTOFS-1);
for (i=0;i<sizeof(test);++i)
{
if (p[i] != test[i]) break;
}
if (i != sizeof(test))
{
/* Oops, an der Stelle steht aber nicht das, was dort stehen sollte */
return -1;
}
else
{
GetBattValue = MK_FP(GETBATTSEG,GETBATTOFS); /* BIOS aufrufen und Wert zurück liefern */
return GetBattValue();
}
}
|