Automatische Wiederwahl für DOS

Wenn Sie beim Telefonieren häufig mit besetzten Anschlüssen zu tun haben, was z. B. beim Anrufen von Teilnehmern in Ostblockländern an der Tagesordnung ist war, bringt eine automatische Wiederwahltaste am Telefon schon eine erhebliche Erleichterung. Wirklich nervschonend wird die Prozedur jedoch erst, wenn Sie über ein Modem verfügen und REDIAL.DEB verwenden. Das Programm wählt eine beliebige Telefonnummer, indem es Hayes-kompatible Kommandos an die serielle Schnittstelle sendet und die Nummer in regelmäßigen Abständen automatisch wiederholt. Besitzer von Telefonen mit altertümlichen Wählscheiben können jetzt ihre Finger mit angenehmeren Dingen beschäftigen. Sie brauchen nur Ihre Ohren zu spitzen und auf den internen Lautsprecher des Modems zu lauschen. Hören Sie ein Besetzt-Zeichen, lassen Sie REDIAL weiter gewähren; ansonsten, wenn Sie ein Frei-Zeichen oder gar ein Abheben wahrnehmen, greifen Sie den Telefonhörer und drücken irgendeine Taste am PC. Das Gespräch kann beginnen.

Das Programm konfiguriert die serielle Schnittstelle auf 300 Baud – womit die Anwahl jedes Hayes-kompatiblen Modems funktionieren dürfte – und initialisert anschließend das Modem (»ATZ«). Danach erfolgt eine kurze Pause (zirka 2 Sekunden), bevor das Wähl-Kommando »ATDP« gemeinsam mit der als Parameter übergebenen Telefonnummer und abschließendem Semikolon plus Carriage-Return an das Modem geschickt wird. Das Modem bleibt im sogenannten Kommando-Modus und versucht eigenständig, den Teilnehmer zu erreichen, was Sie am üblichen Rasseln der »Wählscheibe« im Modemlautsprecher erkennen können. Wenn Sie anschließend ein Freizeichen hören, nehmen Sie zuerst (!) den Telefonhörer ab, der bis jetzt unbedingt aufgelegt war, und drücken irgendeine Taste am PC. Dadurch wird die Wahlwiederholung beendet und das Modem erhält mit dem Kommando »ATH0« die Anweisung, die Verbindung zu beenden (»Hang Up«). Da inzwischen aber der Hörer abgehoben ist, geht das Gespräch jetzt vollständig auf das angeschlossene Telefon über und das Modem beginnt zu schweigen. Wenn Sie den Hörer liegen lassen und keine Taste betätigen, wählt REDIAL nach einer variablen Zeit die Telefonnummer von neuem, solange, bis Sie irgendeine Taste drücken. Diese Zeitspanne beträgt pro gewählter Ziffer zirka 4 Sekunden, was sich selbst im internationalen Telefonnetz als günstig erweist. Sollte dieses Intervall dennoch zu kurz sein, was Sie daran erkennen, daß das Modem aufhängt, bevor überhaupt ein Klingelzeichen ertönt, »verlängern« Sie einfach die Nummer durch Leerzeichen. Das Modem wählt diese zwar nicht, jedoch berücksichtigt sie REDIAL bei der Berechnung des »Timeouts«. REDIAL funktioniert standardmäßig mit der ersten seriellen Schnittstelle. Sie können jedoch selbst einige Veränderungen vornehmen. So läßt sich z. B. die verwendete Schnittstelle in der Zeile »MOV DX,0« kurz vor »INT 14« ändern, indem Sie die 0 für COM1 durch 1 für COM2, 2 für COM3 oder 3 für COM4 ersetzen. Sämtliche Modem-Kommandos im letzen Teil des Listings können Sie individuell anpassen, wofür Sie aber über entsprechende Kenntnisse und ein Modem-Handbuch verfügen sollten. Bei Änderungen ist es wichtig, daß jede Textzeile mit der Ziffer 0 beendet wird. Die Kommandos sind in der Reihenfolge ihres Ablaufes aufgeführt – zuerst die Initialisierung des Modems, dann die Einleitung und der Abschluß des Wählkommandos und schließlich die Anweisung zum Auflegen. Dabei darf nach der Einleitung des Wählkommandos »ATDP« nicht wie bei allen anderen Zeilen die hexadezimale Ziffer D (Steuercode für Return) erscheinen, weil REDIAL dort ja während der Ausführung die zu wählende Nummer ohne vorherigen »Wagenrücklauf« einfügen muß. In einigen Nebenstellen-Anlagen findet übrigens das amerikanische Tonwahl-Verfahren Anwendung, weshalb Sie unter Umständen den Befehl für Pulswahl »ATDP« durch »ATDT« ersetzen müssen. Weil sich durch diverse Änderungen die Länge des Programms ändern könnte, haben wir die Größe von REDIAL in der Zeile nach dem RCX-Befehl auf 512 Byte (200h) festgelegt. Da auch kürzeste Programme auf Disketten mindestens 512 Byte, nämlich einen Sektor belegen, spielt die künstliche Vergrößerung keine Rolle.

Name: REDIAL.DEB
Funktion: Wählt wiederholt eine Telefonnummer über ein Hayes- kompatibles Modem.
Übersetzung: DEBUG <REDIAL.DEB
Prüfsumme: 7C99
Anwendung: REDIAL # # = Telefonnummer
Einschränkungen: Hayes- oder kompatibles Modem muß angeschlossen sein. Achtung! Postzulassung für Modems beachten!
F 100 2FF 0
A
MOV BX,[80]         ;100
MOV By[BX+E081],0   ;104
POP ES              ;109
CLD                 ;10A
MOV SI,164          ;10B
MOV AX,43           ;10E
CALL 159            ;111
CALL 13F            ;114
CALL 15E            ;117
PUSH SI             ;11A
MOV SI,81           ;11B
CALL 15E            ;11E
POP SI              ;121
CALL 15E            ;122
MOV DL,[80]         ;125
DEC DL              ;129
JS 10B              ;12B
CALL 13F            ;12D
CALL 13F            ;130
JZ 129              ;133
CALL 15E            ;135
MOV AX,C00          ;138
INT 21              ;13B
INT 20              ;13D
MOV CX,24           ;13F
ES:MOV BX,[46C]     ;142
ES:CMP BX,[46C]     ;147
JZ 147              ;14C
MOV AH,B            ;14E
INT 21              ;150
CMP AL,0            ;152
LOOPZ 142           ;154
RET                 ;156
MOV AH,1            ;157
MOV DX,1            ;159
INT 14              ;15C
LODSB               ;15E
CMP AL,0            ;15F
JNZ 157             ;161
RET                 ;163
DB "ATZ",D,0
DB "ATDP ",0
DB ";",D,0
DB "ATH0",D,0

RCX
200
NREDIAL.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot