389.txt ************************************************************************ * Edit v1.030 from 2023-06-26 to 2023-07-14 by HSc * ************************************************************************ PC intern 2.0, Systemprogrammierung Tischer, Michael Data Becker 1988 ISBN: 3-89011-311-1 Seite Auszug ======================================================================== 15 1 Wie dieses Buch gelesen werden sollte ------------------------------------------------------------------------ 19 2 Das Gehirn Ihres PC ------------------------------------------------------------------------ 23 2.1 Der Registersatz des 8088 ------------------------------------------------------------------------ 25 2.2 Adressbildung UEber Segment- und Offsetadresse ------------------------------------------------------------------------ 31 2.3 Die kleinen Helfer der CPU ------------------------------------------------------------------------ 31 2.3.1 31 Der DMA-Controller (8237) ------------------------------------------------------------------------ 31 2.3.2 Der Interrupt-Controller (8259) ------------------------------------------------------------------------ 0 2.3.3 32 ------------------------------------------------------------------------ 32 2.3.4 Peripherie- Interface - 8255 ------------------------------------------------------------------------ 32 2.3.5 Der Taktgenerator (8248) ------------------------------------------------------------------------ 33 2.3.6 Zeitgeber - 8253 ------------------------------------------------------------------------ 33 2.3.7 Der Bildschirm- Controller ------------------------------------------------------------------------ 0 Der Disketten-Controlier ------------------------------------------------------------------------ 33 2.3.8 Die mathematischen Coprozessoren (8087/80287/80387) ------------------------------------------------------------------------ 34 2.4 Die CPU und der Speicher ------------------------------------------------------------------------ 37 3 Interrupts - eine Einfuehrung ------------------------------------------------------------------------ 40 3.1 Aufbau der Interrupt- Vektor-Tabeiie ------------------------------------------------------------------------ 42 3.2 Die verschiedenen Interrupt-Arten ------------------------------------------------------------------------ 43 3.2.1 Software-Interrupts ------------------------------------------------------------------------ 44 3.2.2 Hardware-Interrupts ------------------------------------------------------------------------ 45 3.3 Die Interrupts auf einen Blick ------------------------------------------------------------------------ 47 4 Aufruf der Interrupts aus Hochsprachen ------------------------------------------------------------------------ 49 4.1 Interrupt-Aufruf aus BASIC ------------------------------------------------------------------------ 58 4.2 Interrupt-Aufruf aus Turbo Pacal ------------------------------------------------------------------------ 63 4.3 Interrupt- Aufruf aus C ------------------------------------------------------------------------ 71 5 Aufruf der Interrupts aus Assembler ------------------------------------------------------------------------ 73 5.1 Nutzung der Makro-Funtion des Assemblers ------------------------------------------------------------------------ 74 5.2 Makro-Beispiel ------------------------------------------------------------------------ 79 6 DOS ------------------------------------------------------------------------ 81 6.1 Die Entwicklungsgeschichte des DOS ------------------------------------------------------------------------ 87 6.2 Der interne Aufbau des DOS ------------------------------------------------------------------------ 90 6.3 Booten des DOS ------------------------------------------------------------------------ 91 6.4 COM- und EXE-Programme ------------------------------------------------------------------------ 94 6.4.1 COM-Programme ------------------------------------------------------------------------ 99 6.4.2 EXE-Programme ------------------------------------------------------------------------ 103 6.5 Zeichenein- und -ausgabe mit DOS ------------------------------------------------------------------------ 104 6.5.1 Handle -Funktionen ------------------------------------------------------------------------ 109 6.5.2 Traditionelle Funktionen ------------------------------------------------------------------------ 113 6.5.3 Programmbeispiele ------------------------------------------------------------------------ 122 6.6 Dateiverwaltung mit DOS ------------------------------------------------------------------------ 123 6.6.1 Handle-Funktionen ------------------------------------------------------------------------ 125 6.6.2 FCB-Funktionen ------------------------------------------------------------------------ 133 6.7 Zugriff auf Directories mit DOS ------------------------------------------------------------------------ 136 6.7.1 Dateisuche Ober FCB-Funktionen ------------------------------------------------------------------------ 137 6.7.2 Dateisuche Ober Handle- Funktionen ------------------------------------------------------------------------ 138 6.7.3 Programmbeispiele ------------------------------------------------------------------------ 156 6.8 Die EXEC-Funktion ------------------------------------------------------------------------ 163 6.8.1 Program mbeispiel ------------------------------------------------------------------------ 167 6.9 RAM-Speicherverwaltung des DOS ------------------------------------------------------------------------ 171 6.9.1 Programmbeispiel ------------------------------------------------------------------------ 189 6.10 DOS-Filter ------------------------------------------------------------------------ 192 6.10.1 Programmbeispiel ------------------------------------------------------------------------ 201 6.11 Ctrl-Break- und Critical-Error-Interrupt ------------------------------------------------------------------------ 208 6.12 DOS-Geraetetreiber ------------------------------------------------------------------------ 211 6.12.1 Zeichentreiber ------------------------------------------------------------------------ 212 6.12.2 Blocktreiber ------------------------------------------------------------------------ 213 6.12.3 Die Struktur eines Geraetetreibers ------------------------------------------------------------------------ 216 6.12.4 Die Funktionen eines Geraeetrebers ------------------------------------------------------------------------ 234 6.12.5 Uhrtreiber ------------------------------------------------------------------------ 236 6.12.6 Aufruf eines Geraetetreibers durch das DOS ------------------------------------------------------------------------ 237 6.12.7 Direkter Zugriff auf Geraetetreiber: IOCTL ------------------------------------------------------------------------ 239 6.12.8 Tips zur Entwicklung eines Geraetetreibers ------------------------------------------------------------------------ 240 6.12.9 Treiberbeispiele ------------------------------------------------------------------------ 265 6.12.10 CD-ROM - em ganz besonderer Geraetetreiber ------------------------------------------------------------------------ 268 6.13 Wie verwaltet DOS Massenspeicher? ------------------------------------------------------------------------ 0 6.14 283 ------------------------------------------------------------------------ 0 Wie wahre Kompatibilitaet9 ------------------------------------------------------------------------ 0 OSich ------------------------------------------------------------------------ 0 6.15 285 Geheime D-Strukturen ------------------------------------------------------------------------ 0 6.16 292 DOS4.0 ------------------------------------------------------------------------ 299 7 Das BIOS ------------------------------------------------------------------------ 302 7.1 Booten des Systems ------------------------------------------------------------------------ 304 7.2 Feststellen der BIOS-Verson ------------------------------------------------------------------------ 304 7.3 Feststellen des PC-Typs ------------------------------------------------------------------------ 307 7.4 Bildschirmausgabe mit dem BIOS ------------------------------------------------------------------------ 320 7.4.1 Programmbeispiele ------------------------------------------------------------------------ 0 7.4.2 Das EGA-/VGA-BIOS ------------------------------------------------------------------------ 356 7.4.3 Beispielprogramme ------------------------------------------------------------------------ 382 7.5 Feststellen der Konfiguration mit Hilfe des BIOS Prog ------------------------------------------------------------------------ 384 7.6 Feststellen der Groesze des RAM-Speicrs mit Hlfe des BIOS ------------------------------------------------------------------------ 384 7.6.1 Programmbeispiele ------------------------------------------------------------------------ 390 7.7 Zugriff auf Disketten mit dem BIOS ------------------------------------------------------------------------ 398 7.7.1 Programmbeispiele ------------------------------------------------------------------------ 421 7.8 Zugriff auf Festplatten mit Hilfe des BIOS ------------------------------------------------------------------------ 429 7.9 Zugriff auf die serielle Schnittstelle mit Hilfe des BIOS ------------------------------------------------------------------------ 435 7.10 Der Kassetten-Interrupt ------------------------------------------------------------------------ 436 7.10.1 Der Kassetten- Interrupt em AT ------------------------------------------------------------------------ 441 7.10.2 Programmbeispiele ------------------------------------------------------------------------ 463 7.11 Zugriff auf die Tastatur unter BIOS ------------------------------------------------------------------------ 468 7.1 1.1 Programmbeispiele ------------------------------------------------------------------------ 495 7.12 Zugriff auf den Drucker mit BIOS ------------------------------------------------------------------------ 496 7.12.1 Programmbeispiele ------------------------------------------------------------------------ 508 7.13 Abfrage von Datum und Uhrzeit mit dem BIOS ------------------------------------------------------------------------ 511 7.14 Die Variablen des BIOS ------------------------------------------------------------------------ 521 8 TSR-Programme ------------------------------------------------------------------------ 571 9 Ton-ErzeugungmftdemPC ------------------------------------------------------------------------ 576 9.1 Programmbeispiele ------------------------------------------------------------------------ 585 10 Programmierung und Zugriff auf die Video-Karten ------------------------------------------------------------------------ 588 10.1 Aufbau einer Video-Karte ------------------------------------------------------------------------ 598 10.2 Die IBM-Monochrom-Karte ------------------------------------------------------------------------ 614 10.3 Die Hercules -Grafik-Karte ------------------------------------------------------------------------ 634 10.4 Die IBM-Color-Karte ------------------------------------------------------------------------ 660 10.5 Die EGA-/VGA-Karte ------------------------------------------------------------------------ 682 10.6 Ermittlung der installierten Video-Karten ------------------------------------------------------------------------ 703 10.7 Zugriff auf das Video-RAM aus Hochsprachen ------------------------------------------------------------------------ 715 11 Die Echtzeituhr im AT - Zugriff und Programmierung ------------------------------------------------------------------------ 0 11.1 Beispielprogramme ------------------------------------------------------------------------ 733 12 Tastatur-Programmierung ------------------------------------------------------------------------ 761 13 EMS-Speicher ------------------------------------------------------------------------ 769 13.1 Beispielprogramme ------------------------------------------------------------------------ 787 14 Mausprogrammierung ------------------------------------------------------------------------ 0 14.1 Programmbeispiele ------------------------------------------------------------------------ 835 15 Ermittiung des Prozessortyps ------------------------------------------------------------------------ 855 16 Festpiaften-Partitionen ------------------------------------------------------------------------ 869 17 Die Hardware-Interrupts des PC ------------------------------------------------------------------------ 0 17.1 Programmbeispiele ------------------------------------------------------------------------ 895 18 Die Ports des PC ------------------------------------------------------------------------ 899 19 Das Zusammenspiel zwischen Hardware, BIOS und DOS am Beispiel der Tastatur ------------------------------------------------------------------------ 913 Anhang ------------------------------------------------------------------------ 916 A: Beschreibung der Hardware -Interrupts ------------------------------------------------------------------------ 919 B: Beschreibung der Funktionen der BIOS-Interrupts ------------------------------------------------------------------------ 980 C: Beschreibung der Funktionen der BIOS-Interrupts ------------------------------------------------------------------------ 1070 D: Beschreibung der DOS-Interrupts und ihrer Funktionen ------------------------------------------------------------------------ 0 Beschreibung der Funktionen des EMM ------------------------------------------------------------------------ 1079 E: Beschreibung der Funktionen des EGA- und VGA-BIOS ------------------------------------------------------------------------ 1111 F: Beschreibung der Funktionen aus ------------------------------------------------------------------------ 0 des Mtreibers ------------------------------------------------------------------------ 1130 G: EinfUhrung in die Zahiensysteme ------------------------------------------------------------------------ 1133 H: Glossar ------------------------------------------------------------------------ 1154 I: Scan-Codes ------------------------------------------------------------------------ 1155 J: ASCII-Tabelle ------------------------------------------------------------------------ 1157 K: Stichwortverzeichnis ------------------------------------------------------------------------ ******* EOF ************************************************************