MIDInet -Das Netzwerkprogramm fr den Atari ST Ein professionelles Netzwerk ohne zus„tzliche Hardware: Unser Projekt gestattet Ihnen die Vernetzung von bis zu 15 ST- Computern untereinander. Alles was Sie ben”tigen ist eine Diskette und etwas Kabel. Ja, Sie haben sich nicht verlesen. Fr dieses Netzwerkprogramm ben”tigt man kein teures Steckmodul oder komplizierte Hardware sondern Lediglich einige Meter handelsbliches Stereo- šberspielkabel. Als Bastler empfehlen wir 5-adriges, einzeln abgegeschirmte Schaltkabel. Das MIDInet-Programm ist fr bis zu 15 Computer ausgelegt. Es l„uft auf allen Modellen der ST-Serie vom 260 ST bis zum Mega ST4. Fr jeden ans Netz angeschlossenen ist ein Kabel notwendig. Im Betrieb haben wir bisher Verbindungskabel von bis zu 15 Metern L„nge erprobt und keine Datenverluste hinnehmen mssen. Anstoá zur Entwicklung von MIDInet war die Tatsache, daá bei uns die Arbeit mit drei ST-Computern „uáerst l„stig wurde. Fr einen Datenaustausch ist der Gang mit einer Diskette zum n„chsten Anwender unumg„nglich. Da dies den Arbeitsfluá mehr hemmt als ntzt, fiel die Entscheidung zu einem Netzwerk nicht schwer. Da im Handel keine preisgnstigen Netzwerkprogramme erh„ltlich sind, nahmen wir die Entwicklung eines eigenen ST-Netzes in Angriff. Wie der Name MIDInet sagt, verwendet das Programm die MIDI- Schnittstelle des Computers. Damit sind schon als h”chste šbertragungsgeschwindigkeit 3125 Byte je Sekunde festgelegt. Bei der Datenbermittlung ber das Netz erreichen Sie jedoch maxinal 1700 Byte pro Sekunde. Welche Faktoren die Geschwindigkeit beeinflussen, sehen wir sp„ter. MIDInet verbindet bis zu 15 Teilnehmer. Jeder Computer erh„lt dabei eine eigene Nummer, unter der er zu erreichen ist. Mit jedem Ger„t k”nnen Sie Kurzmitteilungen an einen oder mehrere Teilnehmer schicken, Dateien senden oder von einem anderen Computer anfordern. Das bedeutet, daá jeder Redakteur Zugriff auf die Diskettenlaufwerke und Festplatten der anderen hat (Bild 1). So ist Die Arbeit an gr”áeren Projekten in Teamarbeitet gegeben. Eine Festplatte dient als Massenspeicher zum sichern aller Quelltexte, Programme und Daten. Allerdings ist eine Festplatte keine Voraussetzung fr den Einsdatz von MIDInet. Alle an das Netz angeschlossenen Computer sind ringf”rmig miteinander verbunden. Midi Out des ersten Ger„tes ist mit an Midi In des zweiten gekoppelt. So verfahren Sie mit allen zu vernetzenden Computern. Das Siganl Midi Out des letzten Ger„tes verbindet man am Schluá mit Midi In des ersten. Achten Sie bitte darauf, niemals Midi In zweier Computer miteinander zu verbinden. Die Entfernung zwischen zwei benachbarten Computern darf nach unserer Sch„tzung bis zu 50 Meter betragen. Im Folgenden erkl„ren wir die Datenbertragung. Wer mit MIDInet arbeitet, ben”tigt keine speziellen Kenntnisse ber Netzwerke oder Datenbertragungen. Lediglich die Bedienung der Maus sollte dem Anwender vertraut sein (Bild 2). Das Betriebssystem stellt die Befehle bconin (BIOS 2) und bconout (BIOS 3) zur Verfgung, mit denen man jeweils ein Zeichen senden bezeihungsweise empfangen kann. šber bconstat (BIOS 1) kann man prfen, ob ein Zeichen im Puffer bereitsteht. Zur Vereinfachung ist der Datenverkehr auf dem Netz blockweise organisiert, deren šbertragung zeichenweise mit bconin und bconout erfolgt. Die Schnittstelle hat einen vom Betriebssystem gestellten Puffer von 128 Byte. Um Pufferberl„ufe und damit Datenverluste vollkommen auszuschlieáen, sind die Blocks auf die L„nge von 128 Byte begrenzt. Bild 3 zeigt den Aufbau eines Datenblocks, von denen es drei verschiedene gibt. Das >>nullte<< Byte enth„lt in den oberen vier Bit die Nummer des Absenders und in den unteren die des Empf„ngers. Das >>erste<< beinhaltet die L„nge des restlichen Blocks (ohne Prfsumme), dann kommen bis zu 124 Byte Daten. Am Schluá steht ein Kennzeichen, welches das Ende der Daten signalisiert; ihm gefolgt noch eine Prfsumme. Insgesamt ergibt dies eine L„nge von 128 Byte. Das Schluázeichen markiert nicht das Ende des Blocks, sondern zeigt an, ob zu der bertragenden Datei noch weitere Blocks geh”ren oder nicht. Die Prfsumme dient zur Erkennung von šbertragungsfehlern. Eventuell auftretende Fehler korrigiert MIDInet automatisch. Zwei andere Arten von Blocks mssen noch erkl„rt werden. Zur Verhinderung von Datensalat und Pufferberl„ufen darf immer nur ein Computer gleichzeitig Informationen bertragen. Fr die Synchronisation der Computer untereinander verwenden wir die zweite Blockart, das Freizeichen (Bild 4). Es besteht nur aus einem Nullbyte und kreist fast immer auf dem Netz. Kommt das Freizeichen bei einem Computer an, muá er prfen, ob er das Netz in Anspruch nehmen soll. Ist dies nicht der fall, so sendet der Computer das Freizeichen so schnell wie m”glich weiter. Will sich ein Teilnehmer in das Netz einschalten, so sendet sein Computer statt des Freiezeichens einfach einen Datenblock. Dieser Block l„uft ber die vernetzten Ger„te bis zum Zielcomputer. Der Empf„nger kopiert den Datenblock in einen internen Puffer und sendet seinerseits den Best„tigungsblock (Bild 5). Das ist die dritte Blockart. Der Datenteil eines Best„tigungsblocks hat die L„nge 0. Netze, die solche Freizeichen verwenden, nennt man Token-Ring-Netze. Die Geschwindigkeit eines Netzwerkes bestimmt gr”átenteils die fr jeden Transfer notwendige Bearbeitungszeit, denn jeder Computer muá laufend ankommende Freizeichen oder Blocks bearbeiten. Um diese Arbeti im Hintergrund laufen zu lassen, ist in das Programm eine in Assembler geschriebene Interruptroutine eingebunden, die den Blockweisen Verkehr auf dem Netz bearbeitet. Die Routine arbeitet bis zum abschalten oder Rcksetzen des Computers. Mit jedem Vertical Blank Interrupt (VBI), also nach zeichnen eines Bildes, ruft MIDInet diese Routine auf. Das passiert pro Sekunde 71 mal. Der Anwender merkt davon nichts und der ST arbeitet nicht sprbar langsamer. Die durchschnittliche Verz”gerung bei der Weitergabe eines Blocks betr„gt 1/2 * 1/71 Sekunden, etwa 7 ms. In einem Netz mit drei Computern kreist das Freizeichen etwa 50 mal je Sekunde. Da der Verwaltungsaufwand mit steigender Computerzahl zunimmt, verringert sich dann diese Umlaufgeschwindigkeit. Wie schon erw„hnt, betreut die Interruptroutine den gesamten Netzverkehr. Jetzt muá man nur noch die zu bertragenden Daten in Bl”cke zerlegen, um sie anschlieáend erneut aufzubauen. Um h”heren Anwendungskomfort zu erreichen, haben wir ein Accessory programmiert. Es bildet die Schnittstelle Anwender/Netz und arbeitet vollst„ndig mit Dialogboxen. Das Accessory ist in ST Pascal plus geschrieben. Das Hilfsprogramm steht, solange Sie unter GEM arbeiten, bereit. Sobald TOS-Applikationen laufen, also ohne Maus und Menleiste, l„át sich das Accessory nicht aktivieren. Die Interruptroutine jedoch l„uft weiter und h„lt das Netz aufrecht. Accessory und Interruptroutine haben einen gemeinsamen Speicherbereich, in dem zwei je 128 Byte lange Puffer und einige Flags liegen. Den genauen Aufbau finden Sie in Bild 5. Was passiert beim Senden einer Nachricht? Der Benutzer aktiviert das Hilfsprogramm und klickt die Nummern der/des Empf„nger an, denn das k”nnen auch mehrere sein. Anschlieáend schreibt er die Nachricht in eine Dialogbox. Mit dem senden der Nachricht kopiert sie der Computer in den Sendepuffer. Das Accessory setzt das >>Send Request<<-Flag. Es zeigt der Interruptroutine an, daá Daten zum Senden bereitstehen. Wenn nun die Interruptroutine das Freizeichen empf„ngt, bergibt sie stattdessen den Datenblock an das Netz. Die Interruptroutine des Empf„ngers kopiert den Block in den Empfangspuffer, setzt das Flag >>Receive Request<<, das dem Accessory Empfangsbereitschaft anzeigt, und sendet eine Best„tigung zurck. Sobald die Best„tigung beim Absender des Datenblocks ankommt, sendet der ein Freizeichen. Damit ist die šbertragung einer Nachricht abgeschlossen. Bei der n„chsten Gelegenheit zeichnet das Accessory des Empf„ngers dann eine Dialogbox auf den Bildschirm und schreibt den Text der Nachricht sowie die Nummer des Absenders hinein (Bild 6). Stimmen die Prfsummen nicht berein, fordert die Interruptroutine des Empf„ngers bei Sender den Block erneut an. Auáer einem Gl”ckchen (CHR(7)) merkt der Anwender davon nichts. Anfangs gab es Schwierigkeiten, da ein Datenblock meistens nicht vollst„ndig vor dem n„chsten Interrupt beim Empf„nger angekommen ist. Das haben wir gel”st, indem die Interruptroutine die Kontrolle wieder abgibt, sobald alle bisher angekommenen Zeichen bearbeitet sind. Dabei >>merkt<< Sie sich die Position, an der sie beim n„chsten Interrupt weiterarbeiten muá. Auf diese Weise verliert das System keine Zeit mit Warten auf Rest von Bl”cken. Im Sendebetrieb bleibt Die Interruptroutine so lange aktiv, bis der Block vollst„ndig bertragen wurde. Das dauert zwar mit 41 Millisekunden wesentlich l„nger als fr den VBI erlaubt ist, allerdings flimmert das Bild nicht und hat keinerlei negative Auswirkungen. Der Geschwindigkeit des Netzes kommt es zugute. Geht eine Nachricht an mehrere Empf„nger, sendet sie das Netz mehrmals nacheinander. Nachrichten kann man auch an sich selber schicken. Ist der Empfangspuffer des Empf„nger noch belegt, weil sich der Teilnehmer im TOS befidnet und deshalb das Accessory nicht arbeitet oder die letzte Nachricht gerade erst lieát, kann es zu Probl”emen kommen. Dann l”scht die Interruptroutine des Empf„ngers den Datenblock vom Netz und sendet keine Best„tigung, sondern ein Freizeichen. Der Sender wartet vergeblich auf eine Best„tigung und meldet das ber eine Bildschirmmaske. Der Sendende kann dann den Vorgang wiederholen oder abbrechen. Besitzt kein Computer im Netz die Nummer des Empf„ngers, kommt der Block unver„ndert wieder beim Absender an. Auch hier erh„lt der Anwender eine Meldung. Wir mssen erw„hnen, daá Sie machtlos gegenber šbertragungsfehlern in der Adresse oder in der L„nge des Datenblocks sind. In einem solchen Fall bleibt das Netz normalerweise einfach stehen, bis der Empf„nger des gest”rten Blocks sein Accessory neu installiert hat. Solche schweren Fehler sind jedoch „uáerst selten. Wie werden Dateien gesendet? Die Software zerlegt alle Dateien in Bl”cke und behandelt diese dann wie Nachrichten. Der Absender klickt den gewnschten Empf„nger an, w„hlt >>Datei senden<< an und kann mit der bekannten File Selector Box eine Datei zum šbertragen ausw„hlen. Der erste gesendete Block enth„lt den Dateinamen und dessen Datenteil mit einer 0 beginnend. Dadurch wird das Accessory des Empf„ngers automatisch auf Dateiempfang geschaltet. Der Empf„nger bestimmt jetzt, wo und unter welchem Namen die Information abgelegt wird. Dem Anwedner stehen die Hauptverzeichnisse von A:\ bis D:\ zur Wahl. Auáerdem k”nnen Sie auch den Pfad ber die File Selector Box ausw„hlen. Die folgende blockweise šbertragung der Daten ist bei den Gespr„chspartnern in Dialogboxen sichtbar. Zwischendurch l„át sich eine einmal begonnene šbertragung nicht abbrechen. Hier spielt das erw„hnte Schluá-Kennzeichen der Bl”cke eine Rolle. In Jedem dieser Bl”cke steht am Ende eine 255 vor der Prfsumme als Zeichen, daá die šbermittlung noch nicht abgeschlossen ist. Der letzte Block endet mit einer 0 und veranlaát damit das Schlieáen der Dateien. Die Datenbertragung wirft Synchronisationsprobleme auf. Sendet man beispielsweise von einer RAM-Disk Informationen auf eine Diskette, dann stellt der Sender die Sende-Bl”cke sehr schnell zusammen. Der Empf„nger dagegen ben”tigt wesentlich mehr Zeit zum Schreiben der Daten. Daher kann es passieren, daá der Sender laufend Informationen bertr„gt, ohne daá der Empf„nger diese in einen Puffer legen kann. In Wirklichkeit findet dann keine Datenbertrgung statt. Um dem abzuhelfen sendet hier nicht die Interruptroutine das Quittierungssignal, sondern das Accessory. Dies geschieht erst dann, wenn der Empfangspuffer frei ist. Unsere Versuche haben eine wesentliche Beschleunigung der šbertragung mit diesem Verfahren ergeben. Kann man Dateien nur senden? Eine weitere F„higkeit von MIDInet ist die Anforderung von Dateien anderer Teilnehmer. Dazu mssen Sie den vollst„ndigen Pfadname zur gew„hlten Datei auf dem anderen Computer, etwa E:\PASCAL\GRAFIK.PAS, eingeben. Zus„tzlich muá der >>Eigentmer<< der gewnschten Datei diese zum Senden freigegeben haben. Wer will schon gerne Privatpost auf dem Netz kreisen sehen... In der Datei Midinet.INF sind Pfade zu finden. Findet der Computer in dieser Datei den Pfadnamen der angeforderten Daten, sind die angeforderten Informationen freigegeben und werden gesendet. Andernfalls bekommt der Anfordernde eine Fehlermeldung. Steht zum Beispiel E:\POOL\ in Midinet.INF, so k”nnen Sie alle Dateien aus dem POOL und den darin enthaltenen Unterverzeichnissen anfordern. Eine Anforderung l„uft folgendermassen ab. Der Anfordernde sendet einen Datenblock, der den Pfadnamen enth„lt sowie dessen Datenteil mit einer 1 beginnt. Das schstellt das Hilfsprogramm des Empf„ngers auf Datenanforderung um. Dann erfolgt die Prfung durch den Empf„nger, ob die gesuchte Datei zum, Senden freigegeben ist. Kann immer nur einer das Netz benutzen? Da in jedem Block neben dem Empf„nger auch der Absender steht, k”nnen mehrere Teilnehmer gleichzeitig auf dem Netz arbeiten. Jeder Anwender kann aber zu einem Zeitpunkt nur eine Nachricht senden oder Datei anfordern. 1 kann an 3 eine Datei senden, w„hrend 2 und 4 Nachrichten austauschen. Wenn ein Teilnehmer, der eine Datei sendet, eine Nachricht erh„lt, wird diese nicht angenommen. Der Absender der Nachricht erh„lt eine entsprechende Meldung und kann den Versuch wiederholen oder abbrechen. Wie installiert man MIDInet? Neben den šberspielkabeln braucht man vier Dateien: MIDINET.ACC das Accessory MIDINET.RSC das Resourcsfile dazu MIDINET.PRG die Interruptroutine MIDINET.INF die Zugriffsrechte Alle vier Dateien mssen auf dem Laufwerk zur Verfgung stehen, von dem aus Sie den Computer starten. Bei jeder Datenanforderung liest das System die Datei Midinet.INF. Das Accessory installiert sich selbstt„tig w„hrend des Bootvorganges. Nach etwa 3 Sekunde erscheint eine Dialogbox, in die eigene Teilnehmernummer einzutragen ist. Das Netz arbeitet nur dann richtig, wenn alle Teilnehmer unterschiedliche Nummmern besitzen. Das war auch schon alles, was der Benutzer zu tun hat. Das Accessory initialisiert nun seinerseits den Puffer. Dann l„dt und startet es mit der Funktion >>pexec<< (GEMDOS $4B) die Interruptroutine, wobei die Kommandozeile die Adresse des Puffers angibt. Die Interruptroutine bindet sich in den VBI ein und ist damit aktiv. Abschlieáend wird der Puffer gel”scht und ein Freizeichen gesendet. Auf dem Netz darf immer nur ein Freizeichen kreisen. Gibt es keine Probleme, wenn jeder Teilnehmer einfach so ein Freizeichen sendet? Es ist sehr unwahrscheinlich, daá zwei Teilnehmer innerhalb von 10 Millisekunden mit dem Installieren fertig sind. Deshalb h„ufen sich die gesendeten Freizeichen im Puffer des letzten nicht installierten Teilnehmers. Wenn der den Puffer l”scht, sind alle berflssigen Zeichen eliminiert und nur noch das von diesem Teilnehmer gesendete Freizeichen kreist auf dem Netz. Soviel zur Bedienung von MIDInet. Als Erweiterung der F„higkeiten sind Routinen zum Senden und Empfangen von Bl”cken ber den XBIOS-Vektor geplant. Damit kann man dann in jeder beliebigen Sprache, die XBIOS-Aufrufe beherrscht, Programme schreiben und mit ihnen auf mehreren Computern mit- oder gegeneinander arbeiten. Beispiele hierfr sind eine verteilte Datenbank oder ein Adventure, an dem mehrere Spieler an verschiedenen Computern teilnehmen. Zus„tzlich arbeiten wir an einer neuen File Selector Box, die besser als die zu kleine, bliche Box ist und ber das Netz auch das Bl„ttern auf den Laufwerken aller anderen Teilnehmer erlaubt. Bei der Token-Ring-Architektur mssen alle am Netz beteiligten Computer eingeschaltet sein und MIDInet geladen haben, damit das Netz funktioniert. Vielleicht kann ein Hardwarebastler eine Schaltung entwerfen, die das Netz durchschleift, wenn der entsprechende Computer ausgeschaltet ist. Natrlich geht das mit einem Zwischenstecker, aber eine Schaltung w„re sch”ner.