Bedienungsanleitung zu ACOM: AAA CCCCC OOOOO M M 333333 A A C C O O MM MM 3 A A C O O M M M M 33333 00 222 AAAAAAA C O O M M M 3 0 0 22 A A C O O M M 3 0 0 22 A A CCCCC OOOOO M M 333333 o 00 2222 Version 3.02 Copyright (C) 1990 - 1997 bei Matthias Paul Ubierstraáe 28, D-50321 BRšHL DEUTSCHLAND EMail (z.Z. noch): Web: http://www.rhrz.uni-bonn.de/~uzs180/mpdokger.html Dieses Programm in dieser Version ist FreeWare! Alle Rechte vorbehalten! Kostenfreie Weitergabe ist erlaubt und erwnscht, solange das Paket nicht modifiziert wird! Keine Garantie oder Haftung! Letzte Žnderung: 1997-01-30 -mp --------------------------------------------------------------------------- ACOM V3.02 Copyright (C) 1990-1997 bei Matthias Paul Analyse- und Konfigurations-Utility fr serielle PC-Schnittstellen Dieses Programm erm”glicht es, serielle PC-Schnittstellen auf der Basis des 8250 (und Nachfolgern) zu suchen, zu analysieren, in beliebiger Reihenfolge im System zu installieren und dabei s„mtliche Zust„nde des UART-Chips ausfhrlich auszugeben und komfortabel zu konfigurieren. Schnittstellen k”nnen ber ihren DOS-Ger„tenamen COMx oder direkt ber ihre IO-Adresse bezeichnet werden. Falls Ihnen das Programm gef„llt und fr Sie ntzlich ist, w„re es nett, wenn Sie einen kleinen Betrag fr den Rechnerfundus spenden wrden, z.B. in Form von Software, Hardware, BookWare oder 'CoinWare'. Bedingung ist dies jedoch nicht. ACOM wurde fr IBM/DOS-kompatible Rechner geschrieben (PC, XT, AT, PS/2): Sollte das Programm in Ihrer speziellen Umgebung nicht alle eingebauten Features ausnutzen k”nnen, teilen Sie mir bitte Ihre diesbezglichen Probleme mit (Rechnerausstattung, IO-Adressen usw.); ich werde sie nach M”glichkeit in der n„chsten Version bercksichtigen. Inhalt: I. Probleme mit seriellen Schnittstellen II. ACOM's Syntax-šberblick III. ACOM's Schnittstellen-Installations-Funktionen IV. ACOM's Analysefunktionen V. ACOM's Konfigurationsfunktionen VI. ACOM's Hilfefunktionen VII. Was kann ACOM eigentlich nicht? VIII. Errorlevel IX. Glossar --------------------------------------------------------------------------- I. Probleme mit seriellen Schnittstellen: ========================================= Das Programm ACOM ist ein Universal-Hilfsmittel fr fast alle Angelegen- heiten, bei denen es sich um die seriellen Schnittstellen eines PCs dreht. Diese so oft ben”tigten Schnittstellen werden leider nur recht unzureichend vom eingebauten Rechner-BIOS oder von DOS untersttzt, was eine Menge Schwierigkeiten mit sich bringt:  Viele Programme greifen ber die sog. DOS-Equipment-Tabelle auf eine serielle Schnittstelle zu (das ist sauberer Programmierstil und sollte eigentlich immer so sein). In dieser Tabelle (Segment 0040h) werden vom BIOS neben vielen anderen Eintragungen auch die im Rechner instal- lierten seriellen Schnittstellen mit ihren IO-Adressen eingetragen. Die meisten „lteren BIOSe kmmern sich aber nur um zwei COM-Adapter, obwohl in der Tabelle fr vier Stck Platz reserviert ist. Heutige DOS-Versionen untersttzen aber vier COM-Schnittstellen. So kann es vorkommen, daá man zwar mehr als zwei COM-Adapter eingebaut hat, aber trotzdem nur zwei davon ber normale DOS-Programme genutzt werden k”nnen, da die Anwendungsprogramme von einem vollst„ndigen Eintrag in der Tabelle ausgehen oder auch gar nicht die F„higkeit haben, direkt auf die Hardware zuzugreifen. (Allerdings wurde dieser Miástand in den meisten Rechner-BIOSen ab etwa 1994 beseitigt.)  H„ufig m”chte man gerne *logisch* Schnittstellen vertauschen, da man sonst st„ndig Kabel umstecken máte oder da manche Programme nur mit COM1 (oder COM2) arbeiten, aber gerade die ben”tigte Peripherie an einer anderen Schnittstelle h„ngt. (Es gibt den DOS-Befehl MODE zur logischen Umleitung, aber dies funktioniert nicht mit allen Programmen und ist relativ unflexibel, z.B. untersttzen manche „lteren Versionen nur COM1 und COM2. Auáerdem ben”tigt diese MODE-Option einen speicher- residenten Treiber, ACOM hingegen kommt ohne aus.)  Manchmal kommt es vor, daá serielle Schnittstellen nicht an Standard- IO-Adressen liegen (insb. dann, wenn man mehr als vier COM-Adapter besitzt; ein Beispiel dafr ist die UNI-RAM-Karte aus c't 06/1990). Diese Adapter konnten bisher nur mit selbstgestrickter Software ange- sprochen werden, die direkt auf die Hardware zugreift. Es w„re sch”n, wenn man diese Schnittstellen ganz normal handhaben k”nnte, d.h. sie auch von DOS oder anderen Programmen aus ansprechen k”nnte.  Fr manche Anwendungen reichen die mit dem DOS-Kommando MODE w„hlbaren Einstellungen (Baudrate, Anzahl der Datenbits, Anzahl der Stoppbits, Parit„t) nicht aus. (DOS untersttzt nicht alle Hardware-F„higkeiten des Standard-UART-Bausteins 8250 (oder kompatibler), der die serielle Schnittstelle steuert.)  Bei bestimmten Programmen muá man immer gleiche Konfigurationen der Schnittstellen vornehmen. Die st„ndige Angabe aller Parameter kostet viel Zeit und Aufmerksamkeit; weiterhin gibt es Spezial-Konfigurationen (s. c't MIDI-Interface 01/1991), die berhaupt nicht generell unter- sttzt werden.  Fr Programmierer stellt sich h„ufiger das Problem, daá man ein Programm unter Bedingungen austesten will, die auf dem verwendeten Rechner nicht so einfach erreichbar sind. Was serielle Schnittstellen angeht, hat man dann evtl. zu 'viele' Schnittstellen installiert und kann das Verhalten seines Programms nicht fr den Fall austesten, daá weniger Schnittstellen vorhanden w„ren. Oder: Bestimmte Programme laufen (paradoxerweise) nur in einer 'kleineren' Hardware-Umgebung und vertragen z.B. die Existenz von COM3 oder COM4 nicht. Dann kann es noch vorkommen, daá Programme nur in der DOS-Equipment-Tabelle fr seriellen Schnittstellen nach COM-Adaptern Ausschau halten und sich wenig um die vom Benutzer 'softwarem„áig installierte' Hardware (ebenfalls in der Equipment- Tabelle) kmmern; sie finden dann evtl. doch noch Schnittstellen, die man ihm gar nicht 'geben' m”chte oder sie werten sogar ungltige Eintr„ge aus.  Vielleicht m”chte man die Timeout-Zeiten der Schnittstellen sehen oder „ndern und findet dazu kein Hilfsmittel.  Oder man m”chte detaillierte Informationen ber die Signalzust„nde aller Pins am Stecker oder der Register haben. ACOM kann bei allen diesen Problemen komfortable Abhilfe schaffen und bietet darber hinaus noch einige Extra-Bonbons... --------------------------------------------------------------------------- II. ACOM's Syntax-šberblick: ============================ Syntax: ACOM [ | | | ] mit = COM [([] [] [] [])|] = (INIT | INST) [ [ [ []]]] ([INT] | [INTAT]) = SHOW [ [[DETAIL[ED]] [REG[ISTER] [CONT[INUAL]]] [NOIRQ]]] = ASCII | DETECT [] | ENABLE[D][] | RESET | MIDI | TIMEOUT [() | (()S[ec.])] | FIFO[0|1|4|8|14] = ( | | ) mit î 1,2,3,4 = '0' z.B. 3F8,2F8,3E8,2E8,338,238,3E0,2E0,2F0,260,2B0,2B8 î 10 ö 115200 beliebig z.B. 50, 75, 110, 134, 150, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800, 7200, 9600, 19200, 28800, 38400, 57600, 115200. î 5, 6, 7, 8 î 1, 2 (automatisch 1« bei 5 Datenbits & 2 Stoppbits) î G(erade), U(nger.), K(eine), A(usgleich), E(ven), O(dd), N(one), S(tick) î (INFO | !) | ABOUT | (H | ? | HELP | HILFE) Grunds„tzlich gilt (und wird nicht weiter erw„hnt), daá die Parameter in Groá- oder Kleinschrift angegeben werden k”nnen. Vor allen Parametern mit Ausnahme von Werteangaben und den Parit„ts-Parametern kann optional auch ein '/' oder '-' als Parametereinleitung stehen (der SwitChar wird nicht explizit ausgewertet). --------------------------------------------------------------------------- III. ACOM's Schnittstellen-Installations-Funktionen: ==================================================== ACOM's Aufrufparameter k”nnen in verschiedene Klassen eingeteilt werden, die in den nachfolgenden Kapiteln einzeln erl„utert werden. Zun„chst: ACOM beinhaltet eine Schnittstellen-Installations-Funktion, mit der man beliebige Schnittstellen in wahlfreier Reihenfolge im DOS-Equipment eintragen oder sie gegeneinander vertauschen kann. Syntax: ACOM mit = (INIT | INST | COM0) [ [ [ []]]] ([INT] | [INTAT]) = ( | | ) mit î 1, 2, 3, 4 im erlaubten Bereich <= 0FFF8 = '0', z.B. 3F8, 2F8, 3E8, 2E8, 338, 238, 3E0, 2E0, 2F0, 260, 2B0, 2B8 Hinweise:  Aus Kompatibilit„tsgrnden zu alten ACOM-Versionen wurde die alte Syntax weiterhin zugelassen: Man kann also auch COM0 statt INIT schreiben. Aus diesem Grund kommt es bei fehlerhaften Parametern auch schon einmal vor, daá INIT ausgefhrt statt, obwohl dies gar nicht beabsichtigt war.  Die explizit oben angegebenen Hex-Adressen sind alle zur Zeit von ACOM abgetesteten IO-Adressen bei der Automatik-Schnittstellen-Suchfunktion.  INIT und INST haben geringfgig unterschiedliche Funktionen! Bei INIT werden zuerst die Schnittstellen gew„hlt, die als Parameter angegeben wurden, und zwar in der angegebenen Reihenfolge. Danach werden alle noch freien Pl„tze mit weiteren Schnittstellen gefllt, wobei ACOM eine interne Tabelle bekannter Adressen serieller Schnittstellen durchsucht. Darunter sind neben den vier PC-Standard- Adressen auch die Adressen, die die Uni-RAM-Karte verwendet. Werden statt echter Adressen nur Nullen angegeben, so werden diese Pl„tze zun„chst nur freigehalten und fr die sp„tere automatische Auffllung reserviert, bleiben aber dann doch Lcken durch nicht vorhandene Schnittstellen, so wird die Lcke durch Aufrcken in der Liste geschlossen (denn Lcken sind nicht erlaubt). Dies ist sinnvoll, um es zu erm”glichen, daá man einen COM-Adapter genau spezifiziert, ohne die davorliegenden ebenfalls genauer angeben zu mssen. Bei INST hingegen werden nur die Schnittstellen installiert, die auch angegeben wurden, das heiát die automatische Suche und Auf- fllung unterbleibt. Gibt man in der Parameterkette auch Nullen als Parameter *vor* den eigentlichen Schnittstellen an, so gilt fr diese Pl„tze das Gleiche wie bei INIT; steht eine Null als Parameter aber *hinter* den genauer spezifizierten Schnittstellen, so werden hier nicht etwa von ACOM 'selbst gefundene' Schnittstellen eingesetzt, sondern diese Syntax hat eine Sonderfunktion, bei der man zwei Punkte beachten muá: Normalerweise sind die Pl„tze der nicht vorhandenen oder nicht installierten Schnittstellen in der DOS-Equipment-Tabelle mit Nullen gefllt. Hat man jedoch mehr Schnittstellen physikalisch installiert, als man es der Software mitteilen will, so reicht es, einfach nur die gewnschten Schnittstellen mit INST angeben und schon wird das Hardware-Installed-Byte entsprechend gesetzt. Normalerweise erkennt dann bliche Software die darber hinausgehenden Schnittstellen nicht mehr. Es gibt aber auch Programme, die nicht auf das Hardware- Installed-Byte, sondern nur auf die Eintr„ge in der Tabelle selbst achten; fr sie existieren die Schnittstellen natrlich immer noch. In diesem Fall muá man am Ende der Parameterkette noch eine zu- s„tzliche Null angeben, wodurch die nicht mehr benutzten Tabellen- eintr„ge auch noch mit Nullen berschrieben werden. Da man fr Programmtestzwecke gerne beide M”glichkeiten zur Verfgung h„tte (auch wenn die zweite L”sung die grndlichere ist), sind in ACOM auch beide M”glichkeiten integriert.  Der optionale Parameter INT bzw. INTAT (fr ATs) ist fr die Ver- tauschungsm”glichkeit von Schnittstellen inklusive IRQ vorgesehen, wurde aber noch nicht vollst„ndig implementiert. Auf manchen Rechnern fhrt die Angabe wegen der automatischen IRQ-Erkennung zum Absturz (siehe ACOM301.DOC), und nur in wenigen F„llen funktioniert diese Debug-Fassung der Funktion problemlos. Ich empfehle, diesen Parameter nicht zu verwenden! Beispiele: ACOM INIT bewirkt das automatische Absuchen aller Standard-Adressen (und einiger weiterer, die von der Uni-RAM-Karte verwendet werden) nach seriellen Schnittstellen. Die ersten vier gefundenen werden im Equipment eingetragen. ACOM INIT 0338 03f8 bewirkt, daá zuerst die Schnittstellen an den Adressen 0338h und 03f8h zu COM1 und COM2 werden, danach sucht ACOM noch nach weiteren Schnittstellen fr COM3 und COM4 (falls noch welche vorhanden sind). Eine fhrende Null ist die Erkennung fr Hex-Zahlen, sonst werden sie dezimal ausgewertet! Auf diese Weise macht man sowohl Standard-Adapter als auch Schnittstellen an sehr unblichen Adressen schnell zu normal von DOS aus ansprechbaren Schnittstellen. Gibt man 1 bis 4 an, so erkennt ACOM, daá damit eine bereits instal- lierte DOS-COM-Schnittstelle gemeint ist, und setzt sie in der Equipment-Tabelle an die entsprechend angegebene Position. Damit kann man ganz schnell logisch Schnittstellen vertauschen: ACOM INIT 1 3 4 2 bewirkt die folgende Zuordnung: COM1 alt -> COM1 COM3 alt -> COM2 COM4 alt -> COM3 COM2 alt -> COM4 Dies kann man auch mit direkter IO-Adreáangabe in beliebiger Reihen- folge mischen! ACOM INIT 1 2 2 2 Das Programm ACOM besitzt einen Suchalgorithmus, der die noch nicht im Equipment belegten Schnittstellen-Pl„tze selbst fllt, wenn Sie noch weitere Schnittstellen an IO-Adressen besitzen, die ACOM bekannt sind. Dabei kommt es zu keinen Doppelbelegungen, wenn sie eine Schnittstelle implizit (d.h. ber 1 bis 4) oder explizit mit einer IO-Offset-Adresse bereits angegeben haben. Wenn Sie jedoch eine Schnittstelle mehrfach angeben (siehe Beispiel) geht ACOM davon aus, daá dies von Ihnen beabsichtigt ist und installiert eine physikalische Schnittstelle auf mehrere logische Schnittstellen. Im Beispiel wrden COM2, COM3 und COM4 ab sofort alle mit der Schnittstelle arbeiten, die bisher COM2 war. Beliebige implizite oder explizite Kombinationen logischer und physikalischer Schnittstellen sind denkbar. ACOM INST 03f8 03e8 Dieses Kommando installiert die beiden angegebenen Schnittstellen im DOS-Equipment, sucht aber fr die beiden freien Pl„tze fr COM3 und COM4 nicht nach weiteren Adaptern. Falls aber mehr Schnittstellen vorhanden sind und auch vorher installiert waren, so bleiben die alten Eintr„ge weiterhin in der Tabelle stehen, lediglich das Hardware-Installed-Byte wird auf weniger Schnittstellen gesetzt. Dies reicht meistens, um die Schnittstellen 'verschwinden' zu lassen. ACOM INST 03f8 03e8 0 Dieses Kommando (und „hnliche) bewirkt das Gleiche wie das letzte Kommando, nur werden jetzt auch noch die Eintr„ge fr COM3 und COM4 in der Tabelle mit Nullen berschrieben. Somit gibt es also berhaupt keine Information ber die Schnittstellenexistenz mehr, und jedes Programm, das die Equipment-Eintr„ge auswertet und nicht selbst Schnittstellen im IO-Bereich sucht, wird COM3 und COM4 nicht mehr erkennen. Daá ACOM hier also zwei alternative Deinstallationsm”glich- keiten zul„át, liegt daran, daá man als Programmierer manchmal gerne das Verhalten seiner (oder anderer) Programme auf beide F„lle hin austesten m”chte. ACOM INST 0 02f8 Dieses Kommando hat fast die gleiche Wirkung, wie das Kommando mit INIT, d.h. sofern an 02f8 ein Adapter existiert, wird er als COM2 installiert, und fr COM1 (repr„sentiert durch das Dummy '0') sucht ACOM selbst eine weitere Schnittstelle. Der Unterschied besteht darin, daá COM3 und COM4 nicht installiert werden, auch wenn weitere Schnitt- stellen vorhanden w„ren. ACOM INST 0 02f8 0 Dieses Kommando ist sozusagen eine Kombination der letzten beiden Beispiele. Die erste Null aktiviert ACOM's Auto-Suchfunktion fr COM1; aber COM3 und COM4 werden nicht etwa installiert *sondern* zus„tzlich werden ihre Eintr„ge im DOS-Equipment gel”scht. ACOM INIT gefolgt von ACOM INST 1 2 0 Beide Kommandos in Kombination bewirken, daá ACOM selbst serielle Schnittstellen sucht, aber nur die ersten beiden installiert werden. (Es lassen sich hier beliebige Kombinationen denken.) --------------------------------------------------------------------------- IV. ACOM's Analysefunktionen: ============================= ACOM kann die Konfigurationen beliebiger serieller Schnittstellen mittels seiner Analysefunktionen anzeigen: Syntax: ACOM mit = (SHOW | COM?) [ [[DETAIL[ED]] [REG[ISTER] [CONT[INUAL]]] [NOIRQ]]] = ( | | ) mit î 1, 2, 3, 4 im erlaubten IO-Bereich <= 0FFF8 = '0', z.B. 3F8, 2F8, 3E8, 2E8, 338, 238, 3E0, 2E0, 2F0, 260, 2B0, 2B8 Hinweise:  Aus Kompatibilit„tsgrnden zu alten ACOM-Versionen wurde die alte Syntax weiterhin zugelassen: Man kann also auch COM? statt SHOW schreiben.  DETAILED und DETAIL, REGISTER und REG sowie CONTINUAL und CONT sind jeweils identisch in der Wirkung.  Bei Verwendung des Parameters DETAILED empfehle ich zus„tzlich den Parameter NOIRQ anzugeben, um Abstrze auf manchen Rechnern von vornherein zu vermeiden (siehe unten). Wahlweise kann man auch die Umgebungsvariablen %acom_noirq% setzen (ebenfalls siehe unten). Beispiele: ACOM SHOW Gibt die Konfigurationen (Baudrate, Anzahl der Daten- und Stoppbits, Parit„t) aller im DOS-Equipment eingetragenen COM-Adapter in einer Tabelle aus. ACOM SHOW 2 Zeigt nur die Konfiguration der Schnittstelle, die zu COM2 geh”rt, an. Die Zahl wird im Bereich 1 bis 4 als DOS-COM-Schnittstelle interpretiert, ansonsten als direkte IO-Offset-Adresse in Dezimalform oder Hexform (mit fhrender Null). ACOM SHOW 03F8 REGISTER Wie oben, nur daá hier zus„tzlich noch die Register-Inhalte des Schnittstellenbausteins 8250 in Hex- und Bin„r-Form ausgegeben werden. Dies kann zum L”sen diverser Hardware-Probleme ntzlich sein. Die Werte beziehen sich auf einen Lesezugriff in genau dieser Reihenfolge; manche Register im IO-Adreábereich liegen bereinander (Umschaltung mit DLAB, RD/WR). Die ausgegebene Statusinformation basiert auf Erfahrungstatsachen und muá nicht auf jedem Rechner mit der Realit„t bereinstimmen, da das Einschaltverhalten des 8250 ausschlaggebend fr die Analyse ist: - (un)genutzt : Kontakt der Schnittstelle mit Peripherie, - (un)angesprochen: Software-Programmierung der Schnittstelle ACOM SHOW COM2 DETAILED, ACOM SHOW COM2 DETAILED REGISTER Bei der Zusatzangabe DETAILED werden (fast) alle Bits der Schnitt- stellen-Register interpretiert und in ihrer Bedeutung in Klarschrift ausgegeben. Man kann diese Ausgabeform auch mit REGISTER kombinieren, die Reihenfolge ist dabei egal. Die Ausgabe der REGISTER-Funktion kann ber den zus„tzlichen Parameter CONTINUAL bzw. CONT auch kontinuierlich erfolgen, z.B. ACOM SHOW COM2 REGISTER CONT. In diesem Fall erhalten Sie ein Schirmbild, auf dem oben der Startzustand und unten der aktuelle Schnittstellenzustand sichtbar ist. Sollte sich das Bild st„ndig ver„ndern, k”nnen Sie dieses mit der -Taste einfrieren und wieder reaktivieren. Mit erhalten Sie einen TTY-Modus, die fr die Dauer des Tasten- drucks die durch das Empfangsregister gehenden Daten ausgibt, aber nur bei sehr langsamen Baudraten (110Bd) sinnvoll nutzbar ist. Die jeweils m”glichen Tasten sind in der Mitte des Schirmbildes angegeben. Die Option NOIRQ unterbindet hier die Bearbeitung serieller IRQs w„hrend dieser Anzeige. Achtung: Ehe Sie die DETAILED-Funktion das erste Mal ausprobieren, sollten Sie unbedingt alle Daten sichern, denn auf manchen Rechnern fhrt diese Funktion leider zu einem Absturz, der nur durch Neubooten behoben werden kann (siehe ACOM301.DOC). Wenn Sie die Hardware-IRQ- Bestimmung nicht ben”tigen, k”nnen Sie einfach den Parameter DETAILED immer mit dem Parameter NOIRQ verwenden. Auf diese Weise wird die Hardware-IRQ-Erkennung bersprungen, alle weiteren Daten aber angezeigt: ACOM SHOW COM2 DETAILED NOIRQ. Um die st„ndige Angabe von NOIRQ zu vermeiden, k”nnen Sie auch die Umgebungsvariable %acom_noirq% entsprechend setzen (siehe unten). Werden die DETAILED- und die REGISTER-Funktion zusammen mit NOIRQ verwendet, so gilt die Option NOIRQ fr beide Funktionen gleichzeitig jeweils entsprechend der Beschreibung. --------------------------------------------------------------------------- V. ACOM's Konfigurationsfunktionen: =================================== ACOM erlaubt mittels verschiedener Konfigurationsfunktionen das Umkonfigurieren beliebiger serieller Schnittstellen: Syntax: ACOM mit = COM [([] [] [] [])|] = (ASCII| ASC2) | DETECT [] | ENABLE[D][] | RESET | MIDI | TIMEOUT [() | (()S[ec.])] | FIFO[0|1|4|8|14] = ( | | ) mit î 1, 2, 3, 4 = '0' z.B. 3F8, 2F8, 3E8, 2E8, 338, 238, 3E0, 2E0, 2F0, 260, 2B0, 2B8 î 10 ö 115200 beliebig z.B. 50, 75, 110, 134, 150, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800, 7200, 9600, 19200, 28800, 38400, 57600, 115200. î 5, 6, 7, 8 î 1, 2 (automatisch 1« bei 5 Datenbits & 2 Stoppbits) î G(erade), U(nger.), K(eine), A(usgleich), E(ven), O(dd), N(one), S(tick), sowie erlaubte Buchstabenkombinationen Hinweise:  Es mssen nicht immer alle Parameter (Baudrate bis Parit„t) angegeben werden, sondern nur die, die man „ndern m”chte. Die Reihenfolge der Argumente nach ohne Makros spielt keine Rolle!  Fr die Baudraten kann man eine der in der Syntaxtabelle enthaltenen Baudraten w„hlen (das sind weit mehr als die von DOS untersttzten Baudraten), es gibt allerdings auch noch die M”glichkeit, daá man einfach eine Baudrate zwischen 10 und 115200 Baud eingibt. ACOM meldet dann, ob diese Baudrate tats„chlich verfgbar ist oder nicht. Ist sie nicht verfgbar, werden die beiden n„chstliegenden m”glichen Baudraten zur Auswahl angeboten.  ASCII und ASC2 sowie ENABLE und ENABLED sind gleichbedeutend. Beispiele: ACOM COM1 2400 8 1 N Dieser Befehl konfiguriert die Schnittstelle, die mit COM1 verknpft ist, mit den entsprechenden Parametern. Es muá die Baudrate, die Anzahl der Datenbits, danach die Anzahl der Stoppbits (die L„nge der Pause zwischen den Daten), zuletzt die Parit„t angegeben werden. Die Reihenfolge ist dabei egal. Die jeweils erlaubten Werte kann man der Syntax-Beschreibung entnehmen, sie gehen weit ber die von DOS untersttzten M”glichkeiten hinaus. Die Stoppbitangabe 1« l„át sich nicht per Parameter w„hlen, wird aber bei 5 Daten- und 2 Stoppbits automatisch gew„hlt. Die Parit„tsangabe gestattet sowohl deutsche als auch die h„ufig verwendeten englischen Bezeichnungen und wertet nur den ersten Buchstaben aus (statt 'N' kann man also auch 'None' oder 'Keine' schreiben). ACOM COM02f8 1200 7 2 Gerade Hier gilt das Gleiche wie oben. Auáerdem: Statt COM1 kann auch eine Schnittstelle COM2, COM3, COM4 oder sogar eine direkte IO-Adresse angegeben werden. Dabei ist dann aber *nur* die Hexadezimaleingabe erlaubt, die mit einer fhrenden Null beginnen muá! ACOM COM3 ACOM COM3 k ACOM COM0338 8 2 1200 Es mssen nicht alle Parameter angegeben werden und auch die Reihen- folge ist egal. Nicht genannte Parameter bleiben auf ihren alten Werten. Wenn man nur die Schnittstellen-Nummer angibt, so wird („hnlich der SHOW-Funktion) die aktuelle Konfiguration ausgegeben. Das Verhalten „ndert sich allerdings bei nicht vorhandenen Schnittstellen oder nicht-standardisierten Adressen: Hier ist die SHOW-Funktion vorzuziehen, da bei der hiesigen Kon- figuration *immer* auch schreibend auf die Adresse zugegriffen wird. Sofern an der Adresse keine Schnittstelle sondern eine andere Hardware liegt, k”nnte diese u.U. dadurch 'verwirrt' werden. ACOM COM2 a ACOM COM2 ga Die Ausgleichsparit„t (oder Stick-Parity) wird normalerweise nicht ben”tigt; in Sonderf„llen kann jedoch ihre Einstellung ntzlich werden. Es gilt hierfr: Ist die Ausgleichsparit„t in Verbindung mit 'keiner' Parit„t gew„hlt, so ist das Parit„tsbit immer Eins, ansonsten wird das Parit„tsbit gesendet; wird dieses Bit jedoch bei aktivierter Ausgleichsparit„t empfangen, so wird es bei ungerader Parit„t als logisch 1 und bei gerader Parit„t als logisch 0 erkannt. Man aktiviert die Ausgleichsparit„t entweder dadurch, daá man statt der normalen Parit„t die Ausgleichsparit„t angibt, dann wird sie zus„tzlich zur bereits bestehenden Parit„t gesetzt, oder direkt dadurch, daá man eine der folgenden Kombinationen 'xy' aus den Anfangsbuchstaben der m”glichen Parit„ten w„hlt: xy mit x î (G | U | K | E | O| N) und y î (A | S). Eine gesetzte Ausgleichsparit„t wird einfach dadurch gel”scht, daá man eine 'normale' Parit„t angibt. ACOM COM4 ASCII Die Makro-Variante erm”glicht es, mit einem Parameter eine ganze Zahl von Einstellungen fest oder mit leichten Ver„nderungen zu aktivieren. Das Makro ASCII stellt die Schnittstelle auf die ASCII-Norm ein: 110 Baud, 7 Daten- , 2 Stoppbit, keine Parit„t. ACOM COM3 ENABLE ACOM COM3 ENABLE 15 ACOM COM3 ENABLED 0E Das Makro ENABLE erm”glicht die gezielte Einstellung der Ereignisse, die einen Interrupt IRQ ausl”sen sollen. Diese Einstellung kann meist entfallen, da das IER i. allg. von der Software, die die Schnittstelle bedient, entsprechend gesetzt wird. Der Schnittstellen-Baustein kann einen Interrupt aus verschiedenen Ursachen heraus generieren: - wenn ein šbertragungsfehler aufgetreten ist (Priorit„t 1) Wert: 4 - nachdem ein Zeichen empfangen wurde (Priorit„t 2) Wert: 1 - nachdem ein Zeichen gesendet wurde (Priorit„t 3) Wert: 2 - bei Status-Žnderungen d. Modem-Status-Registers (Priorit„t 4) Wert: 8 W„hlen Sie alle gewnschten Quellen, addieren die am Ende der Zeilen stehenden Werte dieser Quellen und verwenden das Ergebnis als Argument fr ENABLE. Diese Zahl kann als Dezimalzahl oder als Hex-Zahl (mit fhrender Null) angegeben werden. Die Angabe ENABLE oder ENABLE 0 gibt die aktuelle Einstellung aus. Zur Interrupt-Generierung wird also mit diesem Kommando eine Auswahl der hardware-m„áigen Quellen getroffen. Tritt das Ereignis dann ein und ist es nicht im IIR maskiert, so wird die jeweils h”chste Priorit„t im IIR abgelegt und dann ein IRQ ausgegeben. Dieser kann nun noch von Out2 maskiert sein, ansonsten erreicht der IRQ den Interrupt-Controller des PC und fhrt damit zur Abarbeitung der entsprechenden INT-Routine. ACOM COM3 MIDI Dieser Parameter setzt die Schnittstelle COM3 (oder analog zu obigem auch eine beliebige andere) auf den MIDI-Modus nach der Schaltungs- erg„nzung aus c't 01/1991. Dabei werden die Parameter 14400 Baud, 8 Datenbits, 1 Stoppbit und keine Parit„t gesetzt. Die Baudrate 14400 ist aber nicht die wirkliche Baudrate in diesem Modus, denn mit dem Signal OUT1 aktiv high wird der Quartz der Schnittstelle von normaler- weise 1.8432 MHz auf 4.00 MHz hochgeschaltet, da sich nur so mittels des Teilerverh„ltnisses fr 14400 Baud genau die Midi-Baudrate von 31250 Baud erreichen l„át. ACOM COM02f8 RESET Dieses Makro funktioniert genauso wie oben; hier wird die Schnittstelle auf eine ACOM-interne Standard-Einstellung gesetzt. Bei der vorliegenden Version ist dies: 2400 Baud, 8 Datenbits, 1 Stoppbit und keine Parit„t; auáerdem findet ein Error-Bit-Reset statt und das MCR wird gel”scht (damit auch IRQ disabled). Nur mit diesem Kommando kann der MIDI-Modus vollst„ndig rckg„ngig gemacht werden. ACOM COM2 FIFO 14 Diese Funktion erlaubt auf Schnittstellen mit FIFO-Speicher (16550) die Einstellung der Gr”áe des FIFOs. Mit 0 wird der FIFO deaktiviert. Die anderen Einstellungen 1, 4, 8, 14 stellen die Puffer auf die jeweilige Gr”áe ein. ACOM COM4 TIMEOUT 01 Dieses Makro k”nnte semantisch gesehen auch bei den Installations- funktionen beschrieben werden, denn es ver„ndert nicht wie die anderen obigen Parameter direkt die Konfiguration der Schnittstelle (hardware- m„áig), sondern modifiziert einen weiteren Eintrag im DOS-Equipment- Bereich, der die Timeout-Zeiten der Schnittstellen enth„lt: Standardm„áig steht dort der Wert 1. Zur Beeinflussung kann man bei dieser Funktion noch eine Hex-Zahl (mit fhrender Null) oder eine Dez-Zahl angeben, die im Bereich von 0 bis 255 liegen muá. Gibt man keinen Wert an, so wird die aktuelle Einstellung fr die angegebene Schnittstelle angezeigt. Wichtig ist noch, daá fr hier natrlich nur 1 bis 4 zugelassen sind, denn nur fr diese sind im BIOS-Bereich Timeout-Eintr„ge reserviert. --------------------------------------------------------------------------- VI. ACOM's Hilfefunktionen: =========================== ACOM's Hilfe-Modus gibt einen Kurzberblick ber Funktionsumfang, Konfiguration und Syntax des Programms Syntax: ACOM mit î (INFO | !) | ABOUT | (H | ? | HELP | HILFE) Beispiele: ACOM ACOM HELP ACOM mit falscher Parameteranzahl Gibt den Kurzberblick und die Syntax am Bildschirm aus. ACOM INFO ACOM ! Gibt die Copyrightmeldung, weitere Benutzungsbestimmungen sowie ebenfalls den obigen Syntax-Schirm aus. ACOM ABOUT Gibt die Konfiguration von ACOM selbst aus. Mittels verschiedener Umgebungsvariablen (DOS-Kommando SET) k”nnen Sie ACOM's Verhalten dauerhaft konfigurieren, wenn Sie entsprechende Eintr„ge in AUTOEXEC.BAT eintragen. Neben der M”glichkeit, mit %acom_forced%, %acom_dynamic% und %acom_range% die Art und Weise des Schnittstellen- tests zu steuern (statisch, dynamisch, forciert) und den erlaubten Bereich der IO-Adressen einzuschr„nken (je nach Rechnerarchitektur), k”nnen Sie mit %acom_machine% auch den Rechner genauer spezifizieren und mit %acom_noirq% die IRQ-Erkennung deaktivieren. Die aus den aktuellen Einstellungen resultierenden Vorgaben zeigt ACOM im ABOUT-Schirm direkt an. Besonders interessant ist die Variable %crt1out%. Setzt man diese auf DOS, wickelt ACOM seine Ausgaben ber DOS, und nicht ber das BIOS bzw. direkten Hardware-Zugriff ab. Auf diese Weise ist die Ausgabe zwar monochrom, kann aber umgeleitet werden. Besonders, wenn man ACOM in AUTOEXEC.BAT einbindet und mehrere Aufrufe hinter- einander erfolgen, ist es oft wnschenswert, diese ins NUL-Device umzuleiten: ... SET crt1out=DOS ACOM INIT > \dev\nul ACOM COM2 9600 > \dev\nul SET crt1out= ACOM SHOW ... Die Variablen im Einzelnen: %acom_machine%= | [AT | NOTPC] nichts fr automatische Erkennung %acom_range% = | [EXT | ALL] EXT : Zul„ssiger IO-Bereich: 0010hex - 03F8hex ALL : '' '' : 0010hex - FFF8hex sonst : '' '' : 0200hex - 03F8hex (FFF8hex PS/2) %acom_dynamic%= | [ON] nichts, um nur statischen Test zu machen %acom_forced% = | [ON] nichts, um Zugriff auf nicht existierende Schnittstellen zu verbieten. %acom_noirq% = | [ON] nichts, um bei Bedarf Hardware-IRQ-Erkennung zu erlauben (was leider auf manchen Rechnern zum Absturz fhrt). ON unterbindet diesen Test und wirkt wie ein explizit dafr angegebener Parameter NOIRQ. Bei gesetzter Variablen kann die Angabe von NOIRQ daher meist unterbleiben, allerdings hat NOIRQ zwei unterschiedliche Funktionen (*hier* geht es nur um die Hardware-IRQ-Erkennung). Nachteilig an einer gesetzten Option ist, daá ACOM damit nicht alle Funktionen ausreizen kann. Siehe auch weiter oben bei Parameter NOIRQ. %crt1out% = [ | DIRECT | DIRECTNOSNOW | BIOS | DOS] nichts oder NORM fr direkten Zugriff auf den Bildschirm- speicher. Die Eingabe wird grunds„tzlich ber DOS abgewickelt, d.h. Eingabeumleitungen sind immer erlaubt. --------------------------------------------------------------------------- VII. Was kann ACOM eigentlich nicht? ====================================  Alle Programme, die wie ACOM direkt auf die Hardware zugreifen, also nicht den Weg ber die Equipment-Tabelle gehen, merken natrlich nichts von einer evtl. nicht standardgem„áen Benennung der Schnittstellen und greifen weiterhin auf die IO-Adressen zu, die in ihrer internen Tabelle gespeichert sein máten. Das bringt keine Probleme mit sich, aber ACOM's Funktion zur Schnittstellenvertauschung und die Installation nicht-standardisierter Schnittstellen werden dann natrlich ignoriert.  Es k”nnte residente Tools fr serielle Schnittstellen geben, die bei *sp„terer* Benutzung von ACOM's Installations- oder Konfigurations- funktionen nicht mehr korrekt funktionieren; dies kann natrlich nur dann vorkommen, wenn sie die IO-Adressen fr ihre Aktivit„ten st„ndig *neu* aus der Equipment-Tabelle holen. Zum Beispiel k”nnte ein Maustreiber, der fr eine Maus an COM1 installiert wurde u.U. die Arbeit verweigern, wenn ACOM die Schnitt- stellen COM1 und COM2 sp„ter vertauscht hat und der Maustreiber nun z.B. die IO-Adresse von COM1 aus der Tabelle holt und stattdessen jetzt die Adresse der ehemaligen COM2-Schnittstelle bekommt. Die meisten Programme werden aber wohl nur einmal die Adresse aus der Tabelle holen und dann mit ihr weiterarbeiten, auch wenn im Equipment inzwischen ganz andere Adressen eingetragen sind; in diesem Fall k”nnte man sogar ohne groáen Aufwand mehr als vier COM-Adapter gleichzeitig nutzen, da die Nicht-Standard-Adressen den jeweiligen Programmen einfach untergeschoben wurden. Beim Beispiel Maustreiber k”nnte das recht ntzlich sein, um die Standard-IO-Adressen wieder 'frei zu bekommen' fr Software, die direkt auf die Schnittstellen zugreift. Das geht natrlich nur solange, wie Programme fr Mausaktionen auch den residenten Maustreiber benutzen und keine eigenen Routinen mitbringen, die wieder am Maustreiber vorbei auf den Standard-Adressen eine Maus suchen. Bei Bedarf lohnt sich sicher das Ausprobieren.  ACOM 'verbiegt' bei Vertauschen von Schnittstellen blicherweise keine Interrupts, zumindest nicht dauerhaft (es sei denn, Sie wrden die noch nicht vollst„ndig implementierten Optionen INT bzw. INTAT bei Parameter INIT mitangeben).  Es bleibt zu bemerken, daá es in den allermeisten F„llen keine Probleme geben wird, zumal die Konfiguration direkt die Schnittstellen-Hardware programmiert und damit auch (bis zu einer Umprogrammierung) fr alle Programme gilt, die auf beliebige Weise die Schnittstelle ansprechen (direkt und/oder ber DOS-Funktionen). --------------------------------------------------------------------------- VIII. Errorlevel: ================= Gruppe 0: 0 = Normale Abarbeitung von ACOM problemlos erfolgt [x] Gruppe 1: (reserviert: 1-15) 1 = Abbruch, wenn angegebener DOS-COM-Adapter nicht im Equipment eingetragen ist 2 = Abbruch wegen unzul„ssiger Baudrate 3 = Abbruch wegen falscher Datenbitanzahl 4 = Abbruch wegen falscher Stoppbitanzahl 5 = Abbruch wegen falscher Parit„tsangabe 6 = Abarbeitung der Initialisierung erfolgreich abgeschlossen [x] 7 = Abbruch wegen falscher Nummer/Adresse im IO-Bereich 8 = Abbruch, 8250-Test negativ, dort kann kein (normaler) [o] COM-Port sein 9 = Abbruch, Parameter fr Installation ungltig 10 = Abarbeitung der Installation problemlos, aber mehr als max. [x] DOS-Schnittstellen-Anzahl gefunden 11 = Benutzer-Abbruch wegen falscher Baudrate 12 = Abbruch wegen falschem benutzerdefinierten Makro 13 = Abbruch wegen falschen Parametern im Makrofile ACOM.DAT 14 = Abbruch wegen Dateizugriffsfehler bei ACOM.DAT 15 = Abbruch wegen falscher Interrupt-Quellen-Kombination bei Enable-Angabe Gruppe 2: (reserviert: 16-31) 16 = Abbruch wegen falscher Parameteranzahl, nach der Hilfetextausgabe 17 = Benutzer-Abbruch wegen falscher Schnittstellen-Angabe 18 = Abbruch wegen nicht erlaubter direkter IO-Adreáangabe 19 = Abarbeitung der Konfigurationsausgabe fertig [x] 20 = Abbruch wegen Bereichsberschreitung 21 = Abbruch wegen mehrerer gleichartiger Parameter 22 = Abbruch wegen ungltiger oder berflssiger Parameter 23 = Abarbeitung der Timeout-Tabellen-Ver„nderung problemlos erfolgt[x] 24 = Abbruch wegen Bereichsberschreitung bei Timeout-Zeit-Angabe 25 = Abbruch wegen falscher DOS-COM-Angabe (im Timeout-Teil) 26 = Abarbeitung problemlos, Timeout-Wert angezeigt [x] Gruppe 3: (reserviert: 32-47) 32 = Abbruch, wenn DOS-Schnittstelle nicht im Equipment eingetragen ist 33 = Abbruch, wenn IO-Adressen-Bereichsberschreitung 34 = Abbruch, da an der angegebenen Adresse keine [o] 8250-Schnittstelle anliegt [x] = Die angekreuzten Return-Codes stellen eigentlich keine Fehler- F„lle dar, sondern F„lle, in denen die angew„hlte Aktion normal ausgefhrt wurde. Trotzdem schien es mir sinnvoll, sie zu unter- scheiden von Return-Code 0, da man anhand dieser Codes evtl. noch etwas besonders erkennen kann. [o] = Sollte dieser Fehler in einer Programmversion vor 2.8 aufgetreten sein, so kann dies auch an einer seltenen Reset-Konstellation des Bausteins liegen, die insbesondere bei PC/XTs vereinzelt auftrat. Tritt der Fehler jedoch mit dieser Version immer noch auf, so liegt an der Adresse garantiert keine normale 8250-Schnittstelle: Entweder ist dort eine andere Hardware, oder ein extrem unblicher Schnittstellenbaustein oder der Baustein ist defekt. Im zweiten Fall w„re es sehr nett, wenn Sie mit eine genaue Baustein-Beschreibung und/oder eine DETAILED REGISTER Ausgabe von ACOM zuschicken k”nnte. --------------------------------------------------------------------------- IX. Glossar: ============ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Adapter = hier: Schnittstellenkarte Baud = hier: Bit/Sekunde, Abkrzung: Bd BI = Break Interrupt, Abbruchunterbrechung, LSR Bit4 CTS = Clear To Send, Bereit zum Senden, MSR Bit4 DCD = Data Carrier Detect, Empfangsleitungssignal- Erkennung, MSR Bit7 DCTS = Delta CTS, bei Žnderung von CTS, MSR Bit0 DDCD = Delta DCD, bei Žnderung von DCD, MSR Bit3 DDSR = Delta DSR, bei Žnderung von DSR, MSR Bit1 DLAB = Divisor Latch Access Bit, Teilungssignalspeicher- Zugriffsbit, LCR Bit7 = Register-Umschaltung DLL = Divisor Latch Lowest, Baudrate_LS-Register (DLAB=1) DLM = Divisor Latch Most, Baudrate_MS-Register (DLAB=1) DOS-Equipment = BIOS-Data; BIOS-Datenbereich u.„. DOS-Schnittstelle = Schnittstelle COM1 bis COM4, logische Abbildung der physikalischen Schnittstellen fr Anwendung DR = Data Ready, Daten Bereit, LSR Bit0 DRLSD = DDCD, Žnderung von RLSD DSR = Data Set Ready, Datenendger„t-Bereit-Signal, (Eingang), MSR Bit5 DTR, DTA = Data Terminal Ready, Datenendger„t-Bereit-Ausgabe, (Ausgang), MCR Bit0 EDSSI = Enable Modem Status Interrupt, Modemstatus-Unterbrechung, IER Bit3 ELSI = Enable Receiver Line Status Interrupt, Empfangsleitungsstatus-Unterbrechung, IER Bit2 EPS = Even Parity Select, LCR Bit4 ERBFI = Enable Received Data Available Interrupt, 'Daten-verfgbar'-Unterbrechung, IER Bit0 ETBEI = Enable Transmitter Holding Register Empty Int, 'Sendehalteregister-leer'-Unterbrechung, IER Bit1 FE = Framing Error, šbertragungsrahmen-Fehler, LSR Bit3 IER = Interrupt-Enable-Register (DLAB=0), Unterbrechungsanhangregister IIR = Interrupt-Identification-Register (RO), Unterbrechungs-Erkennungs-Register Interrupt, INT = Unterbrechung des normalen Ablaufs und Abarbeitung einer spezielle Routine als Antwort auf ein beson- deres Hardware- oder Software-'Ereignis'; wird vom sog. Interrupt-Controller gesteuert. IO-Adreábereich = 64 kByte groáer Speicherbereich im PC, der ber spezielle Befehle angesprochen wird und quasi neben dem normalen Hauptspeicher (RAM/ROM) des Rechners liegt. In diesem Bereich befinden sich u. a. die Register der Schnittstellen-Bausteine (seriell und parallel, GAME-Port, usw.) IRQ = Interrupt Request, Hardware-Interrupt, INTRPT LCR = Line Control Register, Leitungs-Steuer-Register Loop = Testrckschleife, interne Kurzschluábrcke zwischen Ein- und Ausg„ngen des 8250-Bausteins fr Diagnose LSR = Line Status Register, Leitungs-Status-Register MCR = Modem Control Register, Modem-Steuer-Register MSR = Modem Status Register, Modem-Status-Register OE = hier: Overrun Error, šberlauffehler, LSR Bit1 Parit„tsbit = Prfbit, daá je nach Modus G U K das Vorkommen der Daten- u. Stoppbits fr Fehlererkennung beschreibt PE = hier: Parity Error, Parit„tsfehler, LSR Bit2 PEN = hier: Parity Enable, Parit„t gesetzt, LCR Bit3 Port = 'Hafen', Registeradresse im IO-Adressen-Bereich i. allg. Schnittstelle nach auáen (IO = In/Out) RBR = Receiver Buffer Register, Empfangspufferregister (RO) (DLAB=0) RI = Ring Indicator, Ringanzeiger, Klingel, MSR Bit6 RLSD = Receiver Line Signal Detect, DCD RTS = Request To Send, Sende-Anforderung, MCR Bit1 SCR = Scratch-Register Serielle Schnittstelle = Asynchrone Schnittstelle, 8250-Schnittstelle SIO = Serial Input Output STB = Number of Stop Bits, Stoppbit-Anzahl-Bit, LCR Bit2 Stoppbits = Pause zwischen den Daten- (und Parit„ts-)bits zur Synchronisation bei der asynchronen šbertragung Swappen = Vertauschen TEMT = Transmitter Empty, TX Schieberegister leer, LSR Bit6 TERI = Trailing Edge RI, pos. Flanke von RI, MSR Bit2 THR = Transmit Holding Register, Senderhalteregister (WO) (DLAB=0) THRE = Transmitter Holding Register, THR leer, LSR Bit 5 TSRE = TEMT UART = Universal Asychron Receiver Transmitter WLS0, WLS1 = Word Length Select Bits 0 und 1, Datenwortl„nge, LCR Bit's 0, 1 8250, 16450 = Programmierbarer IC, der die Funktionen der serielle Schnittstelle beinhaltet, UART, SIO, o.„. Senderausgabe und Empf„ngereingabe: ÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ Sendedaten-³Start-³D0³D1³D2³D3³D4³D5³D6³D7³Parit„ts-³ Stopp- ³ ebene ³ bit ³ ³ ³ ³ ³ ³ ³ ³ ³ bit ³ bits ³ ÀÄÄÄÄÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄ Bitl„ngen: 1 1 1 1 1 1 1 1 1 1 1, 1«, 2 ---------------------------------------------------------------------------