Dieser Text beschreibt, wie man mit ANUBIS Onlineprogramme verwendet, die nur mit STDIO laufen. Leider sind das so ziemlich die Besten und Nützlichsten, wie zum Beispiel JBPFish, SPACEDOOR, Hack&Slash und und und. Ausserdem wird dadurch das Herstellen von Onlineprogrammen kein Problem mehr. Alle Ausgaben werden einfach nach STDOUT geschickt, und schon läuft die Sache. Keine umständlichen Unterscheidungen zwischen Lokal und Seriell. Im Großen und Ganzen also ganz nützlich. Es gibt allerdings einen Pferdefuß: Man kann lokal nicht beobachten, was der User Online macht. So, wer schon weiss wie das geht, oder wer weiß wie es viel einfacherer und schöner geht, der möge mich das doch bitte wissen lassen, alle anderen herschauen :-) Ein StdIO Onlinespiel zu starten ist zunächst mal kein Problem: Ein NEWSHELL AUX: from Start.s erlaubt es einem externen User das Programm zu verwenden. Das Problem ist nun, daß NEWSHELL nach dem Erzeugen der Shell zurückkehrt. Dann will ANUBIS natürlich die Serielle wiederhaben, kriegt sie aber nicht, weil ja AUX: sie hat, und führt einen RESET aus. Man darf ANUBIS also erst die Kontrolle überlassen, wenn das Onlineprg. fertig ist. Meine Lösung dieses Problems besteht aus 2 Skripten, einem RexX-Skript und einem Batchfile. Das RexX-Script wird von Anubis als Onlineprg aufgerufen, da der RexX-Interpreter sich nicht abkoppelt. In dem RexX-Skript wird dann die User-Datei ausgewertet und das Batchfile aufgerufen, das im Endeffekt das Onlineprg startet. Das Ganze funktioniert nun so, daß die Batchdatei dem RexX-Skript mitteilt, wann es beenden darf. Das geschieht mit Hilfe einer Environment-Variable, nämlich $USER. Diese wird vom Batch nach Beendigung des Programmes gelöscht. Das RexX-Skript kriegt das dann innerhalb von 2 Sekunden mit und beendet. Die Installation erkläre ich mal am Besten anhand des Onlineprogrammes Hack&Slash (H&S): Erst mal der Eintrag in ANUBIS:DATEN/ONLINEPRG 8X------------------------------------------------------------------ . : Hack&Slash,sys:rexxc/rx OlPrg:Hack&Slash.rexx,3,Fantasy Rollenspiel . : 8X------------------------------------------------------------------ (OLPRG: zeigt bei mir auf ANUBIS:ONLINEPRG) Nun zur Datei Hack&Slash.rexx: 8X------------------------------------------------------------------ /* */ options results op = open(file, "ram:userparam", "R") if op THEN DO RATE = ReadLn(file); /* Userparameter auswerten */ user = Readln(file); level = Readln(file); Zeit = Readln(file); maxzt = Readln(file); status = Readln(file); ansi = Readln(file); ADDRESS COMMAND "SETENV USER "user /* Environment Variable setzen */ if status == 1 then /* Lokal Login? */ ADDRESS COMMAND "newshell RAW:0/0/670/216/Hack&Slash from olprg:Hack&Slash.s" else /* External Login */ ADDRESS COMMAND "newshell AXAUX:serial.device/0/7wire/speed38400/con from olprg:Hack&Slash.s" DO WHILE Exists("env:USER") /* Abfragen der USER Variable */ ADDRESS COMMAND "wait 2 secs" END ADDRESS COMMAND "wait 2 secs" /* 2 Sekunden warten, damit SERIELLE */ /* auch wirklich frei ist */ Close(file) /* Userparameter Datei schliessen */ END 8X------------------------------------------------------------------ Wer seine Mailbox mit 19200 oder weniger fährt kann statt AXAUX: auch die normale AUX: verwenden. Da muss allerdings in den Serial-Prefs alles eingestellt werden. Die AXAUX: ist Teil des AXSH-Paketes. Wer es braucht: INTEL OUTSIDE 06838/84739 oder auf SAAR AG Disketten. Evtl. war es auch auf Fish-Disks. Da ich ANUBIS mit 38400 betreibe, habe ich die AXAUX: installiert. vor allem, weil ich dort zwischen RAW (ungepuffert) und CON (gepuffert) unterscheiden kann. SPACEDOOR läuft zum Beispiel nicht mit gepufferter StdIO. Dort muss bei NEWSHELL das CON gegen RAW getauscht werden. Im Zweifelsfalle sowas immer ausprobieren. Das obige REXX Skript erzeugt nun also die ENV-Var USER, und legt dort auch den USERNamen ab. Die Batchdatei, die dann von NEWSHELL aufgerufen wird: 8X------------------------------------------------------------------ echo >>anubis:statistik/Hack.log `date` login $USER OLPRG:H&S/Hack&Slash $USER echo >>anubis:statistik/Hack.log `date` logout $USER UNSETENV USER UNSETENV USER UNSETENV USER UNSETENV USER UNSETENV USER UNSETENV USER UNSETENV USER UNSETENV USER ENDCLI 8X------------------------------------------------------------------ Die vielen UNSETENV habe ich drin, weil es bei mir schon vorkam, daß die Variable beim ersten mal nicht gelöscht wurde. Wahrscheinlich liegt das daran, daß in dem Moment das REXX-Skript versucht hat, darauf zuzugreifen und deswegen die Variable nicht gelöscht werden konnte. Bei mir (68030er) langen die UNSETENVs aus. Bei langsameren Prozessoren muessen evtl ein paar mehr hin. Jajaja, ich weiss das ist ein furchtbarer Hack..... So nebenbei, damit die USER Variable nicht ganz wertlos ist, wird noch ein Logfile geführt. So, das wars. Wer damit noch Probleme hat, oder Tips, wie man das besser machen könnte: Mail an mich. Tschau Thomas (S.A.U.G. e.V. - Saarbrücker Amiga User Group)