HSMODEM1.PRG
============


HSMODEM1 ist ein Software-Beschleuniger und Patch fr die serielle
Schnittstelle Modem1 der Atari-Computer. Es beseitigt nicht nur den auch im
TOS2.06/3.06 noch vorhandenen RTS/CTS-Handshakefehler, sondern erhht durch
seine optimierten Routinen die mgliche bertragungsrate wesentlich.
Auerdem wird der XBIOS-Iorec-Fehler des TOS2.05 beseitigt. Sptestens wenn
Fragen auftreten sollte man diesen Text komplett lesen und erst danach
seiner Umwelt oder mir die verbliebenen Fragen stellen. Bei Updates und
Zeitmangel zuerst einen Blick nach ganz hinten, Abschnitt "Versionen"!


Copyright
---------
Ich gestatte die bersetzung dieser Dokumentation in andere Sprachen. Der
bersetzer hat seine Ttigkeit entsprechend zu vermerken. Das deutsche
Original mu weiterhin beigelegt sein. Die im Folgenden genannten
Bedingungen gelten auch fr die bersetzung.

HSMODEM1 darf, aber immer nur zusammen mit diesem Text, zu nicht
kommerziellen Zwecken frei kopiert werden. Die Verbreitung auf PD-Disketten
zu blichen Preisen ist zulssig. Ein Beipack zu Programmen ist ohne meine
Zustimmung nur zulssig, wenn diese PD oder Shareware mit einer maximalen
Registrierungsgebhr von 100DM sind. Jede Verbreitung zusammen mit
kommerziellen Programmen oder sonstige kommerzielle Verwertung,
ausgeschlossen jedoch die Anwendung (Programm starten), ist nur mit meiner
ausdrcklichen Genehmigung (mglicherweise gegen Gebhr) gestattet.

Interessenten knnen mglicherweise den Quelltext von mir erhalten. Das ist
nicht ganz kostenlos, aber auch fr Hobbyisten bezahlbar.

Ich mag es nicht, an dieser Stelle zu schreiben: "Sollten Sie das Programm
lnger als 3 Wochen (Testzeit) benutzen, so wird eine Registrierungsgebhr
in Hhe von xxxx fllig." Allerdings freue ich mich ber kleine Spenden
(5DM und aufwrts) entweder an meine Postadresse oder auf mein Konto (bitte
Absender mit angeben). Ein kleiner Denkansto: Es ist nicht so, da ich
wild drauflos auf immer und ewig fr die Allgemeinheit billig arbeite.
Ich bin Student und mu nicht nur mein Hobby selbst finanzieren. Je mehr
ich an kommerziellen Auftragsarbeiten oder sonstigen finanziell
eintrglichen Dingen arbeite(n mu), desto weniger Zeit bleibt fr Projekte
dieser Art.

Die Betatester und ich haben dieses Programm sorgfltig berprft. Ich
hafte in keiner Weise fr:
- Fehler und/oder (daraus resultierende) Beschdigungen irgendwelcher
Objekte, Subjekte oder Werte.
- irgendwelche Auswirkungen des Einsatzes oder Nichteinsatzes dieses
Programmes und dieser Dokumentation

Fehlermeldungen oder Verbesserungsvorschlge nehme ich gern an. Ich hasse
allerdings unangemeldetes Auftauchen mir nicht persnlich bekannter
Personen sowie Telefonanrufe zu MICH strenden Zeiten. Es gibt schlielich
Email und die (gute) alte Post.

Ich bin im Mausnetz unter
Harun Scheutzow @B
zu erreichen. Meine Postanschrift lautet:
Harun Scheutzow
Dresdener Strae 83
O-1020 Berlin

Meine Bankverbindung:
Kontoinhaber: Harun Scheutzow
Kontonummer:  581854107
Bankleitzahl: 10010010
Bank:         Postgiroamt Berlin

