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. Aužerdem ein Fehler des TOS2.05 beseitigt. Sp„testens 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 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 zu blichen Preisen ist zul„ssig. Ein Beipack zu Programmen ist ohne meine Zustimmung nur zul„ssig, 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 (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. Jetzt m”chte ich allen danken, die bereits eine Spende geschickt haben. Die Betatester und ich haben dieses Programm sorgf„ltig berprft. Ich hafte in keiner Weise fr: - Fehler und/oder (daraus resultierende) Besch„digungen irgendwelcher Objekte, Subjekte oder Werte. - irgendwelche Auswirkungen des Einsatzes oder Nichteinsatzes dieses Programmes und dieser Dokumentation 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 (gute) alte Post. Ich bin im Mausnetz unter Harun Scheutzow @B zu erreichen. Meine Postanschrift lautet: Harun Scheutzow Dresdener Straže 83 D-10179 Berlin Meine Bankverbindung: Kontoinhaber: Harun Scheutzow Kontonummer: 581854107 Bankleitzahl: 10010010 Bank: Postgiroamt Berlin An dieser Stelle m”chte ich allen danken, die mich bei der Entwicklung dieses Programms untersttzt haben. Diese Untersttzung geht manchmal ganz sch”n auf die Telefonrechnung! Einsatzm”glichkeiten, 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 (fast) nur dokumentierte Eigenschaften des TOS genutzt, obwohl das nicht einfach war. Die Nutzung undokumentierter Eigenschaften ist auf jeden Fall abschaltbar. MiNT Es l„uft auch mit MiNT und sollte vor diesem im Auto-Ordner stehen. Dann mžte MiNT die HSMODEM1-Routinen fr einen blockweisen Datentransfer nutzen k”nnen. Ein nachtr„gliches Starten unter Mint funktioniert wohl auch und bringt eventuell h”here Datenraten. Ich arbeite nicht mit Mint. Siehe auch Abschnitt ber das Konfigurationsfile. Mag!X Versionen ab 2.00 dieses multitaskf„higen Betriebssystems (es ist im Gegensatz zum aktuellen MultiTOS nicht nur ein Aufsatz und wesentlich schneller) haben korrekte Routinen zur Modem1-Bedienung. Ein nachtr„glich 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), w„hrend im Hintergrund GSZRZ 3.5 fehlerfrei empf„ngt. Mit Mag!X ab Version 2.00 sollte "NO FASTINT" in der HSMODEM1.INF gesetzt werden, da Mag!X bereits modifizierte Timerroutinen hat. Wenn HSMODEM1 da noch etwas einh„ngt, wird es ein bižchen langsamer. 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 k”nnen h”here Datenraten realisiert werden. Z.B. erlaubt RSVE auch die Einstellung von 38400, 57600 und 115200Bd. HSMODEM1 sorgt dann im Rahmen der Hardware-M”glichkeiten fr einen wesentlich h”heren Datendurchsatz (cps-Rate). Wenn jemand meint, allein mit Software Modem1 mit mehr als 19200Bd betreiben zu k”nnen: Das geht im Synchronbetrieb des MFP. Dabei ist eine fehlerfreie Funktion aber ausschliežlich beim Senden m”glich, 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 gr”žere Systembremse. TOS2.05-Fehler -------------- Die XBIOS-Funktion 14, Iorec ist nur im TOS2.05 fehlerhaft. Sie liefert unabh„ngig von der Einstellung ber Bconmap bei der Abfrage der IOREC-Strukturadresse fr AUX (Nummer 0) immer die Adresse des Modem1-IOREC. HSMODEM1 beseitigt 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 Bl”dsinn. 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 n„chste Zeichen komplett empfangen hat. Wenn ich sage, der Betrieb bei ... ist zuverl„ssig, so bedeutet dies, daž die CPU bei der maximal m”glichen 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 nicht "NO FASTINT" angegeben 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 l„žt. Den Blitter kann man in den meisten F„llen 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 k”nnen 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 m”glich 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. Da ich immer wieder gefragt werde, wie man 57600 fehlerfrei erreicht: Blitter aus, keine DMA-Zugriffe w„hrend Dateibertragung (in den Filepuffer des ZMODEMs muž bei Empfang das ganze File passen), keine Joysticks mit Autofire oder DCF-Uhren am Joyport. Dann testweise alle residenten Programme und ACCs entfernen und nur die wieder benutzen, die nicht st”ren. Das Konfigurationsfile ---------------------- Das Konfigurationsfile ist ein reiner ASCII-Text, der mit einem Texteditor bearbeitet werden sollte. Es werden bei Updates m”glicherweise neue Parameter hinzukommen und Einschr„nkungen der Syntax aufgehoben. Das File heižt 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). Aužer 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 Grožschreibung 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 erm”glicht 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 h”heren Baudrate benutzt werden soll. Zul„ssig 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 h”here Baudrate, die ebenfalls exakt angegeben werden muž. Zul„ssig sind 115200, 57600, 38400. Hinweis: 150, 134 und 110 Baud schalten auch ohne ein "SPEED MODEM1"-Angaben ohnehin die hohen Datenraten ein. Dieses Umlegen der Baudraten wirkt nur auf Rsconf, nicht auf die Fcntl-Funktionen TIOC?BAUD. NO GEMDOS Es erfolgt kein Einh„ngen 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 st”ren. NO FASTINT Eigentlich hatte ich erst modifizierte Timer-Interruptroutinen geschrieben. Diese mžten aber beim Start erst umst„ndlich an die im Rechner vorhandene TOS-Version angepažt 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 erm”glichen. Also h„nge 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. Zus„tzlich wird "M1HISP" aktiviert. M1HISP Tr„gt anstelle 110, 134 und 150 Bd in den Fcntl-Funktionen TIOC?BAUD die korrekten hohen Raten 38400, 57600, 115200 ein. Wird von "RSVE" automatisch aktiviert. Bei Problemen mit neuen oder alternativen Betriebssystemen sollte man zuerst ein "NO FASTINT" ausprobieren. 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 m”glicherweise noch ein bižchen (nicht viel) schneller. Eventuell wird es ein Programm geben, daž alle Schnittstellen des MegaSTE/TT untersttzt, 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. M”gliche Probleme ----------------- 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 ohne Mag!X >2.00 und neues NVDI: Bei mehr als 9600Bd Finger weg von Maus und Tastatur, w„hrend GSZRZ empf„ngt. Sonst gibt es ein paar šbertragungsfehler. Genauso k”nnen 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 w„hrend 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 pers”nlich wesentlich besser, da es wesentlich schneller ist. DCF_TIME von Ralf Zimmermann @WI2 sollte in der Version 1.2 oder h”her verwendet werden. Aber nur die Abfrage ber den RingIndicator macht keine Probleme bei 57600Bd, ber den Joyport gibt es sekndlich Žrger. QFAX frižt 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 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?). Handshake HSMODEM1 beherrscht alle drei Arten, die 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 HSMODEM1 ebenso. BIOS-Trap Direktes Einh„ngen ist bei TOS1.00 die einzige M”glichkeit, 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 vollst„ndig 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 eingeh„ngt. Wenn TOS Bconmap untersttzt, wird Bconmap berwacht. Fr TOS ohne Bconmap wird Rsconf eingeh„ngt, ansonsten h„ngt das neue Rsconf nur in der MAPTAB. Es setzt je nach Handshakeart auch die seriellen Interruptvektoren des MFP. Das Einh„ngen 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 eingeh„ngt. 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". 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 st”rt mžte aber ein anderes Programm sehr unsaubere Sachen veranstalten. 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 etwas weniger als seine Dateil„nge 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 M„use. Man sollte nach dem Filenamen "HSMOD*.*" suchen lassen. Das Archiv wird HSMOD1xx.LZH heižen, wobei xx fr die fortlaufende Ver”ffentlichungsnummer und die 1 fr ausschliežliche Modem1-Untersttzung steht (kann sich auch mal „ndern!). 16.03.1993 erste ”ffentliche Version 05.04.1993 kleiner Fehler in bcostat beseitigt (meldete zu sp„t, daž Puffer voll, so mužte bconout selten doch warten) 11.04.1993 Initialisierung ge„ndert XBIOS Iorec Fehler des TOS2.05 wird korrigiert Konfigurationsfile eingebaut Rsconf l”scht 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 monsterm„žig ist Cookie RSVE kann angelegt werden Fehler in Fread/Fwrite raus 24.07.1993 Fehler bei vollem Cookie ist raus, ergab z.T. mysteri”sen Mll 23.08.1993, 09.09.1993 legt Cookie Jar an, wenn keiner da Fehler raus: Cookie RSVE liež sich nur ohne "NO GEMDOS" setzen einige Fcntl erg„nzt: TIOC?BAUD, TIOC?FLAGS, siehe RSVF_COO.TXT Harun Scheutzow (SWB), 16.03.1993 und sp„ter