home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-03-02 | 80.6 KB | 1,282 lines |
-
- ** technische Referenz für Programmierer für MSDOS und den IBM PC **
- ─────────────────────────┤ eingetragene Anwenderversion ├───────────────────────────
- nicht für den allgemeinen Vertrieb
- Urheberrecht (c) 1987, 1990 Dave Williams
- Deutsche Übersetzung Urheberrecht (c) 1990 Klaus Overhage
- Änderungen und Erweiterungen Urheberrecht (c) 1990 Klaus Overhage
-
-
- K A P I T E L Z W E I
-
-
- CPU Port Zuordnungen, Systemspeicherabbildung, BIOS Datenbereich,
- Interrupts 00h bis 09h
-
-
-
- I N H A L T E
-
- Einführung ........................................................... 2**1
- Systemspeicherabbildung .............................................. 2**2
- PC Port Zuordnung .................................................... 2**3
- reservierte Speicherbereiche ......................................... 2**4
- Interruptvektor-Tabelle ...................................... "
- BIOS Datenbereich ............................................ "
- DOS Datenbereich ............................................. "
- BASIC Datenbereich ........................................... "
- EGA Kennung .................................................. "
- Modell und BIOS ID ........................................... "
- die IBM PC System Interrupts (Übersicht) ............................. 2**5
- grafische Schnellübersicht 00h-0FFh .......................... "
- die IBM-PC System Interrupts (ausführlich) ........................... 2**6
- 00h-0Fh ...................................................... "
-
-
-
- Einführung ........................................................... 2**1
-
- Für die Übereinstimmung in dieser Referenz, sind alle Adressen und Offsets in
- Hexadezimal, (falls nicht anders angegeben). Alle hexadezimale Zahlen sind mit einer
- führenden Null versehen, wenn sie mit einem alphabetischen Zeichen beginnen,
- und enden mit dem Kleinbuchstabe H(h). Die Formate entsprechen der allgemeinen
- Verwendung.
-
-
-
- Systemspeicherabbildung .............................................. 2**2
-
- Der IBM PC behandelt seinen Adreßbereich als 64k Segmente, aufgeteilt in
- Einzelsegmente zu 16k und dann ferner wie notwendig.
-
- ┌──────┬─────┬─────┬──────────────────────────────────────────────────────────┐
- │ Start│Start│Ende │ │
- │ addr.│addr.│addr.│ Verwendung │
- │ (Dec)│ (Hex) │ │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ *640k RAM Area* │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 0k │ │ Start vom RAM, erstes K ist Interruptvektor-Tabelle │
- │ 16k │00000-03FFF│ PC-0 Systemboard RAM Ende │
- │ 32k │04000-07FFF│ │
- │ 48k │08000-0BFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 64k │10000-13FFF│ PC-1 Systemboard RAM Ende │
- │ 80k │14000-17FFF│ │
- │ 96k │18000-1BFFF│ │
- │ 112k │1C000-1FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 128k │20000-23FFF│ │
- │ 144k │24000-27FFF│ │
- │ 160k │28000-2BFFF│ │
- │ 176k │2C000-2FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 192k │30000-33FFF│ │
- │ 208k │34000-37FFF│ │
- │ 224k │38000-3BFFF│ │
- │ 240k │3C000-3FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 256k │40000-43FFF│ PC-2 Systemboard RAM Ende │
- │ 272k │44000-47FFF│ │
- │ 288k │48000-4BFFF│ │
- │ 304k │4C000-4FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 320k │50000-53FFF│ │
- │ 336k │54000-57FFF│ │
- │ 352k │58000-5BFFF│ │
- │ 368k │5C000-5FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 384k │60000-63FFF│ │
- │ 400k │64000-67FFF│ │
- │ 416k │68000-6BFFF│ │
- │ 432k │6C000-6FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 448k │70000-73FFF│ │
- │ 464k │74000-77FFF│ │
- │ 480k │78000-7BFFF│ │
- │ 496k │7C000-7FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 512k │80000-83FFF│ │
- │ 528k │84000-87FFF│ │
- │ 544k │88000-8BFFF│ das original IBM PC-1 BIOS begrenzt den Speicher bei 544k│
- │ 560k │8C000-8FFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 576k │90000-93FFF│ │
- │ 592k │94000-97FFF│ │
- │ 609k │98000-9BFFF│ │
- │ 624k │9C000-9FFFF│ bis 640k (oberstes Ende vom RAM Adreßbereich) │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ A0000 ***** 64k ***** EGA/VGA Startadresse │
- │ A0000 ***** 64k ***** Toshiba 1000 DOS ROM (MS-DOS 2. 11V) │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 640k │A0000-A95B0│ MCGA 320x200 256 Farben Bildschirmpuffer │
- │ │ -AF8C0│ MCGA 640x480 2 Farben Bildschirmpuffer │
- │ │ -A3FFF│ │
- │ 656k │A4000-A7FFF│ │
- │ 672k │A8000-ABFFF│ dieses 64k Segment kann für ein zusammenhängendes DOS RAM│
- │ 688k │AC000-AFFFF│ mit geeigneter Hardware und Software benutzt werden │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ B0000 ***** 64k ***** Mono und CGA Adresse │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 704k │B0000-B3FFF│4k Monochrome Anzeige |der PCjr und die ersten Tandy 1000 │
- │ 720k │B4000-B7FFF│ |leiten das BIOS zum direkten │
- │ 736k │B8000-BBFFF│ 16k CGA benutzt |Schreiben in den B8 Bereich zum │
- │ 756k │BC000-BFFFF│ |Video Gate Bereich und reserv. RAM │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ C0000 ***** 64k *************** ROM Erweiterung │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 768k │C0000-C3FFF│ 16k EGA BIOS C000:001E EGA BIOS Kennung (Buchstaben IBM) │
- │ 784k │C4000-C5FFF│ │
- │ │C6000-C63FF│ 256 Bytes Professional Graphics Display Kommunikationsb. │
- │ │C6400-C7FFF│ │
- │ 800k │C8000-CBFFF│ 16k Festplatte Steuereinheit BIOS, Laufwerk 0 vorgegeben │
- │ │CA000 │ einige zweite Diskette (High Density) BIOS Steuereinheit │
- │ 816k │CC000-CDFFF│ 8k IBM PC Netzwerk NETBIOS │
- │ │CE000-CFFFF│ │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ D0000 ***** 64k ***** ROM Erweiterung │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 832k │D0000-D7FFF│ 32k IBM Cluster Adapter | PCjr erster ROM Einschub │
- │ │DA000 │ Sprachkommunikation | Adressenbereich. │
- │ 848k │D4000-D7FFF│ | allgemein Erweiterungsspeicher │
- │ 864k │D8000-DBFFF│ | Seitenüberlagerungsbereich. │
- │ 880k │DC000-DFFFF│ | │
- │ │DE000 │ TI Pro vorgegebener Bildschirmpuffer, 4k │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ E0000 ***** 64k ***** ROM Erweiterung │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 896k │E0000-E3FFF│ | PCjr zweiter ROM Einschub │
- │ 912k │E4000-E7FFF│ | Adressenbereich │
- │ 928k │E8000-EBFFF│ | │
- │ 944k │EC000-EFFFF│ | freier ROM Sockel beim AT │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ F0000 ***** 64k ***** System │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 960k │F0000-F3FFF│ von IBM reserviert | Kassette Adressenbereich │
- │ 976k │F4000- │ | (PCjr Kassette) │
- │ │F6000 │ Anfang ROM BASIC | BASIC) │
- │ 992k │F8000-FB000│ | │
- │ 1008k│FC000-FFFFF│ ROM BASIC und original | │
- │ │ │ BIOS(Kompatibilitäts BIOS | │
- │ │ │ in PS/2) | │
- │ 1024k│ FFFFF│ Ende des Speichers (1024k) für 8088 Maschinen │
- ├──────┼───────────┴─┬────────────────────────────────────────────────────────┤
- │ 384k │100000-15FFFF│80286/AT Erweiterungsspeicher Bereich,1Mb Systemplatine │
- │ 15Mb │100000-FFFFFF│80286/AT Erweiterungsspeicher Adreßbereich │
- │ 15Mb │160000-FDFFFF│Mikro Kanal RAM Erweiterung (15Mb Erweiterungsspeicher) │
- │ 128k │FE0000-FFFFFF│Systemboard ROM (PS/2 erweitertes BIOS) │
- └──────┴─────────────┴────────────────────────────────────────────────────────┘
-
- Beachten sie daß das ROM BIOS einen doppelten Adreßbereich hat, welcher
- veranlässt das beide am Ende von der 1 Megabyte im echtem Modus und am Ende
- der 16 Megabyte des geschützten Modus erscheinen. Die Adressen von 0E0000
- bis 0FFFFF sind gleich wie 0FE0000 bis 0FFFFFF. Dies ist notwendig wegen
- der Unterschiede in der Speicheradressierung zwischen echtem und
- geschützten Modus.
-
-
-
- PC Port Zuordnung .................................................... 2**3
-
-
- D sind allgemeine Funktionen im IBM Bereich. Der PCjr, PC-AT, PC Convertible
- und PS/2 (beide Busse) haben Erweiterungen. Im gewissen Rahmen, (vom AT und
- der PS/2 Reihe ignoriert) duplizieren, oder teilen die Anschlüsse willkürlich neu
- zu. Falls Programme wesentliche Portaddressen zur Video oder Systemsteuerung
- benutzen, sollte man feststellen auf welcher Maschine es läuft, um die
- richtigen Portadressen zu benutzen.
-
- Hex Adresse Funktion Modelle
- PCjr|PC|XT|AT|CVT|M30|PS2
-
- 0000-000F 8237 DMA Steuereinheit PC PC
- 0010-001F 8237 DMA Steuereinheit AT PS2 AT
- 0020-0027 8259A Interrupt Steuereinheit PS2
- 0020-002F IOSGA Interrupt Funktion PS2 PS2
- 0020-003F 8259A Interrupt Steuereinheit (AT)
- 0020-0021 Interrupt Steuereinheit 1, 8259A PC AT PS2
- 0040-0043 programmierbarer Zeit-Zähler 8253 PC
- 0040-0047 programmierbare Zeit-Zähler PS2
- 0040-005F 8253-5 programmierbare Zeit-Zähler AT
- Anmerkung 1) 0041 war auffrischen des Speichers in PCs.
- Wird nicht benutzt bei PS/2.
- 2) einige der ersten 80386 Maschinen benutzen
- statisches RAM und benutzen dies nicht, d.h.
- Der PCjr frischt den vertikalen Strahlrück-
- laufsignal des Bildschirms auf.
- 0060-0063 Tastatur Steuereinheit 8255A PC
- 0060-006F 8042 Tastatur Steuereinheit AT
- 0060 IOSGA Tastatureingabe Port PS2
- 0061 Lautsprecher PCjr PC XT AT CVT
- 0061 IOSGA Lautsprechersteuerung M30 PS2
- 0061 auf einige Nachbauten, Steuerung Turbo Modus über Bit 2
- 0061 Toshiba 1000 - Systembefehl
- 0062 IOSGA Ausstattungskontrolle M30 PS2
- 0062 Toshiba 1000 - Systemzustand, Port C
- 0063 SSGA, nicht dokumentiert PS2
- 0063 Toshiba 1000 - Modus einstellen
- 0064 Tastatur Hilfseinheit PS2
- 0065-006A SSGA, nicht dokumentiert PS2
- 006B SSGA, RAM aktivieren / remap PS2
- 006C-006F SSGA, nicht dokumentiert PS2
- 0070 AT CMOS schreiben interne Register
- 0071 AT CMOS lesen interne Register
- 0070-0071 CMOS Echtzeituhr, NMI maskieren PS2
- 0070-007F CMOS Echtzeituhr, NMI maskieren AT
- 0074-0076 reserviert PS2
- 0800-008F SSGA DMA Seitenregister PS2
- 0080-009F DMA Seitenregister, 74LS612 AT
- 0090 zentrale Vermittlungssteuerung Port (Mikro Kanal)
- 0091 Rückmeldung gewählte Karte (Mikro Kanal)
- 0092 Systemsteuerung Port A (Mikro Kanal)
- 0093 reserviert (Mikro Kanal)
- 0094 Systemboard Einstellung (Mikro Kanal)
- 0096 POS "CD Einstellung" Selektor (Mikro Kanal)
- 00A0-00A1 Interrupt Steuereinheit 2, 8259A AT PS2
- 00A0-00AF IOSGA NMI Maskenregister PS2
- 00B0-00BF Echtzeituhr/Kalender, (nicht dokumentiert) PS2
- 00C0-00DF reserviert PCjr PC XT AT CVT M30
- 00C0-00CF DOS ROM Register, Toshiba 1000
- 00D0-00EF Spezialregister, Toshiba 1000
- 00C0 0C1 Tastenregister, Toshiba 1000
- 00C1 Tastatur Senderegister, Toshiba 1000
- 00C2 Tastatur Empfangsregister, Toshiba 1000
- 00C3 Tastatur Statusregister, Toshiba 1000
- 00C8 DOS ROM Seite Register, Toshiba 1000
- 00E0 CPU Geschwindigkeitssteuerung, Toshiba 1000
- 00E1 Tastatur Zustand/0E2 Tastenregister, Toshiba 1000
- 00E2 Arbeitsregister, Toshiba 1000
- 00E3 0E4 Tastenregister, Toshiba 1000
- 00E4 Systemsteuerungsregister 0, Toshiba 1000
- 00E5 0E6 Tastenregister, Toshiba 1000
- 00E6 Systemsteuerungsregister 1, Toshiba 1000
- 00EE EMS Einheit Index, Toshiba 1000
- 00EF EMS Einheit Daten, Toshiba 1000
- 00C0-00DF DMA Steuereinheit 2, 8237A-5 AT PS2
- 00E0-00EF Echtzeituhr/Kalender (nicht dokumentiert) M30 PS2
- 00F0-00FF PS/2 Arithmetikprozessor I/O (Modell 50+)(Diskette IO beim PCjr)
- 0100-0101 PS/2 POS Adapter ID Auskunft (Mikro Kanal)
- 0102-0107 PS/2 POS Adapter Ausstattungsauskunft (Mikro Kanal)
- 01F0-01F8 Festplatte AT PS2
- 0200-0201 Spielsteuerungsadapter (Joystick)
- 0200-020F Spielsteuerungseinheit PC AT
- 0208-020F Toshiba 1000 - EMS Einheit I/O #1
- 020C-020D von IBM reserviert
- 0210-0217 Erweiterungsbox (PC, XT)
- 0218-021F Toshiba 1000 - EMS Einheit I/O #2
- 021F von IBM reserviert
- 0258-025F Toshiba 1000 - EMS Einheit I/O #3
- 0258-0259 LIM EMS 3.1 (nicht definiert in 3.2+)
- 0268-026F Toshiba 1000 - EMS Einheit I/O #4
- 0278-027F paralleler Druckeranschluß 2 AT
- 0278-027B paralleler Druckeranschluß 3 PS2
- 02A2 Taktgeber Chip in den ersten Sperry PCs
- 02A8-02AF Toshiba 1000 - EMS Einheit I/O #5
- 02B8-02BF Toshiba 1000 - EMS Einheit I/O #6
- 02B0-02DF EGA (alternativ) PC AT
- 02C0-02DF Toshiba 1000 - Echtzeituhr
- 02E1 GPIB (Adapter 0) AT
- 02E2-02E3 Datenerfassung (Adapter 0) AT
- 02E8 "Industriestandard" COM4
- 02E8-02EF Toshiba 1000 - EMS Einheit I/O #7
- 02F8-02FF serielle Kommunikationstechnik (COM2) PC AT PS2
- 0300-031F Prototypenkarte PC AT
- 0300-031F Leading Edge Modell D Taktgeber --------------------
- 0320-032F Festplattensteuereinheit PC
- 0320 Perstor erste HD Steuereinheit --------------------
- 0324 Perstor zweite HD Steuereinheit --------------------
- 0340 Sony CD-ROM --------------------
- 0348-0357 DCA 3278
- 0360-0367 PC Netzwerk (niedrige Adresse)
- 0368-036F PC Netzwerk (hohe Adresse) AT
- 0370 Colorado Speicher externes Bandlaufwerk Steuerungsport
- bei einigen "zweite Steuereinheit" für Diskettenkarten
- 0378-037F paralleler Druckeranschluß PC AT
- 0378-037B paralleler Druckeranschluß PS2
- 0380-038F SDLC, bi-synchron 2 PC AT
- 0380-0389 BSC Kommunikationstechnik (alternativ) PC
- 0390-0393 Cluster (Adapter 0) PC AT
- 03A0-03A9 BSC Kommunikationstechnik (erste) PC AT
- 03B0-03BF Monochrom/paralleler Druckeradapter PC AT
- 03B4-03B5 Video Untersystem PS2
- 03BA Video Untersystem PS2
- 03BC-03BF paralleler Druckeranschluß 1 PS2
- 03C0-03CF erweiteter Grafikadapter
- 03C0-03DA Video Untersystem und DAC PS2
- 03DA Video Statusregister AT&T 6300, Olivetti PC
- 03D0-03DF CGA, MCGA, VGA Adaptersteuerung
- 03DE Videomodus Selektorregister AT&T 6300, Olivetti PC
- 03E8h "Industriestandard" COM3
- 03F0-03F7 Diskettensteuereinheit PC AT PS2
- 03F0 Colorado Speicher internes Bandlaufwerk Steuerungsport
- 03F8-03FF serielle Kommunikationstechnik (COM1) PC AT PS2
- 06E2-06E3 Datenerfassung (Adapter 1) AT
- 0790-0793 Cluster (Adapter 1) PC AT
- 0AE2-0AE3 Datenerfassung (Adapter 2) AT
- 0B90-0B93 Cluster (Adapter 2) PC AT
- 0EE2-0EE3 Datenerfassung (Adapter 3) AT
- 1390-1393 Cluster (Adapter 3) PC AT
- 22E1 GPIB (Adapter 1)
- 2390-2393 Cluster (Adapter 4) PC AT
- 4258 LIM EMS 3.1 (nicht definiert in 3.2+) ----------------
- 42E1 GPIB (Adapter 2) AT
- 62E1 GPIB (Adapter 3) AT
- 8258 LIM EMS 3.1 (nicht definiert in 3.2+) ----------------
- 82E1 GPIB (Adapter 4) AT
- A2E1 GPIB (Adapter 5) AT
- C258 LIM EMS 3.1 (nicht definiert in 3.2+) ----------------
- C2E1 GPIB (Adapter 6) AT
- E2E1 GPIB (Adapter 7) AT
-
- Anmerkung 1) IOSGA= I/O Unterstützung Gate Array
- SSGA= Systemunterstützung Gate Array
- 2) I/O Adressen, Hex 000 bis 0FF, sind für das Systemboard reserviert.
- Hex 100 bis 3FF sind verfügbar auf dem I/O Kanal.
- 3) Diese Adressen werden auf den Adapterkarten eingestellt.
- IBM kann alle der nicht aufgeführten Adressen in der Zukunft benutzen.
- 4) SDLC Kommunikation und sekundäre binäre Synchrone Kommunikationstechnik
- kann nicht gemeinsam benutzt werden, weil sich ihre Portadressen
- überlappen.
-
-
-
- Reservierte Speicherbereiche ......................................... 2**4
-
- ┌──────────────────────────────────────────────────────────────────────────────
- │ 000-3FF - 1k DOS Interruptvektor-Tabelle, 4 Byte Vektoren für ints 00h-0FFh.
- │ 30:00 - benutzt als Stapelbereich während POST und den Urlader Routinen.
- │bis 3F:FF Dieser Stapelbereich kann durch ein Anwenderprogramm verschoben werden.
- ├──────────────────────────────────────────────────────────────────────────────
- │ ** der BIOS Datenbereich ** Adressen von 400h bis 4FFh
- ├─────┬───────┬────────────────────────────────────────────────────────────────
- │addr.│ Größe │ Beschreibung
- ├─────┼───────┼────────────────────────────────────────────────────────────────
- │40:00│ Wort │ COM1 Portadresse | diese Adressen sind auf Null gesetzt außerhalb
- │40:02│ Wort │ COM2 Portadresse | der OS/2 DOS Kompatibilitätsbox falls irgendeiner
- │40:04│ Wort │ COM3 Portadresse | der OS/2 COMxx. SYS Treiber geladen sind.
- │40:06│ Wort │ COM4 Portadresse |
- │40:08│ Wort │ LPT1 Portadresse
- │40:0A│ Wort │ LPT2 Portadresse
- │40:0C│ Wort │ LPT3 Portadresse
- │40:0E│ Wort │ LPT4 Portadresse (nicht zulässig in PS/2 Maschinen)
- │40:0E│ Wort │ PS/2 Zeiger zum erweiterten BIOS Datenbereich (1k) am oberen Ende vom RAM
- │40:10│ Wort │ Ausstattungskennzeichen (siehe int 11h)
- └─────┴───────┤ Bits:
- │ 0 0 kein Diskettenlaufwerk vorhanden
- │ 1 falls Diskettenlaufwerk vorhanden (siehe Bits 6&7)
- │ 1 0 kein Arithmetikprozessor installiert
- │ 1 falls 80x87 installiert (nicht zulässig im PCjr)
- │ 2, 3 Speicher auf Systemboard (nicht benutzt beim AT oder PS/2)
- │ 0, 0 16k 0, 1 32k
- │ 1, 0 48k 1, 1 64k
- │ 4, 5 Videomodus beim Systemstart
- │ 0, 0 kein Videoadapter
- │ 0, 1 40 Spalten Farbe (beim PCjr vorgegeben)
- │ 1, 0 80 Spalten Farbe
- │ 1, 1 MDA
- │ 6, 7 Anzahl Diskettenlaufwerke
- │ 0, 0 1 Laufwerk 0, 1 2 Laufwerke
- │ 1, 0 3 Laufwerke 1, 1 4 Laufwerke
- │ 8 0 DMA vorhanden
- │ 1 DMA nicht vorhanden (PCjr, Tandy 1400, Sanyo 55x)
- │ 9,A,B Anzahl serieller Anschlüsse RS232
- │ C Spieleadapter (Joystick)
- │ 0 kein Spieleadapter
- │ 1 falls Spieleadapter vorhanden
- │ D serieller Drucker (ausschließlich PCjr)
- │ 0 kein Drucker
- │ 1 serieller Drucker vorhanden
- ┌──────┘ E, F Anzahl paralleler Drucker die installiert sind
- │ Anmerkung 1) der IBM PC und AT speichert die Einstellungen vom Systemboard
- └───┐ oder der CMOS RAM Einstellung (als wenn er diese vom BIOS
- │ beim Power-On Selbsttest(POST) erhalten hat) an den Adressen 40:10h
- │ und 40:13h. 00000001b bedeutet "AN ", 00000000b ist "AUS".
- ┌─────┬────┴──┐
- │40:12│ Byte │ reserviert (PC, AT)
- └─────┴───────┤ Anzahl Fehler erkannt bei Verbindung der Infrarottastatur (PCjr)
- ┌─────┬───────┤ POST Zustand (Convertible)
- │40:13│ Wort │ verfügbar Speichergröße in Kbytes (minus Bildspeicher im PCjr)
- ├─────┼───────┤ dies ist der Wert der beim int 12h zurückgegeben wird
- │40:15│ Wort │ reserviert
- │40:17│ Byte │ Tastaturkennzeichen Byte 0 (siehe int 9h)
- └─────┴───────┤ Bit 7 Einfügemodus an 3 alt gedrückt
- │ 6 Capslock an 2 ctrl gedrückt
- │ 5 Numlock an 1 linke Umschalttaste gedrückt
- ┌─────┬───────┤ 4 Scrollock an 0 rechte Umschalttaste gedrückt
- │40:18│ Byte │ Tastaturkennzeichen Byte 1 (siehe int 9h)
- └─────┴───────┤ Bit 7 Einfügen gedrückt 3 ctrl-numlock(Pause) umgeschaltet
- │ 6 Capslock gedrückt 2 PCjr Tastaturklick eingeschaltet
- │ 5 Numlock gedrückt 1 PCjr ctrl-alt-capslock gedrückt
- ┌─────┬───────┤ 4 Scrollock gedrückt 0
- │40:19│ Byte │ Speicher für alternative Tastatureingabe (wird normalerweise nicht benutzt)
- │40:1A│ Wort │ Zeiger zum Anfang des Tastaturpuffers
- │40:1C│ Wort │ Zeiger zum Ende des Tastaturpuffers
- │40:1E│32bytes│ 16 2-byte Einträge für kreisförmigen Tastaturpuffer, lesen mit int 16h
- │40:3E│ Byte │ Zustand beim positionieren - falls Bit= 0, beim nächsten positionieren
- └─────┴───────┤ Laufwerk kalibrieren und auf Spur 0 positionieren.
- │ Bit 3 Laufwerk D Bit 2 Laufwerk C
- ┌─────┬───────┤ 1 Laufwerk B 0 Laufwerk A
- │40:3F│ Byte │ Status Diskettenmotor (Bit ist gesetzt um die Bedingung anzuzeigen)
- └─────┴───────┤ Bit 7 Schreibzugriff aktiv 3 Motor an (Diskette 3)
- │ 6 2 Motor an (Diskette 2)
- │ 5 1 B: Motor an (Diskette 1)
- ┌─────┬───────┤ 4 0 A: Motor an (Diskette 0)
- │40:40│ Byte │ Zähler für Motorabschaltung
- │ │ │ startet bei 37 und wird bei jedem Systemtakt um 1 vermindert.
- │ │ │ Motor wird ausgeschaltet wenn der Zähler = 0 ist.
- │40:41│ Byte │ Status der letzten Diskettenoperation:
- └─────┴───────┤ Bit 7 Zeitüberschreitung 3 DMA Überlauf
- │ 6 Positionierungsfehler 2 Sektor nicht gefunden
- │ 5 Fehler des Controllers 1 Adreß-Markierung nicht gefunden
- ┌─────┬───────┤ 4 CRC Fehler 0 unerlaubte Funktion
- │40:42│7 Bytes│ Status NEC Diskettencontroller
- │40:49│ Byte │ Videosteuerung Datenbereich 1 von 0040:0049 bis 0040:0066
- └─────┴───────┤ aktueller CRT Modus (Hex Wert)
- │ 00h 40x25 Schwarz/Weiß (CGA) 01h 40x25 Farbe (CGA)
- │ 02h 80x25 Schwarz/Weiß (CGA) 03h 80x25 Farbe (CGA)
- │ 04h 320x200 Farbe (CGA) 05h 320x200 Schwarz/Weiß (CGA)
- │ 06h 640x200 Schwarz/Weiß (CGA) 07h Monochrom (MDA)
- │ erweiterte Videomodi (EGA/MCGA/VGA oder andere)
- │ 08h niedr. Auflösung, 16 Farben 09h mittl. Auflösung,16 Farben
- │ 0Ah hohe Auflösung, 4 Farbe 0Bh nicht benutzt
- │ 0Ch mittl. Auflösung, 16 Farben 0Dh hohe Auflösung, 16 Farben
- ┌─────┬───────┤ 0Eh hohe Auflösung, 4 Farben 0Fh hohe Auflösung, 64 Farben
- │40:4A│ Wort │ Anzahl Spalten auf Bildschirm, Wert ist hexadezimal
- └─────┴───────┤ 20 Spalten= 14h (Videomodus 8, niedrige Aufl. 160x200 CGA Grafik)
- │ 40 Spalten= 28h
- ┌─────┬───────┤ 80 Spalten= 46h
- │40:4C│ Wort │ Länge Bildschirmpuffer in Bytes
- ├─────┼───────┤ (Anzahl benutzter Bytes pro Bildschirmseite, variiert mit Videomodus)
- │40:4E│ Wort │ Offsetadresse Bildschirmpuffer (aktive Seite)
- │40:50│8 Worte│ Cursorposition der Seiten 1-8
- └─────┴───────┤ das erste Byte eines Wortes enthält die Spalte (0-19, 39, oder 79)
- ┌─────┬───────┤ der zweite Byte enthält die Zeile( 0-24)
- │40:60│ Byte │ Endzeile des Cursors (normalerweise 1)
- │40:61│ Byte │ Startzeile des Cursors (normalerweise 0)
- │40:62│ Byte │ aktuelle Bildschirmseite (0-7)
- │40:63│ Wort │ Portadresse von der 6845 CRT Steuereinheit oder gleichwertige
- ├─────┼───────┤ 3B4h= Monochrom aktiv, 3D4h= Farbe aktiv
- │40:65│ Byte │ aktuelle Einstellung vom CRT Modusregister
- │40:66│ Byte │ aktuelle Farbpalette (CGA)
- │40:67│5 Bytes│ temporärer Speicher für SS:SP während des Abschaltens (Kassettenschnittstelle)
- │40:6C│ Wort │ Zeitzähler niederwertiges Wort
- │40:6E│ Wort │ Zeitzähler höherwertiges Wort
- │40:69│ Byte │ HD_INSTALL (Columbia PCs) (nicht zulässig bei den meisten Nachbauten)
- └─────┴───────┤ Bit 0 0 externe 8 Zoll Diskettenlaufwerke
- │ 1 externe 5-1/4 Zoll Diskettenlaufwerke
- │ 1, 2 höchste Laufwerksadresse welche für int 13 gültig ist
- │ (wenn Diskettenlaufwerke von 0-3 zugewiesen sind, subtrahiere
- │ 3 um die Anzahl der installierten Festplatten zu bekommen)
- │ 4, 5 Anzahl Festplatten an der zusätzlichen Steuereinheit
- │ 6, 7 Anzahl Festplatten an der Steuereinheit auf Systemplatine
- │ (falls Bit 6 oder 7= 1, kein Laufwerk A vorhanden und
- ┌─────┬───────┤ die maximale Anzahl Diskettenlaufwerke von int 11 ist 3)
- │40:70│ Byte │ Zeit-Zähler 24 Stunden Überschreitung, 1 falls 24 Stunden überschritten
- ├─────┼───────┤ sind und wird auf Null gesetzt, sobald die Zeit über int 1Ah angefordert wird.
- │40:71│ Byte │ BIOS Unterbrechnungskennzeichen (Bit 7=1 wenn CTRL-C oder CTL-BREAK gedrückt wurde)
- │40:72│ Wort │ Reset Kennzeichen
- └─────┴───────┤ PCjr enthält hier 1234h hier für Warmstart sobald eine Kassette installiert ist
- │ Bits 1234h= Warmstart, Speichertest wird übergangen
- │ 4321h= Speicherinhalt nicht löschen (PS/2 ausschließlich)
- │ 5678h= System suspendiert (Convertible)
- │ 9ABCh= Hersteller Testmodus (Convertible)
- ┌─────┬───────┤ ABCDh= System POST soll durchgeführt werden (Convertible)
- │40:74│ Byte │ Status der letzten Festplattenoperation; PCjr spezielle Festplattensteuerung
- │40:75│ Byte │ # angeschlossener Festplatten (0-2) ; PCjr spezielle Festplattensteuerung
- │40:76│ Byte │ HD Kontrollbyte; temporärer Sicherungsbereich für den 6. Eintrag der Parametertabelle
- │40:77│ Byte │ Port Offset zum aktuellen HD-Adapter ; PCjr spezielle Festplattensteuerung
- │40:78│4 Bytes│ Wert der Zeitüberschreitung für LPT1, LPT2, LPT3, LPT4
- │40:7C│4 Bytes│ Wert der Zeitüberschreitung für COM1, COM2, COM3, COM4 (0-0FFh sec., vorgegeben 1)
- │40:80│ Wort │ Zeiger zum Anfang des kreisförmigen Tastaturpuffers, vorgegeben 03:1E
- │40:82│ Wort │ Zeiger zum Ende des kreisförmigen Tastaturpuffers, vorgegeben 03:3E
- └─────┴───────┤ Anmerkung: bei den ersten ZENITH Z183 BIOS wurde hier Null ein-
- ┌─────┬───────┤ getragen und nicht berücksichtigt.
- │40:84│ .... │ Videosteuerung Datenbereich 2, von 0040:0084 bis 0040:008A
- │40:84│ Byte │ Zeilen auf dem Bildschirm minus 1 (ausschließlich EGA)
- │40:84│ Byte │ PCjr Interrupt Kennzeichen; Zeit-Zähler Kanal 0 (wird von POST benutzt)
- │40:85│ Wort │ Bytes pro Zeichen (ausschließlich EGA)
- │40:85│2 Bytes│ (ausschließlich PCjr) Wiederholungsrate für Zeichen
- │40:86│2 Bytes│ (ausschließlich PCjr) Verzögerungsfaktor
- │40:87│ Byte │ Statusinformationen (ausschließlich EGA)
- └─────┴───────┤ Bit 0 0 Cursor-Emulation ist eingeschaltet
- │ 1 Cursor-Emulation ist ausgeschaltet
- │ 1 0 EGA mit Farbmonitor
- │ 1 EGA Monochrom-Monitor
- │ 2 0 auf vertikalen Strahlrücklauf warten (CGA eingeschaltet)
- │ 1 nicht auf vertikalen Strahlrücklauf warten (EGA oder MDA eingeschaltet)
- │ 3 0 EGA ist der aktive Adapter.
- │ 1 EGA ist nicht der aktive Adapter.
- │ 4 reserviert
- │ 5,6 EGA Speichergröße
- │ 0,0 64k
- │ 0,1 128k
- │ 1,0 192k
- │ 1,1 256k
- │ 7 0 beim Moduswechsel den Bildschirm nicht löschen
- │ 1 falls beim letzten Moduswechsel angegeben war,
- │ das der Bildschirmpuffer nicht gelöscht werden soll.
- │ Moduskombinationen:
- │ bit3 bit1 Bedeutung
- │ 0 0 EGA mit Farbmonitor ist aktiv
- │ 0 1 EGA mit Monochrom-Monitor ist aktiv
- │ 1 0 EGA ist nicht aktiv, Monochrom-Adapter ist aktiv
- ┌─────┬───────┤ 1 1 EGA ist nicht aktiv, CGA ist aktiv
- │40:87│ Byte │ (ausschließlich PCjr) aktueller Fn Tastencode
- ├─────┼───────┤ 80h Bit zeigt Tastencode beim drücken/loslassen an ?
- │40:88│ Byte │ Kennzeichenbits und Schalter (ausschließlich EGA) 0=AN, 1=AUS
- └─────┴───────┤ Bit 0 Schalter 1
- │ 1 Schalter 2
- │ 2 Schalter 3
- │ 3 Schalter 4
- ┌─────┬───────┤ 4-7 Kennzeichenbits
- │40:88│ Byte │ (ausschließlich PCjr) spezielles Byte für Tastaturzustand
- └─────┴───────┤ Bit 7 Funktionskennzeichen 3 Wiederholfunktion (0=aktiv, 1=ausgeschaltet)
- │ 6 Fn-B losgelassen 2 Geschwindigkeit Wiederholung (0=langsam, 1=schnell)
- │ 5 Fn gedrückt 1 extra Verzögerung vor Wiederholung (0=aktiv)
- ┌─────┬───────┤ 4 Fn sperren 0 Zeichen schreiben, Verzögerung zu Ende
- │40:89│ Byte │ (PCjr) aktueller Wert vom 6845 reg 2 (horizontale Synchronisation) von
- └─────┴───────┤ ctrl-alt-cursor Routine zum Bildschirm positionieren im ROM benutzt
- │ (VGA)
- │ Bit 0 reserviert
- │ 1 Video Summing ist eingeschaltet
- │ 2 0 Farbbildschirm ist angeschlossen
- │ 1 Monochrom-Monitor ist angeschlossen
- │ 3 0 vorgegebene Palette wird geladen
- │ 4 0 8x8 Text Schrifttyp
- │ 1 8x16 Text Schrifttyp
- ┌─────┬───────┤ 5-7 reserviert
- │40:8A│ Byte │ (PCjr) CRT/CPU Seitenregister Abbildung, vorgegeben 3Fh
- └─────┴───────┤ (VGA) Anzeige Monitor-Kombination. Dies ist der Wert der über
- │ die Funktion 1Ah vom Video BIOS gesetzt/gelesen wird. Dieses Byte
- │ enthält einen Index auf die Tabelle der Monitor-Kombinationen
- │ ROM BIOS, welche die gültigen Kombinationen für ein oder
- │ zwei Video Untersysteme enthält. Video Untersysteme
- │ sind durch die folgenden Werte gekennzeichnet:
- │ 00h kein Monitor
- │ 01h MDA mit Monochrom-Monitor
- │ 02h CGA mit Farbmonitor
- │ 03h reserviert
- │ 04h EGA mit Farbmonitor
- │ 05h EGA mit Monochrom-Monitor
- │ 06h Professional Grafikmonitor
- │ 07h VGA mit analogem Monochrom-Monitor
- │ 08h VGA mit analogem Farbmonitor
- │ 09h reserviert
- │ 0Ah MCGA mit digitalem Farbmonitor
- │ 0Bh MCGA mit analogem Monochrom-Monitor
- │ 0Ch MCGA mit analogem Farbmonitor
- ┌─────┬───────┤ 0FFh unbekanntes Video Untersystem
- │40:8B│ Byte │ letzte Datenübertragungsrate des Diskettenlaufwerks
- └─────┴───────┤ Bit 7,6 Datenübertragungsrate beim Systemstart
- │ 0,0 500 kb/Sek
- │ 0,1 300 kb/Sek
- │ 1,0 250 kb/Sek
- │ 1,1 reserviert
- │ 5,4 letzte ausgewählte Steprate
- │ 3 letzte Datenübertragungsrate die benutzt wurde
- │ 2 reserviert
- │ 1 reserviert
- │ 0 1 kombinierten Disketten/Festplattencontroller erkannt
- │ 0 XT nur Diskettencontroller (für 360kb Laufwerke) erkannt
- │ Datenübertragungsraten
- │ Kbits/Sek Medium Laufwerk Sektoren/Spur
- │ 250 360k 360k 9
- │ 300 360k 1.2M 9
- │ 500 1.2M 1.2M 15
- │ 250 720k 720k 9
- │ 250 720k 1.4M 9
- ┌─────┬───────┤ 500 1.4M 1.4M 18
- │40:8C│ Byte │ Status der letzten Festplattenoperation
- │40:8D│ Byte │ Fehler der letzten Festplattenoperation
- │40:8E│ Byte │ Festplatten Interrupt (Bit 7= Interrupt aktiv)
- │40:8 │ Byte │ combo_card - Status von Laufwerk 0 und 1
- └─────┴───────┤ Bit 7 reserviert
- │ 6 Laufwerkstyp für Laufwerk 1 erkannt
- │ 5 Laufwerk kann mehrfach Daten einstufen, Leistungsfähigkeit für Laufwerk 1
- │ 0 keine mehrfache Datenrate
- │ 1 hat mehrfache Datenrate
- │ 4 1 Laufwerk 1 hat 80 Spuren
- │ 0 Laufwerk 1 hat 40 Spuren
- │ 3 reserviert
- │ 2 Laufwerkstyp für Laufwerk 0 erkannt
- │ 1 Laufwerk mehrfach Daten einstufen Leistungsfähigkeit für Laufwerk 0
- │ 0 keine mehrfache Datenrate
- │ 1 hat mehrfache Datenrate
- │ 0 1 Laufwerk 0 hat 80 Spuren
- ┌─────┬───────┤ 0 Laufwerk 0 hat 40 Spuren
- │40:90│4 Bytes│ festgelegtes Medium Laufwerk 0, 1, 2, 3
- └─────┴───────┤ Floppy_Medium_Festlegung
- │ Bit 7,6 Datenübertragungsrate
- │ 00 - 500 K/Sek
- │ 01 - 300 K/Sek
- │ 10 - 250 K/Sek
- │ 11 - reserviert
- │ 5 doppelte Schrittzeit verlangt
- │ 4 Medium/Laufwerk erkannt
- │ 3 reserviert
- │ 2-0 gegenwärtige Festlegung
- │ 000 360k in 360k unbestehend
- │ 001 360k in 1.2M unbestehend
- │ 010 1.2M in 1.2M unbestehend
- │ 011 360k in 360k bestehend
- │ 100 360k in 1.2M bestehend
- │ 101 1.2M in 1.2M bestehend
- │ 110 reserviert
- ┌─────┬───────┤ 111 keine von den aufgeführten
- │40:94│2 Bytes│ aktuelle gesuchte Spur im Laufwerk 0, 1
- │40:96│ Byte │ Tastaturkennzeichen Byte 3 (siehe int 9h)
- │40:97│ Byte │ Tastaturkennzeichen Byte 2 (siehe int 9h)
- │40:98│ dwort │ Segment:Offset Zeiger zum Benutzerkennzeichen Warten
- │40:9C│ dwort │ Zeitüberschreitung in Mikrosekunden des Benutzers
- │40:A0│ Byte │ Echtzeituhr Funktion Warten in Betrieb
- └─────┴───────┤ Bits 7 Wartezeit läuft und hängt auf dem Kennzeichen
- │ 6-1 reserviert
- ┌─────┬───────┤ 0 int 15h, Funktion 86h (Warten) Zeit ist verstrichen
- │40:A1│ Byte │ LAN A DMA Kanal Flags
- │40:A2│2 Bytes│ Status LAN A 0, 1
- │40:A4│ dwort │ gesicherter Festplatten Interrupt Vektor
- │40:A8│ dwort │ SAVE_PTR: EGA Zeiger zur Tabelle mit 7 Parameter in Segment:
- └─────┴───────┤ Offset Format. Aufbau der Tabelle:
- │ D_1 dwort Zeiger zu einer 1472 Byte großen Tabelle die 64 Video
- │ Parameter enthält
- │ D_2 dwort reserviert
- │ D_3 dwort reserviert
- │ D_4 dwort reserviert
- │ D_5 dwort reserviert für zukünftige Benutzung
- │ D_6 dwort reserviert für zukünftige Benutzung
- ┌─────┬───────┤ D_7 dwort reserviert für zukünftige Benutzung
- │40:B0│2Wörter│ internationale Unterstützung (Tandy 1000 TX)
- │40:B4│ Byte │ Tastatur NMI Kontrollkennzeichen (Convertible)
- │40:B4│ Byte │ Monochrom-Monitor Schaltung erkannt (Tandy 1000 TX)
- │ │ │ 00h nicht vorhanden 0FFh vorhanden
- │40:B5│ dwort │ Kennzeichen Tastaturabschaltung unerledigt (Convertible)
- │40:B5│ Byte │ erweiterte Ausstattung feststellen (5 Bits) (Tandy 1000 TX)
- └─────┴───────┤ Bit 0 = 0 Laufwerk ein ist 5 ¼
- │ 1 Laufwerk ein ist 3 ½
- │ 1 = 0 Laufwerk ein ist 5 ¼
- │ 1 Laufwerk ein ist 3 ½
- │ 2 = 0 Tandy 1000 Tastatur Ausstattung
- │ 1 IBM Tastatur Ausstattung
- │ 3 = 0 CPU langsamer Modus
- │ 1 CPU schnell Modus
- │ 4 = 0 intern Video Farbe wird unterstützt
- │ 1 intern Video Farbe wird nicht unterstützt, externes
- │ Video eingeschaltet (umgeschaltet von der Hauptplatine
- │ zur Erweiterungskarte)
- │ 5 = 0 kein externes Monochrom Video installiert
- ┌─────┬───────┤ 1 externes Monochrom Video ist installiert
- │40:B6│ Byte │ erweiterte Ausstattung feststellen (1 Bit) (Tandy 1000 TX)
- └─────┴───────┤ Bit 0 = 0 Laufwerk C ist 5 ¼
- ┌─────┬───────┤ 1 Laufwerk C ist 3 ½
- │40:B9│ Byte │ Port 60 Warteschlange für einzelne Bytes (Convertible)
- │40:BA│ Byte │ Auswahlcode der letzten Taste (Convertible)
- │40:BB│ Byte │ Zeiger zum NMI Pufferanfang (Convertible)
- │40:BC│ Byte │ Zeiger zum NMI Pufferende (Convertible)
- │40:BD│16bytes│ NMI Puffer Auswahlcode (Convertible)
- │40:CE│ Wort │ Tageszähler (Convertible und spätere)
- │ bis │ -04:8F│ Ende vom BIOS Datenbereich
- ├─────┴───────┴────────────────────────────────────────────────────────────────
- │ ** Ende vom BIOS Datenbereich **
- ├─────┬───────┬────────────────────────────────────────────────────────────────
- │40:90│ -40:EF│ von IBM reserviert
- │40:F0│16bytes│ Inter-Application Kommunikationsbereich (wird von Anwendungen
- │40:FF│ │ benutzt, um Daten oder Parameter zu übergeben)
- └─────┴───────┤ 1) benutzt von Turbo Power's FMARK (markieren Speicher für TSRs).
- │ 2) benutzt von Norton Utilities' TimeMark um die Zeit zu speichern.
- │ 3) benutzt von BRIEF Editor.
- ┌─────┬───────┤
- │50:00│ Byte │ Statuskennzeichen DOS PRINT-SCREEN
- └─────┴───────┤ 00h nicht aktiv oder erfolgreich beendet
- │ 01h Bildschirmausdruck ist aktiv
- ┌─────┬───────┤ 0FFh Fehler während des Druckens aufgetreten
- │50:01│ │ benutzt von BASIC
- │50:02-03 │ PCjr POST und Diagnose Arbeitsbereich
- │50:04│ Byte │ Statusbyte wenn nur ein Laufwerk da ist - nicht benutzt von AT&T DOS 2.11!
- └─────┴───────┤ 00 logisches Laufwerk A war zuletzt in Betrieb
- ┌─────────────┤ 01 logisches Laufwerk B war zuletzt in Betrieb
- │50:05-0E │ PCjr POST und Diagnose Arbeitsbereich
- │50:0F│ │ BASIC: Kennzeichen Befehlsinterpreter (ist 02h falls ein aktueller Befehlsinterpreter da ist)
- │50:10│ Wort │ BASIC: Speicher Segmentadresse (eingestellt mit DEF SEG)
- │50:12│4 Bytes│ BASIC: Segment:Offset int 1Ch Taktgeber Interrupt Vektor
- │50:16│4 Bytes│ BASIC: Segment:Offset int 23h ctrl-break Interrupt
- │50:1A│4 Bytes│ BASIC: Segment:Offset int 24h Kritischer Fehler int Vektor
- │50:1B-1F │ benutzt von BASIC zur dynamischen Speicherung
- │50:20-21 │ benutzt von DOS zur dynamischen Speicherung
- │50:22-2C │ benutzt von DOS als Diskettenparametertabelle. Siehe int 1Eh für Werte.
- └─────┴───────┤ In DOS 1.0 ist diese im ROM BIOS abgelegt, aber in DOS 1.1 und späteren
- │ Versionen ist diese ein Teil von DOS ab Adresse 50:22. Das erste Byte
- │ (von den elf) von den Festplattenparametern enthält den hexadezimalen
- │ Wert CF in DOS 1.0 und DF in DOS 1.1 und später Versionen.
- │ DOS 1.0 24ms
- ┌─────────────┤ DOS 1. 1 26ms
- │50:30-33 │ benutzt von MODE Befehl
- │50:81│ │ Anzahl Diskettenlaufwerke im System installiert ?
- │50:82│ │ erstes Festplattenlaufwerk?
- │50:83│ │ letztes Festplattenlaufwerk?
- │50:34-FF │ Unbekannt - reserviert für DOS
- └─────────────┴─────────────────────────────────────────────────────────────────
-
-
- An absoluten Adressen:
-
- 0008:0047 IO.SYS oder IBMBIO.COM IRET Anweisung. Dies ist eine Dummy Routine der
- Interrupts 01h, 03h, und 0Fh die währende dem POST initialisiert werden.
- C000:001E EGA BIOS Kennung (die Buchstaben IBM)
- F000:FA6E Tabelle der Zeichen 00h-7Fh die vom int 10h Video BIOS benutzt werden.
- Die ersten 128 Zeichen sind hier gespeichert und jedes benötigt 8 Bytes.
- Die höheren Zeichen sind irgendwo auf dem Videoadapter.
- F000:FFF5 BIOS Freigabe Datum
- F000:FFFE PC Modellidentifizierung
-
- ┌─────────────────────────────────────────────────────────────────────┐
- │ ROM BIOS ┌ Modell Byte │
- │ Freigabe- │ ┌ Untermodell Byte Maschine │
- │ Datum │ │ ┌ Revision │
- ├──────────┼────┼────┼────┼───────────────────────────────────────────┤
- │ │ 00 │ 00 │ 00 │ AT&T 6300, Olivetti PC │
- │ 09/02/86 │ FA │ 00 │ 00 │ PS/2 Modell 30 │
- │ 01/10/86 │ FB │ 00 │ 01 │ XT │
- │ 01/10/86 │ FB │ 00 │ 00 │ XT-2 (die ersten) (640k Systemplatine │
- │ 05/09/86 │ FB │ 01 │ │ XT-2 (revidiert) (640k Systemplatine) │
- │ 01/10/84 │ FC │ -- │ -- │ AT │
- │ 06/10/85 │ FC │ 00 │ 01 │ AT Modell 239 6mHz (6.6 max governor) │
- │ 11/15/85 │ FC │ 01 │ 00 │ AT Modell 319, 339 8mHz (8.6 max governor)│
- │ │ FC │ 01 │ 00 │ Compaq 386/16 │
- │ │ FC │ 01 │ 03 │ einige Phoenix 386 BIOS │
- │ │ FC │ 01 │ 81 │ einige Phoenix 386 BIOS │
- │ 04/21/86 │ FC │ 02 │ 00 │ XT/286 │
- │ 02/13/87 │ FC │ 04 │ 00 │ PS/2 Modell 50 │
- │ 02/13/87 │ FC │ 05 │ 00 │ PS/2 Modell 60 │
- │ │ FC │ 00 │ │ 7531/2 Industrie AT │
- │ │ FC │ 06 │ │ 7552 "Gearbox" │
- │ 06/01/83 │ FD │ -- │ -- │ PCjr │
- │ 11/08/82 │ FE │ -- │ -- │ XT, tragbarer PC, XT/370, 3270PC │
- │ 04/24/81 │ FF │ -- │ -- │ PC-0 (16k Systemplatine) │
- │ 10/19/81 │ FF │ -- │ -- │ PC-1 (64k Systemplatine) │
- │ 08/16/82 │ FF │ -- │ -- │ PC, XT, XT/370 (256k Systemplatine) │
- │ 10/27/82 │ FF │ -- │ -- │ PC, XT, XT/370 (256k Systemplatine) │
- │ 1987 │ F8 │ 00 │ 00 │ PS/2 Modell 80 │
- │ 1987 │ F8 │ 01 │ 00 │ PS/2 Modell 80 20mHz │
- │ 09/13/85 │ F9 │ 00 │ 00 │ Convertible │
- │ │ 2D │ -- │ -- │ Compaq PC (4.77mHz Original) │
- │ │ 9A │ -- │ -- │ Compaq Plus (XT kompatibel) │
- └──────────┴────┴────┴────┴───────────────────────────────────────────┘
-
-
-
-
- Die IBM PC System Interrupts (Übersicht) ............................. 2**5
-
- Die Interrupt Tabelle ist an der niedrigsten Stelle im Speicher gespeichert, beginnend
- bei 0000:0000h. Der Adressen sind Offsets vom Segment 0, z.B. Stelle 0000h hat
- die Adresse für int 0, etc. Die Tabelle ist 1024 Bytes lang und enthält 256
- vier Byte Vektoren von 00h zu 0FFh. Jede Addresse in Speicher kann gefunden
- werden, indem die Interrupt Nummer mit 4 multipliziert wird. Als Beispiel, int 7
- (7x4=28) oder 1Bh (0000:001Bh) ergibt die Adresse.
-
- Diese Interrupt Vektoren zeigen normalerweise auf ROM Tabellen oder werden von DOS übernommen,
- sobald eine Anwendung ausführt wird. Einige Anwendungen biegen diese Interrupts auf
- ihr eigenen Code um, um die Systemfunktionen anzuändern. DOS bietet über int 21h
- Funktion 25h die Möglichkeit die Interrupts umzuleiten; Das direkte abändern der
- Interruptvektor-Tabelle wird nicht empfohlen, auch nicht um diese irgendwohin
- zu holen.
-
-
- ┌─────────────────────┬────────────────────────────────────────────────────────┐
- │ Interrupt Adresse │ │
- ├───────┬───────┬─────┘ Funktion │
- │Nummer │ (Hex) │ Type │
- ├───────┼───────┼─────┬────────────────────────────────────────────────────────┤
- │ 0 │ 00-03 │ CPU │ Division durch Null │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 1 │ 04-07 │ CPU │ Einzelschritt │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 2 │ 08-0B │ CPU │ Nicht maskierbarer Interrupt │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 3 │ 0C-0F │ CPU │ Programmunterbrechung │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 4 │ 10-13 │ CPU │ Überlauf │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 5 │ 14-17 │ BIOS│ drucken Bildschirm │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 6 │ 18-1B │ hdw │ reserviert │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 7 │ 1C-1F │ hdw │ reserviert │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 8 │ 20-23 │ hdw │ Datum und Zeit │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 9 │ 24-27 │ hdw │ Tastatur │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ A │ 28-2B │ hdw │ reserviert │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ B │ 2C-2F │ hdw │ Kommunikation (8259) │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ C │ 30-33 │ hdw │ Kommunikation │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ D │ 34-37 │ hdw │ Festplatte │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ E │ 38-3B │ hdw │ Diskette │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ F │ 3C-3F │ hdw │ Drucker │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 10 │ 40-43 │ BIOS│ Video │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 11 │ 44-47 │ BIOS│ Ausstattungskontrolle │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 12 │ 48-4B │ BIOS│ Speicher │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 13 │ 4C-4F │ BIOS│ Diskette/Festplatte │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 14 │ 50-53 │ BIOS│ serielle Kommunikation │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 15 │ 54-57 │ BIOS│ Kassette, Systemverwaltung │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 16 │ 58-5B │ BIOS│ Tastatur │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 17 │ 5C-5F │ BIOS│ Paralleler Drucker │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 18 │ 60-63 │ BIOS│ ROM BASIC │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 19 │ 64-67 │ BIOS│ Systemstart │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 1A │ 68-6B │ BIOS│ Datum und Zeit │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 1B │ 6C-6F │ BIOS│ Tastaturunterbrechung │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 1C │ 70-73 │ BIOS│ Zeit-Zähler Takteinheit │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 1D │ 74-77 │ BIOS│ Video Initialisierung │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 1E │ 78-7B │ BIOS│ Diskettenparameter │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 1F │ 7C-7F │ BIOS│ Video Grafikzeichen, zweiter Teil │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 20 │ 80-83 │ DOS │ allgemein Programmbeendigung │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 21 │ 84-87 │ DOS │ DOS Service Funktionsanforderungen │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 22 │ 88-8B │ DOS │ Adresse Programmbeendigung │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 23 │ 8C-8F │ DOS │ Adresse Programmabbruch │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 24 │ 90-93 │ DOS │ Kritischer Fehler Routine │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 25 │ 94-97 │ DOS │ Absolutes Lesen │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 26 │ 98-9B │ DOS │ Absolutes Schreiben │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 27 │ 9C-9F │ DOS │ beenden und verbleiben speicherresistent │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 28-3F │ A0-FF │ DOS │ reserviert für DOS │
- └───────┴───────┴─────┼────────────────────────────────────────────────────────┤
- │ *29h schnelle Bildschirmausgabe │
- │ *2Ah Microsoft Netzwerke - Sitzungsebene Interrupt │
- │ 2Fh mehrfach Interrupt │
- │ *30h FAR JUMP Instruktion für CP/M-artige Aufrufe │
- │ 33h benutzt vom Microsoft Maustreiber │
- ┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
- │ 40-43 │100-115│ BIOS│ reserviert für BIOS │
- └───────┴───────┴─────┼────────────────────────────────────────────────────────┤
- │ 40h Festplatten BIOS │
- │ 41h Festplattenparameter (außer PC1) │
- │ 42h Zeiger zum Bildschirm BIOS (EGA, VGA, PS/2) │
- │ 43h Zeiger zu EGA Initialisierung Parametertabelle │
- ┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
- │ 44 │116-119│ BIOS│ ersten 128 Grafikzeichen │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 45-47 │120-131│ BIOS│ reserviert für BIOS │
- └───────┴───────┴─────┼────────────────────────────────────────────────────────┤
- │ 45h reserviert von IBM (nicht initialisiert) │
- │ 46h Zeiger zu Festplattenparameter 2 (AT, PS/2) │
- │ 47h reserviert von IBM (nicht initialisiert) │
- ┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
- │ 48 │132-135│ BIOS│ PCjr Kabellose Tastatur Übertragung │
- ├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
- │ 49 │136-139│ BIOS│ PCjr Non-Keyboard Scancode Übersetzungstabelle │
- └───────┴───────┴─────┼────────────────────────────────────────────────────────┤
- │ 4Ah Echtzeituhr Alarm (Convertible, PS/2) │
- ┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
- │ 50-5F │140-17F│ BIOS│ reserviert für BIOS │
- └───────┴───────┴─────┼────────────────────────────────────────────────────────┤
- │ 5Ah Cluster Adapter BIOS Adresse Einsprungstelle │
- │ *5Bh IBM (Cluster Adapter?) │
- │ 5Ch NETBIOS Schnittstelle │
- ┌───────┬───────┬─────┴────────────────────────────────────────────────────────┤
- │ 60-67 │180-19F│ allgemein verfügbar für Anwenderprogramme │
- └───────┴───────┴─────┬────────────────────────────────────────────────────────┤
- │ 60h 10-Net Netzwerk │
- │ 67h benutzt von LIM & AQA EMS, EEMS │
- ┌───────┬───────┬─────┴────────────────────────────────────────────────────────┤
- │ 68-7F │1A0-1FF│ reserviert von IBM │
- └───────┴───────┴─────┬────────────────────────────────────────────────────────┤
- │ 6Ch System Resume Vektor (Convertible) │
- │ 6Fh einige Novell und 10-Net API Funktionen │
- │ 70h IRQ 8, Echtzeituhr Taktgeber Interrupt (AT, PS/2) │
- │ 71h IRQ 9, LAN Adapter 1 │
- │ 72h IRQ 10 (AT, XT/286, PS/2) reserviert │
- │ 73h IRQ 11 (AT, XT/286, PS/2) reserviert │
- │ 74h IRQ 12 Maus Interrupt (PS/2) │
- │ 75h IRQ 13, Koprozessorfehler │
- │ 76h IRQ 14, Steuereinheit Festplatte (AT, PS/2) │
- │ 77h IRQ 15 (AT, XT/286, PS/2) reserviert │
- │ 7Ch IBM REXX88PC Kommandosprache │
- ┌───────┬───────┬─────┴────────────────────────────────────────────────────────┤
- │ 80-85 │200-217│ ROM BASIC │
- ├───────┼───────┼──────────────────────────────────────────────────────────────┤
- │ 86-F0 │218-3C3│ benutzt vom BASIC Interpreter sobald BASIC läuft │
- ├───────┼───────┼──────────────────────────────────────────────────────────────┤
- │ F1-FF │3C4-3FF│ reserviert von IBM │
- └───────┴───────┴──────┬───────────────────────────────────────────────────────┤
- │ *0F8h Einstellen Befehlsinterpreter Interrupt (OEM) │
- │ *0F9h OEM Befehlsinterpreter Service Codes │
- └───────────────────────────────────────────────────────┘
-
-
-
- Die IBM-PC System Interrupts (ausführlich) ........................... 2**6
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 00h Division durch Null │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0000h) (Prozessor Fehler). Wird automatisch am Ende einer DIV oder IDIV An-
- weisung aufgerufen, wenn das Ergebniss fehlerhaft ist. Normalerweise
- von DOS so eingestellt, das eine Fehlermeldung angezeigt und das
- Programm beendet wird.
-
- Anmerkung: auf dem 8086/8088, zeigt die Rückkehradresse auf die folgende Instruktion,
- auf dem 80286/80386, zeigt diese auf die Divisionanweisung.
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 01h Einzelschritt │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0004h) Wird nach jeder Instruktion aufgerufen, sobald die CPU ein Kennzeichen
- für Einzelschritt Modus erkennt (Bit 8 von Flags ist 1). Dies ist das was
- der "T" Befehl von DEBUG macht. Wird nicht erzeugt nach einem MOV
- zu Segmentregister oder POP von Segmentregister. (falls kein älterer
- 8088 mit einem Fehler im Microcode benutzt wird).
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 02h Nicht maskierbarer Interrupt │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0008h) Vektor wird nicht über CLI ausgeschaltet. Wird erzeugt vom NMI Signal
- der Hardware. Dies Funktion wird aufgerufen, wenn ein Paritätsfehler
- im Speicher oder andere Ereignisse die auf Hardware Probleme oder Fehler
- hinweisen. Dies ist im wesentlichen von der verwendeten Hardware ab-
- hängig. Zeigt die geeignete Fehlermeldung und hält den Prozessor an.
- Einige AT Chips benutzen int 02h scheinbar um I/O Fehler als auch
- Paritätsfehler anzuzeigen.
-
- Dies Signal wird verschiedenartig benutzt:
- POST Paritätsfehler: alle außer PCjr und Convertible
- 80x87 Koprozessor Interrupt: alle außer PCjr und Convertible
- Tastatur Interrupt: PCjr, Convertible
- I/O Kanal Überprüfung: Convertible, PS/2 50+
- Festplattencontroller power-on Anforderung: Convertible
- Systemunterbrechung: Convertible
- Echtzeituhr: Convertible
- System Watchdog Zeit-Zähler: PS/2 50+
- Zeitüberschreitung Interrupt: PS/2 50+
- DMA Zeit-Zähler Zeitüberschreitung Int.: PS/2 50+
- Infrarottastatur Verbindung: PCjr
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 03h Programmunterbrechung │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:000Ch) Wird aufgerufen sobald die CPU ein 1-byte int 3 (0CCh) ausführt. Ähnlich der 8080
-
- (Intern) RST Instruktion. Wird im allgemeinen benutzt, um Programmstops zum Testen zu setzen.
-
- Anmerkung 1) Wird auch von den Turbo PASCAL Versionen 1, 2, 3 benutzt, sobald {$ U+} spezifiziert ist.
- 2) Int 3s werden manchmal vom Microsoft Linker als Antwort auf unaufgelöste
- Symbole eingefügt.
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 04h Divisionsüberlauf │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0010h) Erzeugt von einer INTO Instruktion falls OF Kennzeichen gesetzt ist.
- Falls nicht
- (Intern) INTO ist effektiv ein NOP. Benutzt um arithmetische Fehler schneller
- aufzufangen, sobald ein Programm bereit ist diese zu verarbeiten, als
- unmittelbar nach auftreten eines Überlaufs.
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 05h drucken Bildschirm │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0014h) Service Drucken Bildschirm auf den Drucker. Aufgerufen von int 9 wenn
- Shift + Taste 55 (PrtSc) gedrückt wurde. Automatisch aufgerufen sobald
- dir PrtSc Taste gedrückt ist. Normalerweise wird eine Routine zu drucken
- des Bildschirm aufgerufen, kann aber auch eine beliebige Routine inner-
- halb des Tastaturtreibers sein. Status und Ergebnis der Routine werden
- an der Adresse 0050:0000 gespeichert.
-
- (Intern) BOUND Kontrolle scheiterte (80286+)
- erzeugt von der BOUND Instruktion sobald der Wert der geprüft wurde kleiner
- als der niedrigste oder größer als der größte BOUND Wert ist.
-
- Aufruf AH 05h
- Rückgabe absolute Adresse 50:0
- 00h nicht aktiv oder erfolgreich beendet
- 01h Bildschirmausdruck ist aktiv
- 0FFh Fehler während des Drucken aufgetreten
- Anmerkung 1) benutzt BIOS Aufrufe um den Bildschirm zu lesen.
- 2) Ausgabe erfolgt über LPT1.
- 3) umgeleitet in GRAPHICS.COM falls GRAPHICS.COM geladen ist.
- 4) beim Tandy 1000TX kann dieser Interrupt über DIP Schalter
- eingeschaltet oder ausgeschaltet werden.
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 06h reserviert von IBM │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0018h)
- auf dem Tandy 1000TX kann dieser Interrupt über DIP Schalter
- eingeschaltet oder ausgeschaltet werden.
-
- (Intern) ungültiger Opcode( 80286+)
-
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 07h reserviert von IBM │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:00C0h)
- auf dem Tandy 1000TX kann dieser Interrupt über DIP Schalter
- eingeschaltet oder ausgeschaltet werden.
-
- (Intern) kein Koprozessor verfügbar( 80286+)
-
- Anmerkung: der 80286 und spätere Maschinen können so programmiert sein, das ein
- int 7 generiert wird, wenn eine ESC Instruktion durchgeführt werden
- soll. Dies kann dazu benutzt werden, um einen Koprozessor der 80x87
- Reihe nachzubilden. Er kann auch dazu benutzt werden, damit ein
- mathematischer Koprozessor der nicht von Intel ist den 80x87
- nachbilden kann.
-
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 08h Zeit-Zähler │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0020h) 55ms Zeit-Zähler "Takteinheit" wird 18.2mal pro Sekunde aufgerufen.
- (IRQ0) 8259-1 Interrupt Steuereinheit
- Aktualisiert die Systemzeit an [0040:006C] (niederwertiges Wort) und [0040:006E]
- (höherwertiges Wort) und ruft den int 1Ch (Zeit-Zähler) auf. (int 1Ch zeigt auf eine
- IRET Instruktion falls dies nicht von einem speicherresistenten Programm geändert
- wurde). Der Zeit-Zähler Interrupt bekommt beim Systemstart die höchste
- Priorität der maskierbaren Interrupts.
-
- (Intern) Doppelter Fehler (80286+ geschützter Modus), wird aufgerufen sobald Mehrfachausnahmen
- auf eine Instruktion auftreten, oder eine Ausnahme in der Ausnahmesteuerung
- auftritt. Falls eine Ausnahme beim verarbeiten des doppelten Fehlers auftritt,
- geht die CPU in den SHUTDOWN Modus (die Schaltung im PC/AT wandelt diesen in einem
- Systemstart um).
-
- Aufruf AH 08h
- Rückgabe absolute Adressen:
- 40:6C Anzahl Interrupts seit dem Systemstart (4 Bytes)
- 40:70 Anzahl Tage seit dem Systemstart (1 Byte)
- 40:67 Tag zähler auf alle Produkte nach AT
- 40:40 Zähler für Motorabschaltung - wird vermindert, der Motor wird
- abgeschaltet wenn der Zähler = 0 ist.
-
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 09h Tastatur │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0024h) Wird immer aufgerufen wenn eine Taste gedrückt oder losgelassen wird.
- (IRQ1) Dies ist normalerweise ein Scan-Code, kann auch auch ein ACK oder NAK
- eines Befehls auf der AT-type Tastatur sein. Die Hardware liefert einen
- nicht-ASCII Scan-Code der Taste die gedrückt wurde zurück, der vom I/O
- Port 60h gelesen wird.
- Der servicer sendet eine Bestätigung der Taste durch das umschalten
- von Bit 7 am Port 61h. (Port 61h sollte zuerst gelesen werden, dann
- Bit 7 ORed an, Ausgabe an Port 61h, dann ANDed aus, und dann an Port
- 61h zurückgesendet werden).
-
- Die gelesene Taste ist entschlüsselt um ein ein ASCII Zeichen zu liefern, besondere
- Funktionstasten (wie F1) oder Steuerungsfunktion wie etwa die linke Umschalttaste.
- Das konvertierte ASCII Zeichen wird in die nächstes verfügbare Position
- des kreisförmigen Tastaturpuffer abgestellt. Sollte das Ende des Puffers erreicht
- werden, wird die eingegebene Taste nicht angenommen.
- Der Anfang des Puffers zeigt auf die älteste gedrückte Taste im Puffer
- welche noch nicht entfernt bzw. verarbeitet wurde. (normalerweise wird die Taste
- entfernt, wenn ein int 16h beutzt wird und dieser den Tastencode an den
- Anrufer zurückgibt).
-
- Der 16 Worte große Tastaturpuffer kann bis zu 16 Tasten enthalten. Falls der
- Anfang und das Ende des Puffers gleich ist, ist der Puffer leer.
- Zulässige Tasten in dem Puffer umfassen den Auswahlcode im höherwertigen
- Byte und das ASCII Zeichen im niederwertigen Byte.
- Wenn die gedrückte Taste kein gleichwertiges ASCII Zeichen hat
- (z.B. F1 bis F12), enthält das niederwertige Byte Null.
-
- Umschalt- und Steuertasten werden nicht im Puffer abgestellt, erscheinen aber
- in den beiden Bytes des Tastaturkennzeichens an der absoluten Adresse
- [0040:0017,18].
-
- Besondere Tastenkombinationen sind die Ursache dafür, daß andere Ereignisse auftreten:
- a) Ctrl-Alt_Del - Computer neu starten
- b) Print Screen - aufrufen int 5 um den aktuellen Bildschirm zu drucken
- c) Ctrl-Break - aufrufen int_1Bh Tastaturunterbrechung (DOS)
- d) Pause - warten bis eine ASCII Taste gedrückt wird, ohne diese
- in den Tastaturpuffer abzustellen.
-
- (Intern) Mathematische Einheit Sicherungsfehler (80286+ geschützt Modus)
-
- Aufruf AH 09h
- Rückgabe absolute Adressen:
- 40:17 Bit
- 0 rechte Umschalttaste gedrückt
- 1 linke Umschalttaste gedrückt
- 2 CTRL (STRG) Taste gedrückt
- 3 Alt Taste gedrückt
- 4 ScrollLock an
- 5 NumLock an
- 6 CapsLock an
- 7 Einfügen an
- 40:18 Bit
- 0 linke Control Taste gedrückt
- 1 linke ALT Taste gedrückt
- 2 SysReq Taste gedrückt
- 3 Pause an
- 4 ScrollLock Taste ist gedrückt
- 5 NumLock Taste ist gedrückt
- 6 CapsLock Taste ist gedrückt
- 7 Einfügen Taste ist gedrückt
- 40:96 Bit
- 0 letzter Code war E1h Code
- 1 letzter Code war E0h Code
- 2 rechte Control Taste gedrückt
- 3 rechte ALT Taste gedrückt
- 4 erweiterte Tastatur mit 101 Tasten installiert
- 5 NumLock erzwingen falls rd ID & kbx
- 6 letztes Zeichen war erstes ID Zeichen
- 7 lese ID (muß Bit 0 sein)
- 40:97 Bit
- 0 ScrollLock Anzeige
- 1 NumLock Anzeige
- 2 CapsLock Anzeige
- 3 circus System Anzeige
- 4 ACK empfangen
- 5 zurückgesendetes Empfangskennzeichen
- 6 Modusanzeiger aktualisieren
- 7 Kennzeichen Tastaturübertragungsfehler
- 40:1E Tastaturpuffer (20h Bytes)
- 40:1C Zeiger zum Pufferende
- 40:72 1234h falls ctrl-alt-del auf der Tastatur gedrückt wurde
- AL Auswahlcode
- Anmerkung 1) Int 05h wird aufgerufen falls PrtSc Taste gedrückt wurde.
- 2) Int 1Bh wird aufgerufen falls Ctrl-Break Taste gedrückt wurde.
- 3) Int 15h, AH= 85h wird aufgerufen, falls auf dem AT die SysReq Taste
- gedrückt wurde.
- 4) Int 15h, AH= 4Fh wird bei den Maschinen nach dem AT aufgerufen.
- 5) Int 16h, BIOS Tastaturfunktionen benutzen diesen Interrupt.
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 0Ah EGA vertikaler Strahlrücklauf │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0028h) benutzt von EGA für vertikalen Strahlrücklauf
- (IRQ2) 8259-1 Interrupt Steuereinheit
- Anmerkung 1) Die TOPS und PCnet Adapter benutzen diesen IRQ als Standardwert.
- 2) Auf Systemen die mit 2 Interrupt-Controller Chips (8259) ausgestattet
- sind, wird IRQ 2 benutzt um den zweiten Interrupt-Controller zu unterstützen.
- In diesem Fall, wird int 71h (IRQ 9) benutzt, um IRQ 2 zu ersetzen.
- Aufrufe der Hardware von int 71h werden zu diesen Interrupt umgeleitet
- um die Kompatibilität zu erhalten.
- 3) viele VGA Karten benutzen diesen Interrupt nicht.
-
- (Intern) ungültiges Task State Segment (80286+ geschützter Modus)
-
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │Interrupt 0Bh Kommunikations-Controller (serieller Port) hdw. Einsprungstelle│
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:002Ch) serieller Port 2 (COM2) 8259-1
- (IRQ3)
- Anmerkung 1) IRQ 3 kann von SDLC (Synchronous Data-Link Control) belegt sein oder
- von bisynchronen Kommunikationskarten an Stelle des seriellen Ports.
- 2) der TOPS und PCnet Adapter benutzen alternativ diesen Interrupt.
- 3) auf PS/2s, COM2 bis COM8 benutzen diesen IRQ gemeinsam.
- 4) bei den meisten seriellen Karten, COM4 benutzt diesen IRQ.
- 5) auf dem Commodore Amiga 2000 mit der PC Bridge Karte, dieser Interrupt
- wird zur Kommunikation zwischen dem Amiga Systemboard und der PC Bridge
- Karte benutzt. Dies war wahrscheinlich die niedrigste IRQ Ebene die sicher
- benutzt werden konnte, begrenzt aber die Möglichkeiten der A2000's
- Netzwerkkarten oder ähnliches zu benutzen.
- 6) dies Interrupt wird zum Teil von dem stack-switching Code der im
- Zusammenhang mit dem lokalen Netzwerkadapter benutzt wird in
- DOS 3.2 hinzugefügt.
- 7) der PS/2 legt COM3 bis COM8 an die Portadressen über 3FFh (nicht
- geeignet für ältere PCs) und alle benutzen gemeinsam den IRQ3.
-
- (Intern) Nicht vorhanden (80286+ geschützt Modus)
- wird erzeugt sobald Segmentregister geladen werden soll und der Segment-
- deskriptor erkennt, daß das Segment sich zur Zeit nicht im Speicher
- befindet. Kann außerdem benutzt sein um virtuellen Arbeitsspeicher
- zu realisieren.
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │Interrupt 0Ch Kommunikations-Controller (serieller Port) hdw. Einsprungstelle│
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0030h) serieller Port 1 (COM1) oder internes Modem im PCjr oder Convertible
- (IRQ4) 8259-1
- Anmerkung 1) IRQ 4 kann von SDLC (synchronous data-link control) belegt sein oder
- von bisynchronen Kommunikationskarten an Stelle des seriellen Ports.
- 2) auf einigen PCs, wird dieser Interrupt mit COM3 gemeinsam benutzt.
- 3) Tandy Computer benutzen den IRQ4 an Stelle von IRQ5 als Festplatteninterrupt.
- 4) Manchmal wird eine bessere Leistung erreicht, wenn die Maus für IRQ4
- an Stelle von IRQ3 eingestellt ist, da einige Maustreiber die System-
- interrupts für längere Perioden sperren.
-
- (Intern) Stapelfehler (80286+ geschützt Modus)
- erzeugte beim Stapelüberlauf/unterlauf. Beachten sie, das der 80286
- wenn SP= 1 ist in den echten Modus zurückschaltet, bevor der Stapel
- gesichert wird (PUSH).
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 0Dh Festplatte │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0034h) gemischte Benutzung
- (IRQ5) 8259-1
- Anmerkung 1) verschiedene Tandy 1000 Modelle benutzen diesen für die 60Hhz RAM
- Auffrischung oder als "optionalen Bus Interrupt."
- 2) benutzt von der Festplatte auf dem IBM XT und den meisten Kompatiblen.
- 3) LPT2 auf AT, XT/286, und PS/2
- 4) Dummy CRT, vertikaler Strahlrücklauf auf PCjr
-
- (Intern) allgemeine Schutzübertretung (80286+)
- wird aufgerufen, sobald im echten Modus eine Instruktion versucht auf einen
- Wort Operand am Offset 0FFFFh zuzugreifen oder eine PUSH MEM oder POP MEM
- MEM Instruktion einen ungültigen Bit Code im zweiten Byte enthält.
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 0Eh Disketten Interrupt │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0038h) erzeugt vom Disketten-Controller bei Beendigung eines Arbeitsganges.
- (IRQ6) (setzt Bit 8 an 40:3E)
-
- (Intern) Seitenfehler (80386+ Native Modus)
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 0Fh reserviert von IBM │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:003Ch) IRQ7 wird vom 8259 PPI Interrupt (LPT1, LPT2) benutzt
- (IRQ7)
- Anmerkung 1) erzeugt vom LPT1 Druckeradapter sobald Drucker bereit ist. Viele
- Druckeradapter erzeugen dies Interrupt korrekt.
- 2) dies Interrupt wird normalerweise vermieden. Falls ein fehlerhafter
- Interrupt auftritt, zeigt der Unterbrechungszeiger auf diesen Punkt
- (wenn dies von einem falsch programmierten 8259 PIC veranlaßt wurde)
-
-