Problems that are still present when running MagiC 5 onwards
------------------------------------------------------------

Andreas Kromke
22.4.95/9.6.97
English translation: Peter West, April 99


- It may happen that while booting XCONTROL with DMA background-transfer 
  active one gets the message that insufficient memory is available.
  This is due to the (unfortunately documented) peculiarity of GEMDOS in 
  allocating the whole of the memory to a program during loading. If now 
  the loading process is interruptible (for background-transfer) and if 
  another program requests some meory at the same time, then the above-
  mentioned error will arise. 
  Remedy: Remove the line "#_TSL" from magx.inf and activate pre-emptive 
  multitasking later with the aid of the corresponding CPX module.

- MANVIEW still has some problems with standard file redirection that 
  arises from a chain of unfortunate circumstances:

  1. STDOUT is redirected to a file (handle 7).
     The reference counter for handle 7 is therefore 2.
  2. The file "CON:" is opened in ReadOnly mode in TOS-compatibility mode,
     i.e. in Mag!X "shared read & exclusive write".
     The file handle is 8.
     I have therefore not returned -1 as the file handle, because I wanted 
     to give the many fine programs that use the TOS.H include-file of 
     Pure-C or Turbo-C the possibility to output to a device (most 
     programs declare Fopen and Fcreate as "int").
  3. STDOUT is redirected to file 8.
     The reference counter for handle 7 is 1.
     The reference counter for handle 8 is 2.
  4. Handle 7 is closed twice; because the reference counter is only 1, 
     the second time EINHNDL will be returned.
     Handle 7 is closed.
  5. Handle 7 is opened anew (with a file).
  6. STDOUT is redirected to a file (handle 7).
     The reference counter for handle 7 is therefore 2.
  7. The file "CON:" is opened again. As handle 8 was not closed, EACCDN
     will be returned, but this will be ignored by MANVIEW.
  8. STDOUT will be redirected intelligently to <EACCDN>, which quits 
     Mag!X with EINHNDL, but is again ignored by MANVIEW.
     STDOUT therefore continues to point to handle 7.
     The reference counter for handle 7 therefore remains 2.
  9. To overcome an error in TOS (!), handle 7 is intelligently closed 
     twice. Because the reference counter was 2, this happens without an 
     error message, so the reference counter is 0.
     STDOUT points to the _INVALID_ handle 7.
 10. Handle 7 is opened once more (with a file).
     Now STDOUT points to handle 7 (i.e. to a file), but the reference 
     counter is only 1.
 11. STDOUT is redirected to handle 7.
     For this the previous redirection (which was already handle 7) is 
     closed first, which completely closes handle 7. The new redirection 
     is now invalid, MAG!X again redirects the file to CON:.

  I cannot at present think of a universal solution to overcome this 
  dilemma. If then one also has to take into consideration that to satisfy 
  some completely worn-out TOS versions one has to play some very 
  dangerous games, the whole thing becomes even more problematic.

- Warning: When operating with a parallel-working hard disk driver 
           (HDDRIVER 4.x) one may not use any caching programs such as 
           TCACHE, as these are generally not reentrant.
  Warning: The same applies for SPEEDO-GDOS, this too is not reentrant.

- The internal hardcopy routine for 9-pin Epson printers has been tossed 
  out of the BIOS. In place of the ALT-Help routine, Scrdmp and Prtblk, 
  only dummy routines remain present.
  The bundled program HARDCOPY.PRG installs the hardcopy functions 
  previously integrated into the BIOS. This program can only be started 
  under MagiC. But take care: It does not interrogate the MagiC version, 
  and may not be started under MagiC 2.0 or older 3.0 versions.

- The hack for Tempus has been removed for wind_get(WF_TOP).
  Tempus CAN NOW NO LONGER RUN!!!!!!!! If problems arise, please contact 
  Wilfried.

- At the special request of two individual gentlemen, who are always 
  referred to as a pair, the small cross button in 2D mode is no longer 
  drawn in XOR but in REPLACE mode.
  One should therefore take care that the background is white in 2D mode,
  otherwise there will be problems.

- If the resolution is not suitable for displaying windows with a 3D 
  frame, then the width of the 3D frame will be reduced. Previously all 3D 
  buttons were empty.
  It is highly recommended to switch to 2D display in TT low resolution.

- Reminder: Pipes with mode 4 (pseudo-TTYs) are not supported. MagiC only 
  knows uni- and bi-directional pipes and with mode 4 it creates a bi-
  directional pipe. The main reason for pipes is presently the Drag&Drop 
  protocol. Everything else is still trifling.

- Fsfirst/next can not de-reference relative symlinks if the directory 
  being searched through is not the current one. Background: The antique 
  mechanism of Fsnext() does not permit any inferences to be drawn about 
  the directory in which the search is currently being undertaken and from 
  which the symlink is being followed.
  Remedy: Use absolute symlinks, or even better use Dxreaddir first.
