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. Jetzt mchte ich allen danken, die bereits eine Spende 
geschickt haben.

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
D-10179 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 
(fast) nur dokumentierte Eigenschaften des TOS genutzt, obwohl das nicht 
einfach war. Die Nutzung undokumentierter Eigenschaften ist auf jeden Fall 
abschaltbar.

Mint
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. Siehe 
auch Abschnitt ber das Konfigurationsfile.

Mag!X
Versionen ab 2.00 dieses multitaskfhigen Betriebssystems (es ist im 
Gegensatz zum aktuellen MultiTOS nicht nur ein Aufsatz und wesentlich 
schneller) haben korrekte Routinen zur Modem1-Bedienung. Ein nachtrglich 
gestartetes HSMODEM1 bringt aber noch eine Beschleunigung, da die 
Bco*-Aufrufe vor dem eigentlichen Dispatcher abgefangen werden. Interessant 
ist das Mag!X-Multitasking auf 8MHz-STs bei 38400Bd-Empfang: (auf jeden 
Fall mit einer neuen NVDI-Version) Man kann im Vordergrund mit der Maus 
wirtschaften und einen Text schreiben (getestet mit Everest), whrend im 
Hintergrund GSZRZ 3.5 fehlerfrei empfngt.

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, allein mit Software Modem1 mit mehr als 19200Bd 
betreiben zu knnen: Das geht im Synchronbetrieb des MFP. Dabei ist eine 
fehlerfreie Funktion aber ausschlielich beim Senden mglich, NICHT beim 
Empfang.

Ich arbeite 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). MultiTOS ist eine noch grere Systembremse.


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.


Rufus-Fehler
------------
Mit Rufus 1.11rel9 steht der Rechner nach dem Auflegen einiger 
HighSpeed-Modems (RXD und TXD leuchten beide, nichts geht mehr). RUFUS 
schreibt $00 ins UCR, das fhrt zu obigen Effekten und ist Bldsinn. 
Abhilfe: Rufus 1.20 oder neuer benutzen.


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. Mit einem HSMODEM1 ab dem 
21.05.1993 funktioniert auch der Empfang (Senden sowieso) mit 57600Bd auf 
8MHz STs, solange die Option "FASTINT" nicht abgeschaltet ist.

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-bertragung ber die Filefunktionen bringt mit einem GSZRZ ab 3.5 
mehr als 5400cps bei 57600Bd.

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.


57600Bd auf 8MHz und 16MHz 68000er
----------------------------------
57600Bd ist fr Modem1 auf (Mega)ST(E) die magische Grenze, die 
auch nur mit leichten Modifikationen im TOS erreicht wird. 115200Bd werden 
wohl auch in Zukunft nur im Polling und nicht im Interruptbetrieb mglich 
sein.

Bei mir funktionieren 57600Bd auf einem 8MHz-ST mit TOS2.06. Ich bin mir 
aber nicht sicher, ob es auch mit anderen (lteren) TOS-Versionen 
funktioniert.

Das alternative multitaskfhige Betriebssystem Mag!X ist in Versionen ab 
2.00 57600Bd-freundlich. Siehe Option "NO FASTINT" im folgenden Abschnitt.


Das Konfigurationsfile
----------------------
Das Konfigurationsfile ist ein reiner ASCII-Text, der mit einem Texteditor 
bearbeitet werden sollte. 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 Reihenfolge der Zeilen ist egal. Zeilenende ist das normale crlf 
($0D$0A). Auer in den Befehlen drfen Leerzeichen (keine Tabulatoren) fast 
berall in nahezu beliebiger Anzahl stehen. *.INF darf maximal 1KByte lang 
sein. Angaben in {} sind optional. Die Groschreibung ist wichtig! 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. Es gibt bei an/aus-Optionen immer 
nur einen Befehl, der entweder an oder aus schaltet. Die jeweils andere 
Einstellung ist der Standardwert.

HSMODEM1 kann 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.

Befehle:

SPEED MODEM1 alte:neue{ alte:neue}{ alte:neue}
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.

NO GEMDOS
Es erfolgt kein Einhngen in den GEMDOS-Trap. Dann sind die 
Mint-kompatiblen blockorientierten Funktionen auch nicht verfgbar. Wird 
Mint oder MultiTOS benutzt, sollte "NO GEMDOS" benutzt werden, da sich die 
Mint- und die HSMODEM-Routinen evtl. gegenseitig stren. (Fr 
Experimentierfreudige: HSMODEM1 nach Mint starten, dann knnte es evtl. 
seine Blockroutinen zum Einsatz bringen.)

NO FASTINT
Eigentlich hatte ich erst modifizierte Timer-Interruptroutinen 
geschrieben. Diese mten aber beim Start erst umstndlich an die im 
Rechner vorhandene TOS-Version angepat werden. Es hat sich aber gezeigt, 
da es ausreichend ist, wenn die Routine (GEMDOS-Uhr) in NEXT_TIM 
(negative LineA-Variable) mit einem IPL < 6 aufgerufen wird, um auf 
68000/8MHz den 57600Bd-Empfang zu ermglichen. Also hnge ich ein 
Programmstck ein, da den IPL auf 5 heruntersetzt.

