noch vorhandene Probleme beim Betrieb von MagiC 3
-------------------------------------------------

Andreas Kromke
22.4.95


- Es kann vorkommen, da bei aktiviertem DMA-Hintergrundtransfer beim Booten
  von XCONTROL die Meldung kommt, da zuwenig Speicher vorhanden ist.
  Verantwortlich dafr ist die (leider dokumentierte) Eigenschaft des GEMDOS,
  einem Programm beim Laden den gesamten Speicher zuzuteilen. Ist nun der
  Ladevorgang unterbrechbar (wg. Hintergrundtransfer) und fordert gleichzeitig
  ein anderes Programm Speicher an, gibt es den entsprechenden Fehler.
  Abhilfe: Die Zeile "#_TSL" aus magx.inf entfernen und das prae-emptive
  Multitasking erst mit Hilfe des CPX-Moduls aktivieren.

- MANVIEW hat noch einige Probleme mit der Standarddatei-Umlenkung, die eine
  Verkettung unglcklicher Umstnde sind:

  1. STDOUT wird auf eine Datei (Handle 7) umgelenkt.
     Der Referenzzhler fr Handle 7 ist also 2.
  2. Die Datei "CON:" wird im Modus ReadOnly im TOS- Kompatibilittsmodus
     geffnet, d.h. in Mag!X "shared read & exclusive write".
     Das Dateihandle ist 8.
     Ich habe deshalb nicht -1 als Dateihandle zurckgegeben, weil ich den
     vielen genialen Programmen, die die geniale Pure-C oder Turbo-C Include-
     Datei TOS.H verwenden, die Mglichkeit zu geben, auf ein Gert
     auszugeben (die meisten Programme deklarieren Fopen und Fcreate als
     "int").
  3. STDOUT wird auf die Datei 8 umgelenkt.
     Der Referenzzhler fr Handle 7 ist 1.
     Der Referenzzhler fr Handle 8 ist 2.
  4. Handle 7 wird zweimal geschlossen, da der Referenzzhler nur 1 ist, wird
     beim zweiten Mal EINHNDL zurckgegeben.
     Handle 7 ist geschlossen.
  5. Handle 7 wird neu geffnet (mit einer Datei).
  6. STDOUT wird auf eine Datei (Handle 7) umgelenkt.
     Der Referenzzhler fr Handle 7 ist also 2.
  7. Die Datei "CON:" wird noch einmal geffnet. Da Handle 8 nicht
     geschlossen wurde, wird EACCDN geliefert, jedoch von MANVIEW ignoriert.
  8. STDOUT wird intelligenterweise nach <EACCDN> umgelenkt, was Mag!X mit
     EINHNDL quittiert, aber von MANVIEW wieder ignoriert wird.
     STDOUT zeigt also weiterhin auf Handle 7.
     Der Referenzzhler fr Handle 7 bleibt also 2.
  9. Um einen Fehler im TOS (!) zu umgehen, wird intelligenterweise das
     Handle 7 zweimal geschlossen. Weil der Referenzzhler 2 war, geht dies
     ohne Fehlermeldung ab, der Referenzzhler ist 0.
     STDOUT zeigt auf das _UNGLTIGE_ Handle 7.
 10. Handle 7 wird neu geffnet (mit einer Datei).
     Jetzt zeigt STDOUT auf Handle 7 (also auf die Datei), aber der
     Referenzzhler ist nur 1.
 11. STDOUT wird auf Handle 7 umgelenkt.
     Dazu wird erst die bisherige Umlenkung (war schon Handle 7) geschlossen,
     dabei wird Handle 7 vllig geschlossen. Die neue Umlenkung ist jetzt
     ungltig, Mag!X lenkt die Datei wieder nach CON: um.

  Um das Dilemma zu umgehen, fllt mir z.Zt. keine Universallsung ein. Wenn
  man dann noch bercksichtigen mu, da zur Befriedigung irgendwelcher vllig
  maroden TOS- Versionen noch gefhrliche Spielchen getrieben werden, wird
  das ganze noch etwas problematischer.

- Wilfried hat noch einen Fehler berichtet, der in gleicher Form jedoch auch
  in MagiC 2.00 vorhanden ist. Whlt man ber das Popup die Dateiauswahlbox,
  whrend irgendein Programm Plattenzugriffe mit Fsfirst/-next macht, gibt es
  mit ziemlicher Sicherheit einen Absturz. Verantwortlich ist der statische
  DTA- Puffer und die Tatsache, da der SCRENMGR, der die Dateiauswahl
  aufruft, kein eigener Proze ist.
  Abhilfe: Zur Zeit keine, das Problem liegt tiefer. Kritisch wird es auch,
           wenn ein Proze terminiert, whrend die Dateiauswahl geffnet
           ist. Der SCRENMGR ist praktisch ein Thread des aktiven Prozesses.

- Achtung: Beim Betrieb mit parallel arbeitendem Plattentreiber (HDDRIVER
           4.x) drfen keine Cache-Programme wie TCACHE verwendet werden,
           weil sie i.a. nicht reentrant sind.
  Achtung: Das gleiche gilt fr SPEEDO-GDOS, auch dieses ist nicht reentrant.

- Fxattr und D(x)readdir liefern fr FAT-Dateisysteme jetzt folgende
  Index-Daten:

   Verzeichnisse:    Startcluster im Motorola- Format
   sonstige Dateien: Hiword = Startcluster des Verzeichnisses
                     Loword = Position innerhalb des Verzeichnisses >> 5

  Das Verfahren ist hnlich wie das, das Linux und Solaris verwenden.
  Nachteil ist, da Dateien beim Verschieben ihren Index ndern.