An dieser Stelle mchte ich allen danken, die mich bei der Entwicklung
dieses Programms untersttzt haben. Diese Untersttzung geht manchmal ganz
schn auf die Telefonrechnung!


Einsatzmglichkeiten, Voraussetzungen, u.v.m.
------------------------------------------------
HSMODEM1 soll unter allen TOS-Versionen auf ATARI ST, STE, MegaST, MegaSTE
und TT laufen. Es luft NICHT auf dem Falcon. Deshalb ist alles Folgende
nur fr die Computer gltig, auf denen HSMODEM1 lauffhig ist. Je nach
TOS-Version integriert es sich unterschiedlich in das System. Dabei werden
nur dokumentierte Eigenschaften des TOS genutzt, obwohl das nicht einfach
war.

Es luft auch mit MinT und sollte vor MinT im Auto-Ordner stehen. Dann
mte MinT die HSMODEM1-Routinen fr einen blockweisen Datentransfer nutzen
knnen. Ein nachtrgliches Starten unter MinT funktioniert wohl auch und
bringt eventuell hhere Datenraten. (Ich arbeite nicht mit MinT.)

HSMODEM1 ist ein Ersatz fr andere Modem1-Patches fr Modem1, wie z.B.
RS232ENC oder TURBOCTS.

Die Schnittstelle Modem1 kann ohne Zusatzhardware maximal 19200Bd
erreichen. Daran ndert auch HSMODEM1 nichts. HSMODEM1 ersetzt aber die
langsamen und zum Teil fehlerhaften Routinen des TOS durch schnelle und
hoffentlich fehlerfreie. Mit Zusatzhardware, wie (dem von mir entwickelten)
RSVE, RSSpeed oder anderen knnen hhere Datenraten realisiert werden. Z.B.
erlaubt RSVE auch die Einstellung von 38400, 57600 und 115200Bd. HSMODEM1
sorgt dann im Rahmen der Hardware-Mglichkeiten fr einen wesentlich
hheren Datendurchsatz (cps-Rate).

Wenn jemand meint, nur mit Software auf Modem1 mehr als 19200Bd zu
erreichen: Ohne Zusatzhardware knnen hhere Datenraten im Synchronbetrieb
des MFP erreicht werden. Dabei ist eine fehlerfreie Funktion aber
ausschlielich beim Senden mglich, und es wird kaum einer auf den Empfang
verzichten wollen.

Ich arbeite (immer noch) mit einem 8MHz ST, ohne CPU-Beschleuniger. Ich
halte wenig davon, immer neue und schnellere Computer zu kaufen und diese
durch lahme Software bis zum Stillstand zu bremsen. Das TOS ist eine lahme
Software, kein Wunder, es ist inklusive der Interruptroutinen in C
programmiert (es sieht so aus). Meine persnliche Meinung ber die
TOS-Programmierer (Eric Smith ausgenommen) hat die (Selbst)Zensur an dieser
Stelle gelscht.


TOS2.05-Fehler
--------------
Die XBIOS-Funktion 14, Iorec ist im TOS2.05 fehlerhaft (in 2.06, 3.05 und
3.06 ist sie definitiv in Ordnung). Sie liefert unabhngig von der
Einstellung ber Bconmap bei der Abfrage der IOREC-Strukturadresse fr AUX
(Nummer 0) immer die Adresse des Modem1-IOREC. Das fhrte mit frheren
HSMODEM1.PRGs zu schlechten cps-Raten und anderen Unannehmlickeiten. Jetzt
beseitigt HSMODEM1 auch dieses Problem, da es bei TOS2.05 die jeweils
passende IOREC-Adresse selbst liefert.


