Intel 8259
Der Intel 8259 ist ein programmierbarer Unterbrechungs-Steuerbaustein (Programmable Interrupt Controller, PIC), der primär für die Intel-8080/8085-Prozessoren entwickelt wurde. Später wurde der Chip auch zusammen mit dem Intel 8086/8088 und seinen Nachfolgern eingesetzt. Der Baustein wird hauptsächlich im 28-Pin-DIL-Gehäuse geliefert.
Er besitzt 8 Interrupt-Eingänge und einen Interrupt-Ausgang. Er wird seit den ersten PCs (IBM-PC XT) eingesetzt.<ref>Technische Universität Chemnitz: <templatestyles src="Webarchiv/styles.css" />{{#if:20111208002843
| {{#ifeq: 20111208002843 | *
| {{#if: Der Aufbau des Original-IBM-PC-Motherboards | {{#invoke:WLink|getEscapedTitle|Der Aufbau des Original-IBM-PC-Motherboards}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20111208002843}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Der Aufbau des Original-IBM-PC-Motherboards | {{#invoke:WLink|getEscapedTitle|Der Aufbau des Original-IBM-PC-Motherboards}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20111208002843}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Der Aufbau des Original-IBM-PC-Motherboards | {{#invoke:WLink|getEscapedTitle|Der Aufbau des Original-IBM-PC-Motherboards}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Der Aufbau des Original-IBM-PC-Motherboards | {{#invoke:WLink|getEscapedTitle|Der Aufbau des Original-IBM-PC-Motherboards}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Der Aufbau des Original-IBM-PC-Motherboards | {{#invoke:WLink|getEscapedTitle|Der Aufbau des Original-IBM-PC-Motherboards}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Der Aufbau des Original-IBM-PC-Motherboards | {{#invoke:WLink|getEscapedTitle|Der Aufbau des Original-IBM-PC-Motherboards}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20111208002843|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html}}
|| {{#if: || }}
}}{{#if: Der Aufbau des Original-IBM-PC-Motherboards
| {{#if: {{#invoke:WLink|isBracketedLink|Der Aufbau des Original-IBM-PC-Motherboards}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section1.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}</ref> Die Eingänge sind dabei mit den Interrupt-Pins der Geräte im System verbunden (Tastatur, Timer, Drucker usw.), der Ausgang mit der CPU.
Verwendung
Die 8 Eingänge reichten aufgrund der wachsenden Anzahl der Geräte im System schon bald nicht mehr aus, und es wurden stattdessen zwei Bausteine verwendet. Dabei wird der Ausgang des einen Bausteins (Slave) mit einem Eingang des anderen Bausteins (Master) verbunden (normalerweise am Eingang #2).<ref>Technische Universität Chemnitz: <templatestyles src="Webarchiv/styles.css" />{{#if:20120106115724
| {{#ifeq: 20120106115724 | *
| {{#if: Das Motherboard des AT | {{#invoke:WLink|getEscapedTitle|Das Motherboard des AT}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20120106115724}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Das Motherboard des AT | {{#invoke:WLink|getEscapedTitle|Das Motherboard des AT}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20120106115724}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Das Motherboard des AT | {{#invoke:WLink|getEscapedTitle|Das Motherboard des AT}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Das Motherboard des AT | {{#invoke:WLink|getEscapedTitle|Das Motherboard des AT}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Das Motherboard des AT | {{#invoke:WLink|getEscapedTitle|Das Motherboard des AT}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Das Motherboard des AT | {{#invoke:WLink|getEscapedTitle|Das Motherboard des AT}} | {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20120106115724|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html}}
|| {{#if: || }}
}}{{#if: Das Motherboard des AT
| {{#if: {{#invoke:WLink|isBracketedLink|Das Motherboard des AT}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_96/Motherboard/section2.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}</ref> Die Funktionalität dieser beiden Bausteine ist längst nicht mehr in separaten Chips auf modernen Mainboards implementiert, sondern wird in den Chipsatz integriert.
Die meisten Eingänge sind dabei von der Architektur des PCs festgelegt und werden nicht von anderen Geräten verwendet, selbst wenn kein entsprechendes Gerät vorhanden ist.
Die Interrupts werden in einer bestimmten Reihenfolge abgearbeitet, die beim 8259 durch den Eingang festgelegt ist. Im Normalfall hat der Eingang 0 die höchste, der Eingang 7 die niedrigste Priorität. Damit ergibt sich folgende Reihenfolge: 0, 1, (2), 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7. Die IRQ-Nummerierung wird dabei vom Mainboard vorgegeben: der 8259 addiert die Nummer des Eingangs zu einem konfigurierbaren Wert, und übergibt diesen dann der CPU. Die Nummerierung erfolgt aber üblicherweise wie in der Skizze angegeben.
Der IRQ 2 wird selbst nicht belegt, er ist die „Durchreiche“ für die IRQs des zweiten 8259 (sog. Kaskade, man spricht bei dieser Funktionsweise von Kaskadierung des 8259).
Die begrenzte Anzahl der Eingänge, die unflexible und langsame Programmierung und vor allem die fehlende Mehrprozessorsystemunterstützung haben zur Entwicklung eines Nachfolgers, dem APIC-System, geführt. Obwohl der PIC in aktuellen Chipsätzen zwar aus Kompatibilitätsgründen noch neben dem APIC vorhanden ist, wird er von modernen Betriebssystemen nicht mehr verwendet.
Nachbauten
Der Intel 8259 wurde u. a. an NEC und Siemens lizenziert.
-
NEC μPD 8259
-
Siemens SAB 8259 im Deutschen Museum
Literatur und Datenblätter
- Josef Koller: 16 Bit Microcomputer. 1. Auflage, Hofacker Verlag, München 1981, ISBN 3-921682-80-0, Kap. 4.2.1 „Interruptcontroller 8259A“, S. 191–201.
- Martin Ernst, Andreas Stiller: PC-Bausteine. Interrupts: Der lange Weg einer Anforderung bis zur Bedienung. In: c’t. Heft 8, 1988, S. 174–187.
- Mikrocomputer Bausteine, Datenbuch 1979/80. Band 3, Peripherie, Siemens AG, Bestellnummer B 2049, S. 193–229.
- NEC Electronics (Europe) GmbH, 1982 Catalog, S. 675–692.
- Intel-Datenblatt: 8259A Programmable Interrupt Controller (8259A/8259A-2). (bochs.sourceforge.net GZIP; 257 kB).
Einzelnachweise
<references />