- Die Floppy wird wie in TOS 3.06 brutal deselektiert, auch wenn sie
  definitiv behauptet, der Motor laufe nicht.
  Damit geht das Lmpchen bei jedem Floppytyp beim Booten aus, auch wenn keine
  Diskette eingelegt war.
  Auf die Funktionalitt der Floppyroutinen hat das natrlich berhaupt
  keinen Einflu.

- Nach einigen Problemen mit NVDI 3.0 habe ich den Supervisorstack pro
  Applikation von 4k auf 5k erhht.
  Zustzlich wird alle 5ms eine berprfung durchgefhrt, ob der Stack der
  aktuellen Applikation bergelaufen ist, und fr diesen Fall das System mit
  der Meldung "Fataler Fehler im AES" angehalten.
  Leider gibt es noch keine Mglichkeit, Sektorpuffer vorher
  zurckzuschreiben oder hnliches.

- Die interne Hardcopyroutine fr 9-Nadel-Epsondrucker ist aus dem BIOS
  rausgeflogen. Statt der ALT-Help-Routine, Scrdmp und Prtblk sind nur noch
  Dummy-Routinen vorhanden.
  Das beiliegende Programm HARDCOPY.PRG installiert die bisher im BIOS
  integrierten Hardcopy-Funktionen. Das Programm lt sich nur unter MagiC
  starten. Aber Achtung: Es hat keine Abfrage auf die MagiC- Version und darf
  unter MagiC 2.0 oder lteren 3.0- Versionen nicht gestartet werden.

- Bei wind_get(WF_TOP) den Hack fr Tempus entfernt.
  Tempus KANN JETZT NICHT MEHR LAUFEN!!!!!!!! Bei Problemen bitte an Wilfried
  wenden.

- Der Shutdown-Mechanismus von MultiTOS wurde implementiert. MAGXDESK ruft
  bei Anwahl von "Datei/Ende" das Programm shutdown.prg auf, das in
  \GEMSYS\GEMDESK liegen mu. Programme mssen (!!) folgendes tun:

    shel_write mit doex = 9 machen, um dem AES zu sagen, da sie AP_TERM
    verstehen.
    Bei AP_TERM terminieren, sonst AP_TFAIL schicken.
    Rest siehe MTOS-Doku.

  Laut MTOS-Doku schickt MTOS das AP_TERM nur an solche Prozesse, die
  explizit AP_TERM verstehen.

  LEIDER MACHT KEIN EINZIGES MIR BEKANNTES PROGRAMM DEN SHEL_WRITE MIT MODUS
  9!!!!!!!!!!!!!!!!!!!!!!
  GENAUSO VERSCHICKT NIEMAND AP_TFAIL!!!!!!!!

  Deshalb wird das ganze witzlos. Es wird daher an alle Applikatione AP_TERM
  verschickt. Shutdown bekommt die Nachricht SHUT_COMPLETED, wenn kein
  Programm mehr da ist, das AP_TERM versteht. Also: Sofort, denn es versteht
  kein Programm AP_TERM. Shutdown gibt den restlichen Applikationen noch 3s
  Zeit, sich zu beenden, dann gibt es Fehlermeldungen. In shutdown.inf kann
  man Applikationen eintragen, die unkritisch sind und nicht terminiert zu
  werden brauchen.

- Auf besonderen Wunsch zweier einzelner Herrn, die immer paarweise genannt
  werden, wird der Kreuzchenbutton im 2D- Modus nicht mehr im Modus XOR,
  sondern REPLACE gezeichnet.
  Es ist daher darauf zu achten, da im 2D-Modus der Hintergrund wei ist,
  sonst gibt es Grtze.

- Ist die Auflsung ungeeignet, um Fenster mit 3D-Rahmen darzustellen, wird
  die Breite des 3D-Rahmens verkleinert. Vorher waren smtliche 3D-Buttons
  leer.
  Es wird dringend empfohlen, in TT low auf 2D-Darstellung zu schalten.

- Die ruckelige Ausgabe von MGFORMAT bei deaktiviertem Hintergrundbetrieb
  liegt daran, da ich kein appl_yield mehr mache und FORMAT.OVL nicht
  gengend Rechenzeit fr MGFORMAT.PRG briglt.
  Richtige Betriebssysteme machen eben Hintergrundbetrieb bei Floppies. Alles
  andere ist kalter Kaffee.

- Erinnerung: Pipes mit Modus 4 (Pseudo-TTYs) werden nicht untersttzt. MagiC
  kennt nur uni- und bidirektionale Pipes und erstellt bei Modus 4 eine
  bidirektionale Pipe. Der Hauptgrund fr Pipes sind zur Zeit das Drag&Drop-
  Protokoll. Alles andere ist noch Spielerei.

- Fsfirst/next knnen keine relativen Symlinks dereferenzieren, wenn das
  durchsuchte Verzeichnis nicht das aktuelle ist. Hintergrund: Der
  altertmliche Mechanismus lt bei Fsnext() keine Rckschlsse auf das
  Verzeichnis zu, in dem gerade gesucht wird und von dem aus der Symlink
  verfolgt wird.
  Abhilfe: Absolute Symlinks oder noch besser gleich Dxreaddir verwenden.
