MIDI_COM.ACC --DEMOVERSION--DEMOVERSION--DEMOVERSION--DEMOVERSION--DEMOVERSION--DEMOVERSION Vertrieb: H. Richter Distributor Hagener Str. 65 5820 Gevelsberg Tel.: 02332 / 2706 FAX.: 02332 / 2703 Autor: Harald Blees Am Stuckenberg 25 4750 Unna entwickelt mit: ST-PASCAL+ / Sigma-Assembler Inhalt: I. Allgemeines II. Installation III. Das Netzlaufwerk IV. Zugriffsschutz V. SICHERHEIT VI. Drucker-Utilities VII. MIDI-COM.INF VIII. MC-CONTR.ACC IX. Programmeinbindung X. Einschr„nkungen I. Allgemeines MIDI_COM ist ein einfaches Netzwerk, das bis zu 7 ATARI-Computer ber die MIDI-Schnittstelle verbindet. Einfach daher, da es einige netzwerktypische Funktionen wie File- und Recordlocking nicht anbietet und ausserdem nur GEMDOS-Funktionen untersttzt. Allerdings bietet MIDI-COM einige Besonderheiten, die ich bisher bei keinem anderen mir bekannten MIDI-Netzwerk gefunden habe. Zum einen ist es mit MIDI-COM m”glich, auf mehr als ein Fremdlaufwerk zur gleichen Zeit zuzugreifen. (Maximal 20 ge”ffnete Files auf einer beliebigen Kombination von Fremdlaufwerken.) Ausserdem kann von allen Rechnern gleichzeitig auf ein einziges Laufwerk geschrieben werden ohne das man in Gefahr l„uft, den Datentr„ger zu zerst”ren. Bei gleichzeitigem Schreiben in das selbe File (an die selbe Stelle) gewinnt immer der letzte Schreiber, ansonsten entstehen auch dabei keine Probleme. Eingebaut ist ebenfalls eine Umlenkung der Druckausgaben, sodaž eine verteilte Nutzung von Druckern durch alle im Netz eingebundenen Rechner erm”glicht wird. Eine maximale L„nge der Verbindungskabel ist mir bisher nicht bekannt. Von mir wurden Kabell„ngen von etwa 50 Metern getestet. Die Obergrenze drfte aber h”her liegen, da die MIDI-Schnittstelle nach dem Stromschleifenprinzip arbeitet und nicht mit Spannungspegeln, wie die anderen Schnittstellen. Die šbertragungsgeschwindigkeit des Netzwerkes ist sehr stark abh„ngig von dem verwendeten Medium. Der Zugriff auf eine externe Harddisk ergab bei zwei Rechnern einen Durchschnitt von ca. 2000 Bytes pro Sekunde. Bei einer hochformatierten Diskette fiel der Durchschnitt auf etwa 1000 Bytes pro Sekunde ab. Von einer normalformatierten Diskette kann man etwa 1200 Bytes/Sek. erwarten. Diese Werte wurden handgestoppt und gelten sowohl bei Lese- als auch Schreiboperationen ber den Ring. II. Installation Um das MIDI-Netz nutzen zu k”nnen, mssen alle Rechner ber die MIDI-Schnittstelle zu einem Ring verbunden werden. Dazu werden nur normale 5-polige DIN-Kabel ben”tigt. Da die handelsblichen Leitungen aber oft nicht die ben”tigte L„nge aufweisen, wird man in den meisten F„llen dazu gezwungen sein, sich selbst die passenden Verbindungen anzufertigen. Es reichen dazu dreiadrige Kabel. Die Pinbelegung der Stecker kann dem Handbuch zum ATARI Kapitel "Schnittstellen" entnommen werden. Im Fachhandel kann man sich meistens die Stecker gleich an die Kabel l”ten lassen. Die korrekte Verbindung wird hergestellt, indem man den MIDI-OUT Ausgang des ersten Rechners mit dem MIDI-IN Eingang des n„chsten Rechners verbindet. Dann dessen MIDI-OUT Schnittstelle mit der MIDI-IN Buchse des dritten und so fort, bis dann der letzte MIDI-OUT Anschluž wieder mit dem Eingang des letzten Rechners verbunden wird. Es hat sich als sinnvoll erwiesen, jedes Kabel auf einer Seite mit IN und auf der anderen Seite mit OUT zu beschriften, um Verwechslungen zu vermeiden. Aužerdem muž MIDI-COM auf allen Rechnern im Ring gebootet werden. Dazu kopieren Sie MIDI-COM.ACC und MIDI-COM.INF auf Ihre Bootpartition. Die Programme MC-TALK4.ACC und MC-CONTR.ACC k”nnen optional ebenfalls gebootet werden, sind aber nicht fr den normalen Betrieb des Netzwerkes notwendig. III. Das Netzlaufwerk Ist der Ring geschlossen und das Netzlaufwerk (normalerweise "M:") auf dem Desktop installiert, so kann man ber dieses Laufwerk auf alle anderen Laufwerke im Ring (ausser den eigenen natrlich) zugreifen. Dazu zeigt MIDI-COM fr jeden angeschlossenen Rechner im Ring einen Ordner 'Rx' an. 'x' ist dabei eine Zahl zwischen 1 und 6. Der Ordner 'R1' steht dann fr den jeweils (durch die Kabelverbindung bestimmt) nachfolgenden Rechner im Ring, 'R2' fr den bern„chsten und so weiter. In jedem dieser Ordner befindet sich fr jedes auf dem entsprechenden Rechner angemeldete Laufwerk wiederum ein Ordner. So kann man etwa mit dem Pfad 'M:/R1/Ax/DESKTOP.INF' auf die Datei 'DEKTOP.INF' auf Laufwerk 'A:' des nachfolgenden Rechners zugreifen. Der Anwender (das Betriebssystem ist in diesem Fall auch als Anwender zu sehen) kann bei aktivem Ring die folgenden GEMDOS-Funktionen auf das Laufwerk 'M:' anwenden: GEMDOS 57 : dcreate Erzeugt einen Ordner GEMDOS 58 : ddelete l”scht einen Ordner GEMDOS 59 : setpath setzt den aktuellen Zugriffspfad GEMDOS 60 : fcreate erzeugt ein File GEMDOS 61 : fopen ”ffnet ein File GEMDOS 62 : fclose schliežt ein File GEMDOS 63 : fread liest Daten aus einem File GEMDOS 64 : fwrite schreibt Daten in ein File GEMDOS 65 : fdelete l”scht ein File GEMDOS 66 : fseek setzt die aktuelle Lese-/Schreib-Position GEMDOS 67 : fattrib liest und setzt File-Attribute GEMDOS 71 : getpath liefert den aktuellen Zugriffspfad GEMDOS 75 : pexec startet ein Programm GEMDOS 78 : fsfirst Erster Eintrag im Verzeichniss GEMDOS 79 : fsnext n„chster Eintrag GEMDOS 86 : frename Umbenennen eines Files (keine Ordner) GEMDOS 87 : fdatime setzt/liest Datum und Uhrzeit eines Files Die meisten mir bekannten Programme verwenden diese Funktionen fr ihre File-Operationen (wie das Betriebssystem), so daž sie ebenfalls auf das Laufwerk "M:" zugreifen k”nnen. Allerdings benutzen einige Anwendungen (besonders Kopierprogramme) tieferliegende Bereiche des Betriebssystems, etwa um Sektoren einzulesen. Diese k”nnen verst„ndlicherweise mit dem Netzlaufwerk nichts anfangen. IV. Zugriffsschutz Auf mehrfachen Wunsch wurde ein Zugriffsschutz implementiert. Mit einem Markierungsfile MIDI_COM.LOC kann man nun eine Ordnerebene gegen alle Zugriffe von aužen sperren. Die GEMDOS-Funktionen FCREATE, FOPEN, FDELETE und PEXEC werden abgebrochen, wenn Sie auf ein geschtztes File angewendet werden. Diese Beschr„nkung bezieht sich dabei nur auf Files einer Ebene. Ordner in einer geschtzten Ebene und deren Inhalte k”nnen, falls nicht ebenfalls geschtzt, weiterhin von aužen bearbeitet werden. Um nicht jeden Ordner einer Partition einzeln markieren zu mssen, wurde zus„tzlich die M”glichkeit geschaffen, mit einer einzigen Markierung eine ganze Partition dem externen Zugriff zu entziehen. Man aktiviert alle beschriebenen Einschr„nkungen fr eine ganze Partition dur das File M-C-LOCK.PAR im Rootdirektory. V. SICHERHEIT Das Wort SICHERHEIT ist hier nicht umsonst grož geschrieben. Der Ring ist so konzipiert, das Abstrze, Bootvorg„nge oder herausgezogene Kabel nicht zu Datenverlusten fhren (es sei denn, der sendende Rechner verabschiedet sich). Angefangene Operationen werden, sobald der Ring wieder geschlossen ist, zu Ende gefhrt. Dies bedeutet fr Anwender, daž sie bei einer Unterbrechung des Rings auf die Wiederherstellung der Verbindung warten mssen. Es wurde kein Timeout vorgesehen. Intern wird jedes bertragene Byte mit einem Parit„tsbit versehen, sodaž auch šbertragungsfehler in den meisten F„llen erkannt werden. Bei Disketten-Zugriffen ber den Ring geht MIDI-COM in folgenden Schritten vor: a) Das zu lesende/schreibende File wird ge”ffnet. b) Der Lese- bzw. Schreibzeiger wird auf die gewnschte Position gesetzt. c) Die Lese- bzw. Schreiboperation wird ausgefhrt. d) Das File wird wieder geschlossen. e) Das Ergebniss der Operation wird an den Auftraggeber bertragen. Da zwischen ™ffnen und Schliežen der Datei aus Sicherheitsgrnden keine Prozežumschaltungen zugelassen werden, wird der Benutzer an dem entsprechenden Rechner zwangsl„ufig etwas behindert. Dafr ist aber im Normalfall (siehe Einschr„nkungen) gew„hrleistet, daž es nicht zu einer Zerst”rung des Datentr„gers kommen kann. Da die interne Paketl„nge einer šbertragung auf 2048 Bytes beschr„nkt ist, werden gr”žere Lese- und Schreiboperationen durch MIDI-COM automatisch gestckelt. Dadurch werden bei gr”žeren Operationen die zeitintensiven Schritte a)-d) mehrfach ausgefhrt. VI. Drucker-Utilities Eine weitere F„higkeit von MIDI-COM besteht in der Umlenkung von Druckerausgaben auf Drucker an externen Rechnern, so daž ein Drucker im Ring durch alle angeschlossenen Rechner benutzt werden kann. MIDI-COM erlaubt auch mehrere Drucker im System, mit der Einschr„nkung, daž ein Rechner immer nur einen einzigen Drucker belegen kann. Die Auswahl eines Druckers kann entweder im .INF-File oder mit Hilfe von MC-TALK.ACC oder MC-CONTR.ACC beeinflužt werden. Alle Ausgaben ber die Standartkan„le 3 und -3 sowie alle Aufrufe der im Folgenden aufgefhrten Betriebssystemaufrufe werden durch MIDI_COM umgelenkt. BIOS 3 : bconout BIOS 8 : bcostat GEMDOS 5 : cprnout GEMDOS 17 : cprnos MIDI_COM geht dabei folgendermažen vor: Wird von einem Programm eine der oben beschriebenen Funktionen verwendet, so versucht MIDI_COM als erstes einen Drucker im System fr den Rechner zu reservieren. Schliežlich soll es ja nicht zu šberschneidungen bei der Ausgabe kommen. Gesucht wird dabei ein Drucker der ONLINE ist. Dabei wird die Suche auf die vorher getroffene Auswahl beschr„nkt. Bevorzugt wird immer der n„chstliegende freie und empfangsbereite Drucker im Ring. Wird ein Drucker reserviert, so wird eine 7 (BELL) an diesen bertragen. (Die meisten Drucker geben dann einen Pfeiffton von sich). Der Drucker wird nach einer gewissen Zeit von MIDI_COM wieder freigegeben, wenn keine Druckzeichen mehr folgen. Dazu ist ein zweistufiger Timeout vorgesehen. Wurde als letztes Zeichen ein Seitenvorschub bertragen, so wird eine andere Zeitspanne (im allgemeinen eine krzere) gew„hlt, nach der der Drucker wieder fr alle freigegeben wird, als bei einem normalen Timeout. Allerdings bleibt ein Drucker mindestens so lange belegt, bis der Spooler-Puffer leer ist. In MIDI_COM.INF k”nnen diese Werte vorgegeben werden. Zus„tzlich kann vereinbart werden, ob bei einem normalen Timeout ein Seitenvorschub erzeugt werden soll. Dies soll es erm”glichen, daž der Drucker nach einem Benutzerwechsel wieder auf einen Seitenanfang druckt. Beachten Sie hierzu auch die Beschreibung von MIDI-COM.INF. Um nun den druckenden Rechner nicht zu stark zu belasten, ist in MIDI-COM zus„tzlich ein Spooler eingebaut. Wird im .INF-File ein Puffer vereinbart, so ist der Spooler automatisch aktiviert. Die Ausgabe aus dem Puffer wird durch einen Interrupt gesteuert, so daž im Normalfall der Anwender des ausdruckenden Rechners nicht behindert wird. Allerdings wird dabei ein ausreichend grožer Puffer vorausgesetzt. Ein zu kleiner Puffer kann, falls er berl„uft, zu kurzen Behinderungen am druckenden Rechner fhren. VII. MIDI-COM.INF Mit Hilfe des .INF-Files k”nnen einige Parameter von MIDI-COM festgelegt werden. Dieses File wird von MIDI-COM direkt nach dem Booten eingelesen. Die Parameter von MIDI_COM.INF: (angegeben werden die DEFAULT-Werte) micodrive: 12 Mit Hilfe dieses Parameters ist es m”glich, das Netzlaufwerk fr MIDI-COM zu bestimmen. Dabei steht wie bei GEMDOS der Wert "0" fr Laufwerk "A:", " 1 " fr "B:" . . . "12" fr "M:". setprconf -1 Mit Hilfe dieses Parameters kann MIDI-COM bei der Suche nach freien Druckern auf bestimmte Rechner beschr„nkt werden. Dabei stehen die einzelnen Bits fr die relativen Positionen der Drucker. Ist das entsprechende Bit gesetzt, so wird der zugeh”rige Rechner bei der Suche nach einem freien Drucker bercksichtigt. Andernfalls wird der Rechner einfach bergangen. m”gliche Werte: -1 Alle Rechner werden bei der Druckersuche bercksichtigt. 1 Nur der eigene Rechner wird berprft. 2 Nur der Rechner "R1" wird bercksichtigt. 4 Nur der Rechner "R2" wird bercksichtigt. 8 Nur der Rechner "R3" wird bercksichtigt. 16 Nur der Rechner "R4" wird bercksichtigt. 32 Nur der Rechner "R5" wird bercksichtigt. 64 Nur der Rechner "R6" wird bercksichtigt. Aužerdem sind alle Kombinationen zul„ssig: 1+2 = 3 Ausdruck auf dem eigenen Rechner oder, falls belegt oder nicht ONLINE, ber Rechner "R1" 1+2+64 = 66 Ausgabe auf eigenem Rechner oder, falls belegt oder nicht ONLINE, ber "R1" oder, falls ebenfalls belegt oder nicht ONLINE, ber "R6" 16+32 = 48 Ausgabe umlenken nach "R4" oder, falls belegt oder nicht ONLINE, ber "R5" mcspeeder: 50 Zeit-Parameter fr MIDI-COM. Gibt einen Anhaltswert, wieviel Zeit MIDI-COM ANDEREN!!! Programmen zum arbeiten gibt. Je gr”žer der Wert, desto langsamer wird MIDI-COM auf diesem Rechner. timeoutxx: 300 Anzahl der Prozežumschaltungen, bis ein belegter Drucker wieder freigegeben wird, falls das letzte Zeichen kein FORM FEED war. Die Zeit ist damit abh„ngig vom Wert "mcspeeder" timeoutFF: 50 Anzahl der Prozežumschaltungen, bis ein belegter Drucker wieder freigegeben wird, falls das letzte Zeichen ein FORM FEED war. Die Zeit ist damit ebenfalls abh„ngig vom Wert "mcspeeder" erg„nzeFF: 0 Es wird fr timeoutxx kein Seitenvorschub erg„nzt. Der Wert 1 an dieser Stelle wrde bewirken, das nach timeoutxx ein Seitenvorschub erzeugt wrde. spoolbuff: 0 Mit diesem Parameter kann ein Puffer fr die Druckerausgabe vereinbart werden. Der Wert gibt die Puffergr”že in Bytes an. Dies ist nur bei den Rechnern sinnvoll, an die direkt ein Drucker angeschlossen ist. Ist der Wert "0" so wird eine Druckerausgabe direkt an den Drucker bertragen, was eine gewisse Behinderung an diesem Rechner zur Folge haben kann. Der Speicher fr den Spooler wird, um eine Zerstckelung des Arbeitsspeichers zu vermeiden, am Ende des Hauptspeichers angelegt. Da es aber auch Programme gibt, die von dieser Vorgehensweise behindert werden, (z.B.: MORTIMER) kann man durch ein vorangestelltes Minuszeichen MIDI-COM dazu veranlassen, den Spooler-Buffer an den Speicheranfang zu legen. (Beispiel: 20000 => 20000 Bytes am Speicherende; -20000 => 20000 Bytes am Speicheranfang) priblocks: 500 Dieser Wert bestimmt die Gr”že der Datenpakete fr die Druckerumlenkung. Um zu verhindern, daž bei jedem einzelnen Zeichen, das gedruckt werden soll, eine šbertragung ausgel”st wird, sammelt MIDI-COM die Druckausgabe erst einmal in einem 1900 Bytes grožen Puffer. Dieser Sende-Puffer wird bertragen, wenn er entweder voll ist, oder wenn der Time-Out aktiv wird. Durch "priblocks" kann dieser Puffer verkleinert werden. Ein kleiner Wert erzeugt eine schnelle Reaktion des Druckers, verursacht aber viele šbertragungen. Bei einem grožen Wert (maximal 1900) f„ngt der Drucker erst mit einer gewissen Verz”gerung an zu drucken. Eine weitere Verz”gerung kann durch den Time-Out entstehen, da eventuell noch vorhandene Reste in diesem Sendepuffer erst nach dem Time-Out bertragen werden. setsystim: 1 Ist dieser Parameter ungleich 0, so wird bei einem Warmstart das Systemdatum und die Uhrzeit aus dem Tastaturchip bernommen. Dieser beh„lt n„mlich die Zeit auch ber den Bootvorgang hinweg. Bietet Ihr Rechner andere M”glichkeiten, die Zeit nach einem Warmstart neu zu setzen k”nnen Sie diese Option ausschalten. printsema: 0 Steht hier ein Wert ungleich 0, so wird keine Druckumlenkung durchgefhrt. Ist diese Sperre aktiv, sollte man sinnvollerweise auch "prsperren" setzen um Durcheinander auf dem Drucker zu vermeiden. prsperren: 0 bei einem Wert ungl. 0 ist der Drucker fr MIDI-COM unsichtbar, kann daher auch von anderen Rechnern nicht mehr benutzt werden. VIII. MC-CONTR.ACC Diese kleine Zusatz-Accessorie dient zur Einstellung der Druckerauswahl und der Systemzeit. Wie MIDI-COM selbst ist es in allen Aufl”sungen verwendbar. Durch anclicken der entsprechenden Buttons kann man bestimmen, welche Rechner im Ring von MIDI-COM bei der Suche nach einem betriebsbereiten Drucker bercksichtigt werden sollen. Wird "EGAL" selektiert, sind alle anderen Einstellungen bedeutungslos. Man sollte also nicht vergessen, "EGAL" auszuschalten, wenn Einschr„nkungen gemacht werden sollen. Mit einem Click ”ñn auf den Button "einstellen" wird die gewnschte Auswahl an MIDI-COM bergeben und bei der n„chsten Suche nach einem Drucker bercksichtigt. Die Systemzeit und das Datum kann ebenfalls eingestellt werden. Dabei hat man die Auswahl, ob die Systemzeit an alle Rechner im Ring bergeben werden soll oder nur auf dem eigenen Rechner gesetzt wird. Bei der Systemzeit wurde absichtlich auf die Eingabe von Sekunden verzichtet. Diese sind schon durch die šbertragungszeit nicht v”llig Synchron einstellbar. Diese beiden Optionen sind ebenfalls in MC-TALK4.ACC eingebaut. Allerdings funktioniert MC-TALK nicht in kleiner oder mittlerer Aufl”sung und verwendet zus„tzlich 120 KByte Speicher. IX. Programmeinbindung Ursprnglich wurde MIDI-COM entwickelt, um Programme kontrolliert ber die MIDI-Schnittstelle kommunizieren zu lassen. (Artikel in der c't 8/9 91) Einige dieser Optionen sind auch in der 3.x Version noch enthalten. Beachten Sie hierzu auch die Beschreibung der LIBRARY fr Pascal-Programmierer. Die Anwendung der programmspezifischen Optionen ist aber nicht abh„ngig von irgendeiner Programmiersprache. Sollten Sie eigene Anwendungen/Spiele programmieren wollen, stehe ich Ihnen gerne zur Verfgung. Das Telefon im Programm MC-TALK ist nur eine m”gliche Anwendung der direkten Datenbermittlung zwischen Programmen. Weitere denkbare Anwendungen w„ren z.B.: die M”glichkeit, ferngesteuert Hilfprogramme zu starten, die dann praktisch als Batch-Jobs im Hintergrund (auf einem anderen Rechner) laufen. X. Einschr„nkungen 1. Da MIDI-COM nur GEMDOS-Aufrufe abf„ngt und bearbeitet, sind einige Anwenderprogramme nicht in der Lage, auf das Laufwerk M zuzugreifen. Dies betrifft insbesondere die meisten Kopierprogramme, da diese mit Hilfe von BIOS oder XBIOS Aufrufen direkt auf die Sektoren der Laufwerke zugreifen. 2. MIDI-COM darf nicht rekursiv aufgerufen werden. Rekursionen entstehen wenn man z.B.: den Pfad M:/R1/Mx/R1/Ax/... verwendet. 3. Trotz aller Mažnahmen kann es unter bestimmten Umst„nden zu Problemen mit dem Datentr„ger kommen. a) Ein Programm bearbeitet das FAT des Datentr„gers und erlaubt w„hrend dieser Operation Prozežumschaltungen. In diesem Fall droht die Zerst”rung des Datentr„gers, wenn gleichzeitig ber den Ring auf diesen Datentr„ger geschrieben wird. Allerdings ist dies kein Fehler von MIDI-COM sondern auf eine unsaubere Programmierung des entsprechenden Programms zurckzufhren. (Verweis auf "ST-Magazin 11/91 S.74f) b) Ein Programm h„lt eine Datei ge”ffnet, und ber MIDI-COM wird eine Datei gleichen Namens mit FCREATE erzeugt. In diesem Fall erzeugt das Betriebssystem eine zweite Datei mit dem gleichen Namen. Das ist zwar unsch”n, gef„hrdet aber nicht den Datentr„ger. Alle weiteren Schreiboperationen ber MIDI-COM werden aber auf dem schon vorhandenen File ausgefhrt. 4. Die XBIOS-Funktion PRINT-BLOCK wird nicht durch den Ring bedient. Ausserdem ist es nicht m”glich mit ALT-HELP den Bildschirm zu drucken, wenn kein Drucker direkt angeschlossen ist. 5. TOS-Programme blockieren den Ring, da Sie keine Prozežumschaltungen zulassen und dadurch MIDI-COM nicht arbeiten kann. MIDI-COM wurde aus Sicherheitsgrnden (Schreibzugriff auf Datentr„ger) nicht Interrupt-gesteuert. 6. Schreibgeschtzte Disketten oder ein leerer Laufwerksschacht fhren manchmal!! zum Absturz des Rechners nach einem Fremdzugriff. 7. Es k”nnen keine Programme von Laufwerk 'M:' gestartet werden, die resident im Speicher verbleiben sollen, da MIDI-COM nach Programmende den Speicher immer freigibt. (Solche Programme muž man also erst auf einen eigenen Datentr„ger kopieren). 8. Die Funktion "Zeige Info" des Desktops zeigt fr das Laufwerk 'M:' keine sinnvollen Werte an. Dies ist insofern auch nicht verwunderlich, da 'M' ja fr eine Anzahl verschiedener Laufwerke mit unterschiedlichen Formaten steht. 9. Es ist nicht m”glich, die Anzahl der Rechner im Ring zu ver„ndern nachdem sich der Ring einmal installiert hat. Im Eventualfall mssen daher alle Rechner ausgeschaltet werden und anschliežend der Ring mit der neuen Rechnerzahl wieder installiert werden.