----------------------------------------------------------
        Peter Ingo in c't 2/88
        ----------------------------------------------------------
        BEFEHLSSATZ HAYES-KOMPATIBLER MODEMS
        ------------------------------------
        Auf dem deutschen Markt gibt es eine Unmenge von Programmen, die den
        sog. HAYES-Standard bei Modems untersttzen. In erster Linie sind
        dies integrierte Softwarepakete wie Symphony, FrameWork, Open
        Access, um hier nur einige Namen zu nennen. Auch der absolute Renner
        unter den Utilities, n„mlich Borlands SideKick hat eine integrierte
        Modemfunktion, die nach diesem Standard arbeitet. In den jeweiligen
        Bedienungsanleitungen befindet sich meist der Hinweis, daá die
        Modemfunktionen nur mit einem Hayes-kompatiblen Modem m”glich seien
        und dieser Modemtyp in Deutschland 'noch' nicht erlaubt sei. Diese
        Kartei beschreibt also nur, was dem deutschen Anwender entgeht. Der
        Leser kann dann selbst ber Sinn und Unsinn der deutschen
        Postbestimmungen nachdenken.
        .
        Der Begriff HAYES ist schnell erkl„rt. Es handelt sich dabei um
        einen amerikanischen Modemhersteller, dessen 'Smartmodem'
        mittlerweile als das Referenzger„t fr den Hayes-Befehlssatz gilt.
        Es ist heute nahezu undenkbar, daá auf dem internationalen Markt
        ein Modem hergestellt wird, welches nicht diesen De-facto-Standard
        erfllt. Žhnliche Verh„ltnisse kennt man von der Centronics-
        Schnittstelle fr Drucker.
        .
        Das der Hayes-Befehlssatz ein Industriestandard wurde, hat seine
        Ursache in dem einfachen Konzept, das hinter der Modemansteuerung
        steht. V”llig rechnerunabh„ngig reagiert das Modem auf einfache
        ASCII-Zeichen, die ber die serielle Schnittstelle an das Modem
        gelangen. Das Modem verfgt intern ber einen Prozessor, der diese
        Zeichen in Befehle umwandelt. So lassen sich auf einfachste Art
        Kommunikationsprogramme schreiben. Ein wesentlicher Grund fr die
        Etablierung des Standards ist die F„higkeit des Modems, sich
        selbstst„ndig auf die Parameter eines Anrufers einstellen zu
        k”nnen.
        .
        .
        VORBILD USA
        -----------
        Das typische Modem in den USA ist heute ein 2400-Baud-Hayes-Modem.
        Dieses Modem kann aber nicht nur mit 2400 Baud arbeiten, sondern
        auch mit 300, 600 und 1200 Baud. Dazu kommen noch verschiedene
        Normen, n„mlich die amerikanische Bell und die europ„ische CCITT-
        Norm. Diesem 'intelligenten' Modem ist es v”llig egal, welche
        Baudrate und Norm ein Anrufer benutzt; es stellt immer eine
        Verbindung her. Vor diesem Hintergrund wird auch verst„ndlich,
        warum es in den USA kaum einen Soft- und Hardwarehersteller gibt,
        der fr seine Kunden keinen On-line-Service bereith„lt. Es reichen
        ja eine Telefonleitung und ein Modem, um jeden Anrufer zu
        befriedigen.
        .
        Hayes-Modems reagieren auf ASCII-Zeichen, also lassen sie sich mit
        den einfachsten Terminalprogrammen ansprechen. Ein schlichter Kermit
        reicht aus, um mit jeder Mailbox zu kommunizieren. Bevor eine
        Verbindung aufgebaut wird, muá man dem Modem ber einige Befehle
        mitteilen, was zu tun ist. Jedem Befehl geht ein 'AT' voraus, das
        'Attention' bedeutet und das Modem veranlasst, den direkt
        nachfolgenden Befehl entgegenzunehmen und sich auf die jeweilige
        Baudrate und Parit„t der seriellen Schnittstelle einzustellen.
        Nachfolgend sind kurz die wichtigsten Befehle beschrieben:
                      .
        'D'-DIAL      Das Modem w„hlt eine Nummer. Dabei gibt es zwei
                      Spielarten: 'DP' Pulse-Dialing (in Europa blich)
                      'DT' Touch-Tone-Dialing (in den USA blich).
                      Beide W„hlarten k”nnen auch gemischt werden, wenn
                      zum Beispiel eine private Nebenstallenanlage intern
                      mit Touch-Tone und extern mit Pulse-Dialing arbeitet.
                      'ATDT0,P01188' wrde beispielsweise mit Touch-Tone
                      eine Null w„hlen (Amtsleitung anfordern), kurz warten
                      und danach mit Pulse-Dialing die Fernsprechauskunft
                      anrufen. Allein diese Befehle reichen vollst„ndig
                      fr SideKicks Modemfunktion aus.
                      .
        'A/'-WIEDERHOLUNG  Das Modem wiederholt die letzte Funktion.
                      H„ufigste Anwendung ist, die letzte Nummer noch
                      einmal zu w„hlen.
                      .
        'H0'-AUFLEGEN Die Verbindung wird abgebrochen, der H”rer
                      'aufgelegt'.
                      .
        'H1'-ABHEBEN  Der H”rer wird 'abgehoben', die Leitung erscheint
                      nach auáen hin als besetzt.
                      .
        'A'-ANTWORTEN Das Modem sendet einen 'Antwortton' aus. Es versucht
                      eine Verbindung aufzubauen, ohne vorher zu w„hlen.
                      Nach diesem Befehl befindet man sich nicht mehr im
                      Befehlsmodus, den erreicht man erst wieder ber die
                      'Escape'-Sequenz.
                      .
        'S0=<n>'-AUTOMATISCH ANTWORTEN Dieser Befehl schaltet den
                      Automatisch-antworten-Modus ein und aus. Bei n=0
                      antwortet das Modem nicht auf ankommende Anrufe, jede
                      andere Zahl zwischen 1 und 255 legt fest, beim
                      wievielten Klingeln das Modem 'abhebt' und antwortet.
                      .
        '+++'-ESCAPE  Nachdem man eine Verbindung aufgebaut hat, befindet
                      sich das Modem nicht mehr im Befehlsmodus, d.h., alle
                      Zeichen, die man an das Modem schickt, leitet dieses
                      ins Telefonnetz weiter. Empf„ngt es jedoch nach einer
                      Sekunde Pause die drei Pluszeichen und danach wiederum
                      kein Zeichen, schaltet es sofort in den Befehlsmodus
                      zurck, und man kann wieder mit 'AT'Parameter „ndern
                      oder einfach den H”rer 'auflegen'.
                      .
        Neben diesen wichtigsten Befehlen kann man ber eine
        Feineinstellung der Parameter das Modem an alle Spielarten der
        Datenfernbertragung anpassen. Alle Modems namhafter Hersteller
        arbeiten zuverl„ssig mit den Ger„ten der Deutschen Bundespost
        (etwa bei Datex-P) zusammen.
        .
        RUECKMELDUNGEN
        --------------
        Auf jeden Befehl antwortet das Modem ber die Schnittstelle zum
        Rechner. Das reicht vom einfachen 'OK' ber eine Stausausgabe aller
        eingestellten Parameter bis zur Feststellung, daá eine 'VOICE'
        aufder anderen Seite erkannt wurde. Letzteres ist allerdings nur im
        amerikanischen Netz m”glich. Im deutschen netz funktionieren
        zuverl„ssig nur 'CONNECT' und 'NO CARRIER' allein mit 'NO
        CARRIER' l„át sich aber schon eine Menge machen. Antwortet das
        Modem nach einem W„hlkommando 'ATDP<Nummer>' mit 'NO CARRIER', so
        drfte feststehen, daá die andere Seite besetzt ist oder niemand
        abgehoben hat. Jetzt kann ein Terminalprogramm selbstst„ndig noch
        einmal w„hlen. Solche fr 'dumme'Modems schon recht komplexe
        Funktionen kann man ohne groáen Aufwand mit einigen Zeilen Turbo-
        Pascal realisieren.
        -                                                        -
        -                                                        -
        ----------------------------------------------------------
        ALLGEMEINE MODEM-BEFEHLE
        ----------------------------------------------------------
        Modus-Umschaltung und Wiederholung
        ----------------------------------------------------------
        AT  Beginn eines Hayes-Befehles
        +++ Zurck in den Kommandomodus. Vor und nach diesem
            Befehl muá eine Sekunde gewartet werden.
        A/  Automatische Wiederholung des letzten Befehls
        ----------------------------------------------------------
        W„hlen
        ----------------------------------------------------------
        D   W„hlen
            Ziffern: 0-9
            Symbole: # und *
            Befehle: P Pulse-Dialing (Europa)
                     T Touch-Tone-Dialing (USA)
                     , W„hlpause, 2 Sekunden
                     / W„hlpause, 125 ms
                     ; Nach dem W„hlen in den Befehlsmodus
                     R Ein Originate-Modem anrufen
        ----------------------------------------------------------
        Antworten
        ----------------------------------------------------------
        A   Beantworten eines Anrufes ohne zu w„hlen
        ----------------------------------------------------------
        Modem-Befehle
        ----------------------------------------------------------
        B   B0 CCITT V.21, V.22 (Europa)
            B1 BELL 103/212A    (USA)
        C   C0 Carrier-Signal aus
            C1 Carrier-Signal an
        E   E0 Echo aus
            E1 Echo an
        F   F0 Halb-Duplex
            F1 Voll-Duplex
        H   H0 Modem legt auf
            H1 Modem hebt ab
        I   I0 Ausgabe des Produktcodes
            I1 Ausgabe der Firmware-Version
            I2 Selbsttestfunktion
        M   M0 Lautsprecher aus
            M1 Lautsprecher an bis zum Carrier
            M2 Lautsprecher immer an
        O      Zurck in den On-line-Modus
        Q   Q0 Sende Modem-Antwort an Rechner
            Q1 Keine Atworten senden
        Sr?    Zeige Wert in Register r
        Sr=n   Setze Register r auf n
        V   V0 Numerische antworten
            V1 Ausgeschriebene Antworten
        X   X0 Grundantworten (OK und CONNECT)
            X1 Antworten (CONNECT <Baudrate>)
            X2 Erkenne NO DIALTONE
            X3 Erkenne BUSY
            X4 Erkenne NO DIALTONE und BUSY
        Z      Software-Reset
        ----------------------------------------------------------
        REGISTER-FUNKTIONEN
        ----------------------------------------------------------
        W„hlen
        ----------------------------------------------------------
        S6     Warte auf Freizeichen
               Parameter: 2-255 Sekunden
        S8     Pausenzeiten fr ein Komma
               Parameter: 0-255 Sekunden
        ----------------------------------------------------------
        Antworten
        ----------------------------------------------------------
        S0     Anzahl der Klingelzeichen vor dem Abheben
               Parameter: 0-255
        S1     Z„hler fr die Klingelzeichen
               Parameter: 0-255
        ----------------------------------------------------------
        W„hlen und Antworten
        ----------------------------------------------------------
        S7     Wartezeit auf einen Carrier nach Wahl oder Antwort
               Parameter:  1-255 Sekunden
        S9     Carrier-Erkennungszeit
               Parameter:  1-255 (in 1/10 Sekunden)
        S10    Wartezeit zwischen Carrier-Ausfall und dem Auflegen
               Parameter:  1-255 (in 1/10 Sekunden)
        ----------------------------------------------------------
        Zeichen-Definition
        ----------------------------------------------------------
        S2     ESCAPE-Zeichen
               Parameter: 1-127 (ASCII)
        S3     RETURN-Zeichen
               Parameter: 1-127 (ASCII)
        S4     LINE-FEED-Zeichen
               Parameter: 1-127 (ASCII)
        S5     BACKSPACE-Zeichen
               Parameter: 1-32 oder 127 (ASCII)
        ----------------------------------------------------------
        Spezial-Befehle
        ----------------------------------------------------------
        S12    Wartezeit auf ein ESCAPE-Zeichen
               Parameter: 1-255 (in 1/50ekunden)
        S16    Selbsttest des Modems
               Parameter: 0-2
        ----------------------------------------------------------