BIOS Data Area
Aus Lowlevel
Version vom 20. Dezember 2007, 13:04 Uhr von Jgraef (Diskussion | Beiträge) (Disk-Kontroller-Informationen (mach ich zuhause fertig))
In der BIOS Data Area (Abkürzung: BDA) werden wichtige Informationen über Hardware und andere Systemkomponenten gespeichert.
Inhaltsverzeichnis
Aufbau der BIOS Data Area
Die BDA befindet sich im Segment 0x0040, d.h. an der physikalischen Adresse 0x0400. Die folgende Tabelle zeigt den Aufbau dieses Segments:
| Offset | Größe (Bytes) | Beschreibung |
|---|---|---|
| 0x00 | 2 | I/O-Port von COM1 |
| 0x02 | 2 | I/O-Port von COM2 |
| 0x04 | 2 | I/O-Port von COM3 |
| 0x06 | 2 | I/O-Port von COM4 |
| 0x08 | 2 | I/O-Port von LP1 |
| 0x0A | 2 | I/O-Port von LP2 |
| 0x0C | 2 | I/O-Port von LP3 |
| 0x0E | 2 | I/O-Port von LP4 oder Segment der EBDA (bei PS/2) |
| 0x10 | 2 | Equipment word |
| 0x12 | 1 | Manufacturing test data |
| 0x13 | 2 | Speichergröße (in kB) |
| 0x15 | 2 | Manufacturing test data |
| 0x17 | 2 | Tastatur-Status-Flags |
| 0x19 | 1 | Alt+Numpad-Data |
| 0x1A | 2 | Zeiger auf nächsten Buchstaben im Tastatur-Ringpuffer |
| 0x1C | 2 | Zeiger auf letzten Buchstaben im Tastatur-Ringpuffer |
| 0x1E | 32 | Tastatur-Ringpuffer |
| 0x3E | 11 | Disk-Kontroller-Informationen |
| 0x49 | 30 | Grafik-Adapter-Informationen |
| 0x67 | 5 | Unbekannt |
| 0x6C | 4 | Zähler für Interrupt 0x1A |
| 0x70 | 1 | Zähler 24h Überlauf |
| 0x71 | 1 | Keyboard-Control-Break-Flag |
| 0x72 | 2 | Soft-Reset-Flag |
| 0x74 | 4 | Disk-Kontroller-Informationen |
| 0x78 | 4 | LP-Timout-Werte |
| 0x7C | 4 | COM-Timout-Werte |
| 0x80 | 2 | Start des PS/2-Keyboard-Buffers |
| 0x82 | 2 | Ende des PS/2-Keyboard-Buffers |
| 0x84 | 7 | Grafik-Controller-Informationen |
| 0x8B | 13 | Disk-Controller-Informationen |
| 0x96 | 2 | Keyboard-Status-Flag |
| 0x98 | 4 | Zeiger auf Benutzer-Flag |
| 0x9C | 4 | Benutzer-Warte-Zähler |
| 0xA0 | 1 | Benutzer-Warte-Flag |
| 0xA1 | 7 | Reseviert für Netzwerk-Adapter |
| 0xA8 | 4 | Grafik-Adapter-Informationen |
| 0xAC | 68 | Reserviert |
| 0xF0 | 16 | Inter-Application-Kommunikations-Bereich |
Equipment word
| Bits | Beschreibung |
|---|---|
| 15-14 | 00b = 1 Parallelport vorhanden 01b = 2 Parallelports vorhanden 03b = 3 Parallelports vorhanden |
| 13 | 01b = internes Modem vorhanden |
| 12 | 01b = Joystick vorhanden |
| 11-9 | Anzahl der vorhandenen COM-Ports 0-4 |
| 8 | DMA-Controller vorhanden (PC-junior) |
| 7-6 | 00b = 1 Floppylaufwerk vorhanden 01b = 2 Floppylaufwerke vorhanden |
| 5-4 | 00b = EGA oder älter 01b = Farbe 40x25 10b = Farbe 80x25 11b = Monochrom 80x25 |
| 3 | Reserviert |
| 2 | Ob eine PS/2-Maus vorhanden ist |
| 1 | Ob ein mathematischer Koprozessor vorhanden ist |
| 0 | Ob ein Bootfloppy-Laufwerk vorhanden ist |
Tastatur-Status-Flags
Hier werden die Tastatur-Flags gespeichert welche vom Interrupt 0x16 verwendet werden.
Byte 1 (0x17):
| Bits | Beschreibung |
|---|---|
| 7 | 0 = Einfügen ausgeschaltet 1 = Einfügen angeschaltet |
| 6 | 0 = CapsLock aus 1 = CapsLock an |
| 5 | 0 = NumLock aus 1 = NumLock an |
| 4 | 0 = ScrollLock aus 1 = ScrollLock an |
| 3 | 0 = Alt nicht gedrückt 1 = Alt gedrückt |
| 2 | 0 = Strg nicht gedrückt 1 = Strg gedrückt |
| 1 | 0 = LShift nicht gedrückt 1 = LShift gedrückt |
| 0 | 0 = RShift nicht gedrückt 1 = RShift gedrückt |
Byte 2 (0x18):
| Bits | Beschreibung |
|---|---|
| 7 | 0 = Einfügen nicht gedrückt 1 = Einfügen gedrückt |
| 6 | 0 = CapsLock nicht gedrückt 1 = CapsLock gedrückt |
| 5 | 0 = NumLock nicht gedrückt 1 = NumLock gedrückt |
| 4 | 0 = ScrollLock nicht gedrückt 1 = ScrollLock gedrückt |
| 3 | 0 = Pause-Taste inaktiv 1 = Pause-Taste aktiv |
| 2 | 0 = SysReg-Key (?) nicht gedrückt 1 = SysReg-Key gedrückt |
| 1 | 0 = Linkes Alt nicht gedrückt 1 = Linkes Alt gedrückt |
| 0 | 0 = Rechtes Alt nicht gedrückt 1 = Rechtes Alt gedrückt |
Disk-Kontroller-Informationen
Byte 1 (0x3E): Floppy-Kalibrations-Status
| Bits | Beschreibung |
|---|---|
| 7-4 | Reserviert |
| 3 | Ob Floppy-Laufwerk 4 kalibriert ist (PC, XT) |
| 2 | Ob Floppy-Laufwerk 3 kalibriert ist (PC, XT) |
| 1 | Ob Floppy-Laufwerk 2 kalibriert ist |
| 0 | Ob Floppy-Laufwerk 1 kalibriert ist |
Byte 2 (0x3F): Floppy-Motor-Status
| Bits | Beschreibung |
|---|---|
| 7 | 0b = Read- oder Verify-Operation 1b Write- oder Format-Operation |
| 6 | Unbenutzt |
| 5-4 | 00b = Laufwerk 1 01b = Laufwerk 2 10b = Laufwerk 3 (PC, XT) 11b = Laufwerk 4 (PC, XT) |
| 3 | Ob der Motor des Laufwerks 1 eingeschaltet ist |
| 2 | Ob der Motor des Laufwerks 2 eingeschaltet ist |
| 1 | Ob der Motor des Laufwerks 3 eingeschaltet ist |
| 0 | Ob der Motor des Laufwerks 4 eingeschaltet ist |
Byte 3 (0x40):
Floppy-Motor-Timeout
Byte 4 (0x41):
Floppy-Laufwerk-Status
| Bit | Beschreibung |
|---|---|
| 7 | Ob Laufwerk bereit ist |
| 6 | Ob ein Seek-Fehler aufgetreten ist |
| 5 | Ob Floppy-Controller-Test erfolgreich war |
| 4-0 | Error-Code |