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 erh”ht durch seine optimierten Routinen die m”gliche šbertragungsrate wesentlich. Wer diesen Text nicht komplett durchliest, dem ist nicht zu helfen. Es ist keine Schande, etwas nicht zu verstehen, denn ich lasse mich ber einiges aus, was fr den nur-Anwender unwichtig ist, habe aber heute keine Lust, alles zu sortieren (erledige ich sp„ter mal). Copyright --------- Ich gestatte die šbersetzung dieser Dokumentation in andere Sprachen. Der šbersetzer hat seine T„tigkeit 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 ist ebenfalls zul„ssig, solange eine Disk mit HSMODEM1 nicht mehr als andere PD-Disketten des Anbieters kostet. Ein Beipack zu Programmen ist nur zul„ssig, wenn diese PD oder Shareware mit einer maximalen Registrierungsgebhr von 50DM sind. Jede Verbreitung zusammen mit kommerziellen Programmen oder sonstige kommerzielle Verwertung, ausgeschlossen jedoch die bliche Anwendung (Programm starten), ist nur mit meiner ausdrcklichen Genehmigung (m”glicherweise gegen Gebhr) gestattet. Interessenten k”nnen m”glicherweise 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 l„nger als 3 Wochen (Testzeit) benutzen, so wird eine Registrierungsgebhr in H”he von xxxx f„llig." Allerdings freue ich mich ber kleine Spenden (5DM und aufw„rts) 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 eintr„glichen Dingen arbeite(n muž), desto weniger Zeit bleibt fr Projekte dieser Art. Ich und die Betatester haben dieses Programm sorgf„ltig berprft. Ich hafte in keiner Weise fr eventuelle Fehler und/oder (daraus resultierende) Besch„digungen irgendwelcher Objekte, Subjekte oder Werte. Fehlermeldungen oder Verbesserungsvorschl„ge nehme ich gern an. Ich hasse allerdings unangemeldetes Auftauchen mir nicht pers”nlich bekannter Personen sowie Telefonanrufe zu MICH st”renden Zeiten. Es gibt schliežlich Email und die (in letzer Zeit sogar wieder gute) alte Post. Ich bin im Mausnetz unter Harun Scheutzow @B zu erreichen. Meine Postanschrift lautet: Harun Scheutzow Dresdener Straže 83 O-1020 Berlin Meine Bankverbindung: Kontoinhaber: Harun Scheutzow Kontonummer: 581854107 Bankleitzahl: 10010010 Bank: Postgiroamt Berlin Einsatzm”glichkeiten und Voraussetzungen, u.v.m. ------------------------------------------------ HSMODEM1 soll unter allen TOS-Versionen auf ATARI ST, STE, MegaST, MegaSTE und TT laufen. Es l„uft NICHT auf dem Falcon. Deshalb ist alles Folgende nur fr die Computer gltig, auf denen HSMODEM1 lauff„hig ist. Je nach TOS-Version integriert es sich unterschiedlich in das System. Dabei werden nur dokumentierte Eigenschaften des TOS genutzt, auch wenn das manchmal nicht einfach war. Modem1 kann ohne Zusatzhardware maximal 19200Bd erreichen. Mit Zusatzhardware, wie (dem von mir entwickelten) RSVE, RSSpeed oder anderen k”nnen auch h”here Datenraten realisiert werden. Z.B. erlaubt RSVE auch die Einstellung von 38400, 57600 und 115200Bd. Ohne Zusatzhardware k”nnen h”here Datenraten im Synchonbetrieb des MFP erreicht werden, dabei ist eine fehlerfreie Funktion aber ausschliežlich beim Senden m”glich, 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. Meine pers”nliche Meinung ber die TOS-Programmierer (Eric Smith ausgenommen) hat die (Selbst)Zensur an dieser Stelle gel”scht. Wie schnell geht es? -------------------- Das Problem bei einer seriellen šbertragung mit einer bestimmten Geschwindigkeit (hier immer in Baud angegeben) besteht nicht im Senden der Zeichen, sondern in deren Empfang. Der MFP puffert immer nur ein empfangenes Zeichen und meldet ein empfangenes Zeichen der CPU per Interrupt. Die CPU muž dieses Zeichen fr eine fehlerfreie šbertragung aus dem MFP abholen, bevor dieser das n„chste Zeichen komplett empfangen hat. Wenn ich sage, der Betrieb bei ... ist zuverl„ssig, so bedeutet dies, daž die CPU es schafft, jedes Zeichen rechtzeitig abzuholen, und zwar bei der maximal m”glichen Zeichendichte auf der seriellen Empfangsleitung (keine Pause zwischen Stoppbit des vorigen und Startbit des nachfolgenden Zeichens). Ein 8MHz ST (RSVE eingebaut) kann mit TOS und HSMODEM1 eine fehlerfreie Datenbertragung mit 38400Bd realisieren. Eine fehlerfreie Datenbertragung mit 57600Bd ist ebenfalls m”glich, aber nicht mit dem originalen TOS. Andere Interruptroutinen des TOS sind so unintelligent ausgelegt, daž sie den zuverl„ssigen Betrieb mit 57600Bd verhindern. Siehe auch n„chsten 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 l„žt. Den Blitter kann man in den meisten F„llen auch zugeschaltet lassen. Sollten aber Empfangsfehler auftreten, dann den Blitter abschalten. ZMODEM-Senden bei 57600Bd erreicht mehr als 5000cps. 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. Es geht auch noch ein bižchen schneller, aber ich will die Interessenten nicht noch l„nger auf die erste Version warten lassen. Eventuell wird es ein Programm geben, daž alle Schnittstellen des MegaSTE/TT untersttzt, m”glicherweise in Zusammenarbeit mit anderen Programmierern. Es wird wahrscheinlich einen TOS2.06-EPROM-Patch geben, der HSMODEM1 direkt in das TOS2.06 integriert. Eine blockorientierte Datenbergabe, kompatibel zu Mint/Multitos, befindet sich ebenfalls in der Entwicklung. Damit mžten mit einem neuen GSZRZ 5400cps beim Senden UND Empfangen (57000Bd seriell) m”glich sein. Aužerdem kommen intelligente und schnelle Interruptroutinen bei einer Multitaskumgebung der ganzen Systemleistung zugute, so daž nicht auszuschliežen ist, daž auch mal Tastendrcken, Mausbewegen und 38400Bd ZMODEM-šbertragung gleichzeitig fehlerfrei m”glich sind. Probleme oder auch nicht ------------------------ Lange DMA-Zugriffe k”nnen beim Empfang zu Datenverlusten fhren. Ebenfalls kritisch sind lange Verweilzeiten der CPU in einem Interruptpriorit„tslevel gr”žer als 5. Auf 8MHz STs: Finger weg von Maus und Tastatur, w„hrend GSZRZ empf„ngt. Sonst gibt es ein paar šbertragungsfehler. Abspeichern empfangener Daten unter GSZRZ w„hrend des Empfangs soll laut Berichten eines Testers nicht zu Fehlern fhren. Man kann den Blitter auf jeden Fall 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 L”sung 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 --------------------- Seine Geschwindigkeit erreicht es durch optimierte Interruptroutinen und durch das zus„tzliche direkte Einklinken in den BIOS-Trap. Deshalb sollte es m”glichst sp„t 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 Kan„le „ndern (gibt es sowas schon?). HSMODEM1 kann alle drei Handshakearten, die auch das TOS k”nnen 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 er ebenso. Das direkte Einh„ngen in den BIOS-Trap ist bei TOS1.00 die einzige M”glichkeit, die Routinen Bconin, Bconstat, Bconout und Bcostat zu ersetzen. Ab TOS1.02 dient dieses Verfahren nur noch der Geschwindigkeitssteigerung, denn HSMODEM1 setzt sich auch in die entsprechenden xco...-Vektoren ein. Wenn das TOS Bconmap untersttzt (ab Version 2.00), so erfolgt das Einsetzen auch in die entsprechende MAPTAB. Dabei werden die Originalroutinen fr Modem1 vollst„ndig ersetzt. Der BIOS-Kanal 6 ist mit HSMODEM1 unter allen TOS-Versionen als Modem1 verfgbar. Bei Nutzung von Kanal1 (AUX) wird die Einstellung ber Bconmap beachtet. Im XBIOS-Trap wird eine neue Iorec-Routine eingeh„ngt. Wenn das TOS Bconmap untersttzt, wird noch Bconmap berwacht. Ebenfalls ersetzt wird Rsconf. Das neue Rsconf wechselt bei einem Wechsel der Handshakeart auch die seriellen Interruptvektoren des MFP aus. Das Einh„ngen in den (X)BIOS-Trap erfolgt per XBRA-Verfahren mit der Kennung RSVE. Die vier 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 m”glichst 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 ebenfalls durch Anklicken gestartet werden. Versionen --------- Ich vergebe keine Versionsnummern, sondern berlasse die Versionsunterscheidung dem in der Installationsmeldung ausgegebenen Datum. Ich notiere das Datum in der deutschen Schreibweise, also Tag.Monat.Jahr. Harun Scheutzow (SWB), 16.03.1993