Wie schnell geht es?
--------------------
Das Problem bei einer seriellen bertragung mit einer bestimmten
Geschwindigkeit (hier in Baud angegeben) ist nicht das Senden der Zeichen,
sondern deren Empfang. Der MFP puffert nur ein empfangenes Zeichen und
meldet es der CPU per Interrupt. Die CPU mu dieses Zeichen fr eine
fehlerfreie bertragung aus dem MFP abholen, bevor er das nchste Zeichen
komplett empfangen hat. Wenn ich sage, der Betrieb bei ... ist zuverlssig,
so bedeutet dies, da die CPU bei der maximal mglichen
Empfangs-Zeichendichte (keine Pause zwischen Stoppbit des vorigen und
Startbit des folgenden Zeichens) jedes Zeichen rechtzeitig abholt.

Ein 8MHz ST (RSVE eingebaut) kann mit TOS und HSMODEM1 eine fehlerfreie
Datenbertragung mit 38400Bd realisieren. Eine fehlerfreie Datenbertragung
mit 57600Bd ist ebenfalls mglich, aber nicht mit dem originalen TOS.
Andere Interruptroutinen des TOS sind so unintelligent ausgelegt, da sie
den zuverlssigen Betrieb mit 57600Bd verhindern. Auch auf MegaSTEs ist
57600Bd nicht immer zuverlssig. Siehe auch nchsten Abschnitt.

Derzeit erreicht ein 8MHz ST mit GSZRZ Version 3.3 von Michael Ziegler bei
einer ZMODEM-bertragung und 38400Bd mehr als 3600cps, wenn NVDI
installiert und der Blitter ausgeschaltet ist. Ohne NVDI sind es etwa
300cps weniger, da GSZRZ lange an seiner Dialogbox zeichnen lt. Den
Blitter kann man in den meisten Fllen auch zugeschaltet lassen. Sollten
aber Empfangsfehler auftreten, dann den Blitter abschalten. ZMODEM-Senden
bei 57600Bd erreicht mehr als 5000cps.

Die angegebenen Datenraten gelten fr direkte Rechnerkopplung. Fr langsame
Modems und schlechte Telefonleitungen ist HSMODEM1 nicht verantwortlich!
Zyxels knnen bei 16800zyx/v42bis und ASCII-Texten 3800cps erreichen,
Zyxel+ bei 19200zyx noch mehr. Andere 14400/v42bis-Modems liegen bei etwa
3300cps.


Das Konfigurationsfile
----------------------
Auf Wunsch einiger Nutzer kann HSMODEM1 nun Baudraten umlegen. Dies ist nur
zusammen mit RSVE oder RS-Speed ntzlich. So kann man die Einschaltung von
38400Bd, die frher durch Einstellen von 110Bd erfolgte, auf das Einstellen
von 19200Bd zu legen. Damit ermglicht man einigen alten Programmen die
Arbeit mit mehr als 19200Bd.

Das Konfigurationsfile ist ein reiner ASCII-Text, der mit einem Texteditor
bearbeitet werden kann / mu. Es werden bei Updates mglicherweise neue
Parameter hinzukommen und Einschrnkungen der Syntax aufgehoben.