RSVE
Mit dieser Zeile kann man sich das RSVE_SET.PRG im AUTO-Ordner sparen, da 
HSMODEM1 den Cookie RSVE dann selbst anlegt, um das Vorhandensein der 
Hardwareerweiterung RSVE anzuzeigen.

Bei Problemen mit neuen oder alternativen Betriebssystemen sollte man 
zuerst ein "NO FASTINT" ausprobieren.

Mit Mag!X ab Version 2.00 sollte "NO FASTINT" gesetzt werden, da Mag!X 
bereits modifizierte Timerroutinen hat. Wenn HSMODEM1 da noch etwas 
einhngt, wird es ein bichen langsamer.

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


Zuknftiges
-----------
Es geht mglicherweise noch ein bichen (nicht viel) schneller.

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.

Der Mint-hnliche Teil wird noch wesentlich erweitert.


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 ohne Mag!X >2.00 und neues NVDI: Bei mehr als 9600Bd Finger 
weg von Maus und Tastatur, whrend GSZRZ empfngt. Sonst gibt es ein paar 
bertragungsfehler. Genauso knnen ein paar Zeichen verloren gehen, wenn im 
Terminalprogramm gerade ein Text ankommt und der User die Tastatur oder 
Maus bearbeitet.

Abspeichern empfangener Daten unter GSZRZ whrend des Empfangs fhrt bis 
38400Bd meist nicht zu Fehlern.

Man kann den Blitter so programmieren, da er die CPU zu lange blockiert. 
Das TOS und NVDI tun dies anscheinend nicht. Wenn Fehler beim Empfang mit 
>= 38400Bd auftreten, erst mal mit abgeschaltetem Blitter probieren.

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.

MiNT und besonders MultiTOS sind allgemeine Systembremsen, die sich 
besonders auf 8MHz-Rechnern bemerkbar machen. Mag!X finde ich persnlich 
wesentlich besser, da es wesentlich schneller ist.

DCF_TIME von Ralf Zimmermann @WI2 sollte in der Version 1.2 oder hher 
verwendet werden.

QFAX frit sehr viel Rechenzeit und sollte bei Problemen zuerst entfernt 
(nicht nur abgeschaltet) werden.


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 die Traps 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.

GEMDOS-Trap
Hier werden Mint-kompatible Routinen fr die blockorientierte Datenbergabe 
eingehngt. Nach einem Fopen auf "U:\DEV\MODEM1" kann mit Fwrite und Fread 
gearbeitet werden. Siehe Textfile zum RSVF-Cookie "RSVF_COO.TXT"

RSVF-Cookie
Der Cookie wird angelegt, wenn sich das Programm im GEMDOS-Trap installiert 
hat. Siehe Textfile zum RSVF-Cookie "RSVF_COO.TXT". Derzeit wird er nur 
angelegt, wenn in der Cookie-Liste noch mindestens ein Platz frei ist. 
(Diese Beschrnkung wird in Zukunft entfallen.)

etv_timer
Unter allen anderen TOS-Versionen wird erst nach der USER_TIM-Routine, die 
wirklich nicht IPL<6-fest ist, auf IPL 5 geschaltet. So wird die 
GEMDOS-Uhrenroutine in NEXT_TIM aufgerufen. Dies ist nicht 100% sauber, 
damit es strt mte aber ein anderes Programm sehr unsaubere Sachen 
veranstalten.


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 etwas weniger als 
seine Dateilnge 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 "HSMOD*.*" suchen lassen. Das Archiv wird 
HSMOD1xx.LZH heien, wobei xx fr die fortlaufende Verffentlichungsnummer 
und die 1 fr ausschlieliche Modem1-Untersttzung steht (kann sich auch 
mal ndern!).

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
Konfigurationsfile eingebaut
Rsconf lscht seriellen Pufferinhalt nicht mehr

18.04.1993
nun auch im GEMDOS-Trap: Filefunktionen fr U:\DEV\MODEM1 wie bei 
Mint jetzt unter normalem TOS
Syntax im INF-File toleranter

17.05.1993
57600Bd Empfang bei TOS2.06 und 8MHz 68000
Cookie RSVF wird angelegt, falls noch Platz ist, RSVF nicht existiert und 
Filefunktionen installiert werden

21.05.1993
57600Bd Empfang auch ohne TOS2.06 auf 8MHz 68000

10.07.1993
jetzt gebe ich die Version raus, weil GSZRZ 3.5 da ist

17.07.1993
Cookie kann nun auch bei voller Liste angelegt werden, wenn sie nicht zu 
monstermig ist
auch Cookie RSVE kann angelegt werden
Fehler in Fread/Fwrite raus
 
24.07.1993
Fehler bei vollem Cookie ist raus, ergab z.T. mysterisen Mll

Harun Scheutzow (SWB), 16.03.1993 und spter