Das File heit HSMODEM1.INF und wird beim Start des Programms zuerst im
aktuellen Verzeichnis gesucht. Wenn HSMODEM1.PRG im AUTO-Ordner liegt, wird
also im Wurzelverzeichnis des Bootlaufwerkes (meist "C:\" oder "A:\")
gesucht. Ist es dort nicht, wird noch in "\AUTO\" gesucht, also im
AUTO-Ordner des aktuellen Laufwerkes (sollte das Bootlaufwerk sein). Ohne
HSMODEM1.INF bleiben die Standardeinstellungen gltig, werden also keine
Baudraten umgelegt. Wird HSMODEM1.INF gefunden, so erfolgt eine
entsprechende Meldung.

Die bisher einzige Zeile in HSMODEM1.INF hat folgende Syntax:
SPEED MODEM1 alte:neue{ alte:neue}{ alte:neue}

Angaben in {} sind optional. Die Groschreibung ist wichtig! Es drfen
keine Leerzeichen hinzugefgt oder weggelassen werden. Tritt bei der
Abarbeitung der HSMODEM1.INF ein Fehler auf, wird die Bearbeitung sofort
abgebrochen. Es sind dann die bis dahin gelesenen Einstellungen gltig, der
Rest sind die Standardwerte.

alte ist die Baudrate, die zum Einschalten der hheren Baudrate benutzt
werden soll. Zulssig sind alle TOS-Standardbaudraten, also 19200, 9600,
4800, 3600, 2400, 2000, 1800, 1200, 600, 300, 200, 150, 134, 110, 75, 50.

neue ist die gewnschte hhere Baudrate, die ebenfalls exakt angegeben
werden mu. Zulssig sind 115200, 57600, 38400.

Folgendes HSMODEM1.INF wrde bei Einsatz eines RSVE oder RS-Speed bei einer
Einstellung von 19200Bd stattdessen 38400Bd einschalten:
SPEED MODEM1 19200:38400


Zuknftiges
-----------
Die TOS-Interruptroutinen sind fr fehlerfreien 57600Bd-Betrieb auf
8MHz-STs zu doof und langsam. Dies bezieht sich auf das ganze
Interruptroutinensystem. Ich arbeite an neuen Interruptroutinen, die dieses
Problem beseitigen werden. Dies sind NICHT neue serielle Routinen (die hier
enthaltenen sind schnell genug), sondern z.B. neue Tastaturroutinen.

Eine blockorientierte Datenbergabe, kompatibel zu Mint/Multitos, befindet
sich ebenfalls in der Entwicklung. Damit mten mit einem neuen GSZRZ
mindestens 5400cps beim Senden UND Empfangen (57000Bd seriell) mglich
sein. Empfang natrlich nur, wenn die eben erwhnten neuen TOS-Interrupts
fertig sind.

Es geht auch noch ein bichen schneller, aber ich will nur gut getestete
Versionen verffentlichen.

Eventuell wird es ein Programm geben, da alle Schnittstellen des
MegaSTE/TT untersttzt, mglicherweise in Zusammenarbeit mit anderen
Programmierern.

Es wird wahrscheinlich einen TOS2.06-EPROM-Patch geben, der HSMODEM1 direkt
in das TOS2.06 integriert.

Intelligente und schnelle (Interrupt)routinen kommen bei einer
Multitaskumgebung der ganzen Systemleistung zugute, so da nicht
auszuschlieen ist, da auch mal Tastendrcken, Mausbewegen und 38400Bd
ZMODEM-bertragung gleichzeitig fehlerfrei mglich sind.


Mgliche Probleme
-----------------
Lange DMA-Zugriffe knnen beim Empfang zu Datenverlusten fhren. Ebenfalls
kritisch sind lange Verweilzeiten der CPU in einem Interruptpriorittslevel
grer als 5.

Auf 8MHz STs: Finger weg von Maus und Tastatur, whrend GSZRZ empfngt.
Sonst gibt es ein paar bertragungsfehler.

Abspeichern empfangener Daten unter GSZRZ whrend des Empfangs soll laut
Berichten eines Testers nicht zu Fehlern fhren.

Man kann den Blitter so programmieren, da er die CPU zu lange blockiert.
Das TOS und NVDI tun dies anscheinend nicht.

Es gibt einige ACCs und residente (AUTO-Ordner-)Programme, die irgendwelche
Interrupts umlegen und das System zu lange blockieren. Im Zweifelsfalle
einzeln rauswerfen und testen.

Ein Problemprogramm ist leider DCF_TIME von Ralf Zimmermann @WI2. Der Autor
kennt das Problem und die Lsung dazu. Ab Version 1.2 (wird bald kommen)
sollte es behoben sein. Pnktlich zu jeder Minutenkennung ist es zu lange
in der Interruptroutine (IPL6) und es gibt bei 38400Bd einen Empfangsfehler.


Funktion des HSMODEM1 (fr Interessenten)
-----------------------------------------
Seine Geschwindigkeit erreicht es durch optimierte Interruptroutinen und
durch das zustzliche direkte Einklinken in den BIOS-Trap. Deshalb sollte
es mglichst spt im AUTO-Ordner gestartet werden, aber noch vor allen
Programmen, die Modem1 benutzen. Es mu hinter Programmen stehen, die die
XBIOS-Funktion Bconmap umlenken oder die Anzahl der per Bconmap verfgbaren
Kanle ndern (gibt es sowas schon?).

Handshake
HSMODEM1 beherrscht alle drei Arten, die das TOS knnen sollte: KEIN
Handshake, XON/XOFF-Softwarehandshake, RTS/CTS-Hardwarehandshake. Achtung:
Die Angabe "BEIDES" als Handshakeparameter bei Rsconf wird vom TOS in
XON/XOFF umgewandelt. Da mir keine sinnvolle Anwendung fr "BEIDES" bekannt
ist, arbeitet HSMODEM1 ebenso.

BIOS-Trap
Direktes Einhngen ist bei TOS1.00 die einzige Mglichkeit, Bconin,
Bconstat, Bconout und Bcostat zu ersetzen. Ab TOS1.02 dient es nur der
Geschwindigkeitssteigerung, denn HSMODEM1 setzt sich auch in die
entsprechenden xco...-Vektoren ein. Wenn das TOS Bconmap untersttzt (ab
TOS2.00), so sitzt HSMODEM1 auch in der MAPTAB. Die Originalroutinen fr
Modem1 werden vollstndig ersetzt. Der BIOS-Kanal 6 ist mit HSMODEM1 unter
allen TOS-Versionen als Modem1 verfgbar. Bei Nutzung von Kanal 1 (AUX)
wird die Einstellung ber Bconmap beachtet.

XBIOS-Trap
Fr TOS ohne Bconmap und fr TOS2.05 wird neues Iorec eingehngt. Wenn TOS
Bconmap untersttzt, wird Bconmap berwacht. Fr TOS ohne Bconmap wird
Rsconf eingehngt, ansonsten hngt das neue Rsconf nur in der MAPTAB. Es
setzt je nach Handshakeart auch die seriellen Interruptvektoren des MFP.

Das Einhngen in den XBIOS- und BIOS-Trap erfolgt per XBRA mit
der Kennung RSVE.

Die fnf fr die serielle Kommunikation wichtigen Interrupts des MFP werden
durch neue Routinen ersetzt. Dabei wird fr jede Handshakeart eine
spezielle Routine benutzt, ein wesentlicher Grund fr die erreichte
Geschwindigkeit.


Praktischer Einsatz
-------------------
HSMODEM1 wird in den AUTO-Ordner kopiert. Dabei sollte es mglichst weit
hinten stehen, aber vor allen Programmen, die Modem1 nutzen. Bei jedem
neuen Booten wird es automatisch geladen. Es belegt dann etwa 2KByte im
RAM. HSMODEM1 kann auch durch Anklicken gestartet werden.


Versionen
---------
Ich vergebe keine Versionsnummern, sondern berlasse die Unterscheidung dem
in der Installationsmeldung ausgegebenen Datum. Ich notiere das Datum in
der deutschen Schreibweise, also Tag.Monat.Jahr.

Neue Versionen sind zuerst in der Maus Berlin, Telefonnummer 030-727056
(meistens besetzt), zu finden und verbreiten sich schnell ber die Muse.
Man sollte nach dem Filenamen "HSMODEM*.*" suchen lassen.

16.03.1993
erste ffentliche Version

05.04.1993
kleiner Fehler in bcostat beseitigt (meldete zu spt, da Puffer voll,
so mute bconout selten doch warten)

11.04.1993
Initialisierung gendert
XBIOS Iorec Fehler des TOS2.05 wird korrigiert
Konfigurationsfileauswertung eingebaut
Rsconf lscht seriellen Pufferinhalt nicht mehr

Harun Scheutzow (SWB), 16.03.1993 und spter
