(\/) WINXnnn v1.3 - ein Multi-Window-Hack
=========================================
von Martin Osieka, Erbacherstr.2, 6100 Darmstadt (momentan Maus@MZ)


Kurzbeschreibung
----------------
WINX ist eigentlich nichts als ein grosser Patch an der Fenster-
verwaltung des GEM (Na gut es trifft auch den Eventmanager, das 
Desktop, etc.; es geht eben nichts ueber die sorgfaeltige Programmierung
des TOS) (ich hoffe keiner denkt jetzt, dass das ironisch gemeint war).
GEM-Applikationen knnen jetzt mehr Fenster vom GEM anfordern (mit
Fensterkennungen > 7). Die Maximalzahl moeglicher Fenster liegt bei
127 (dies ist eine praktische und keine technische Grenze).
Leider basieren etliche Programme auf der Annahme, da maximal
7 Fenster mglich sind. Das dies nicht notwendig ist zeigt z.B. die
GEMINI-Shell.

Voraussetzungen
---------------
ATARI mit Original TOS 1.04 [GER] im ROM

Installation
------------
WINXnnn.PRG in den AUTO-Ordner kopieren. Die Anzahl der GEM-Fenster
kann durch umbenennen definiert werden (z.B. WINX16.PRG entspricht
16 GEM-Fenstern).

Aufruf
------
Durch seine Position im AUTO-Ordner wird WINX automatisch bei jedem
Reset ausgefuehrt. Haelt man beim Programmstart die linke SHIFT-Taste
gedrueckt wird die Ausfuehrung nochmals abgefragt. Ist beim Programm-
ende die rechte SHIFT-Taste gedrueckt, wartet das Programm bis diese
losgelassen ist. (Die letzten beiden Punkte sind ->TKR spezifisch).

Copyright
---------
Freeware, solange Programm und dieser Text gemeinsam weitergegeben
werden. 

Warnungen
---------
Dieses Programm manipuliert GEM auf 'schmutzige' Art und Weise, d.h.
es werden interne GEM-Funktionen und Variablen manipuliert (Der
'Reinheitsgrad' entspricht ungefaehr dem des Programms TOS14FIX
minus zwei). Trotz aller Sorgfalt bei der Entwicklung und den
anschliessenden Tests muss man bedenken, dass dieses Programm auf
einer Rueckuebersetzung des GEM beruht. GEM selbst ist zwar gegliedert,
aber nicht strukturiert. Da kann man schon leicht etwas uebersehen.
Die Benutzung erfolgt daher auf eigene Gefahr (besonders im
Zusammenhang mit anderen 'schmutzigen' Programmen).

Bekannte Probleme
-----------------
TOS14FIX muss nach WINX aufgerufen werden.
Programme, die die Fensterkennung intern zur Indizierung eines Feldes
benutzen, knnen bei Kennungen > 7 Probleme machen.
Die Berechnung der maximal sichtbaren Bildschirmrechtecke ist pimal-
daumen. Mit gebrochenem Informatikerherzen muss ich gestehen, dass
mir dafuer bis heute kein mathematischer Beweis gelungen ist
(aber keine Bange, es geht hier um Extremfaelle).

Ausblick
--------
In der internen Verwaltung der GEM-Fenster gibt es in allen bisherigen
TOS-Versionen (<= 3.05) keinen  prinzipiellen Unterschied. Die
aktuelle Art der Programmeinbindung funktioniert aber nur mit 
TOS-Versionen < 1.06. Alle anderen muesste man direkt patchen (Im TT
waere das in Verbindung mit einer schnellen RAM-Kopie sinnvoll). 
Das ganze ist ein Zeit-/Nachfrage-Problem.
Schoen waere es, statt einem Patch, den Windowmanager komplett neu
zu schreiben (dies scheitert an den bloedsinnigen Verzahnungen zu
den anderen Managern)

Rueckmeldungen
--------------
Vorallem bei Fehler erwuenscht

Speicherbedarf
--------------
~6 KBytes + (Anzahl_Fenster*328) Bytes
(z.B. bei 16 Fenstern 6 KB + 5248 B = 11 KB)
Hinzu kommt eventuell noch der Speicherbedarf fuer ein neues Cookiejar.

Geschwindigkeit
---------------
Da das Programm nur spezielle Funktionen in der AES-LineF-Tabelle
ersetzt sinkt die Geschwindigkeit des Gesamtsystems nicht! Natuerlich
belastet aber jedes offene Fenster mehr das GEM.

Cookies
-------
Das Programm installiert das Cookie WINX mit einem Zeiger auf eine
interne Struktur. Reicht der Speicherbedarf des Cookiejar nicht wird
ein groesserer installiert und eine 'unjar'-Routine in den Reset-
vektor gehaengt (beides mit XBRA).

Systemvektoren
--------------
Der LineF-Vektor wird auf eine eigene Routine verbogen (ohne XBRA).

Patches
-------
Natuerlich sollte man jedes gute Patchprogramm patchen koennen.
Folgende Defaultwerte (hinter der Copyright-Kennung "@(#)WINX")
koennen mit einem Monitor im Programm veraendert werden:
  WIN=?? Anzahl Fenster (falls nicht im Dateiname definiert)
  JAR=?? Anzahl Eintraege um die Cookiejar vergroessert wird
         (falls die aktuelle Groesse nicht ausreicht)
Jeder Wert ist 16 Bit gross.

TKR
---
WINX ist ein TKR-Programm und besteht aus einem TKR-Caller in den
das TKR-Modul 'WINX.TKR' eingefuegt ist. Das TKR-Konzept sieht vor,
dass Programme (TKR-Module) die residenten Speicher benoetigen, diesen 
von einem anderen Programm (dem TKR-Caller) bereitgestellt bekommen.
Dadurch kann sich das TKR-Modul auf seine eigentliche Aufgabe
konzentrieren und ist doch sicher minimal Speicher zu verbrauchen.
(TKR - Terminate and Keep Resident). Der hier benutzte TKR-Caller
kann beliebig viele TKR-Module und andere Programme enthalten.

Entwicklungswerkzeuge
---------------------
MAS  Assembler aus dem TurboC-Profipaket
TKR  Toolkit zur Realisierung residenter Programme
MORETA  Restruktor von Programmen

Abschied
--------
Dieser Text ist jetzt groesser als das Programm. Bevor er mir meine
Platte sprengt beende ich ihn lieber.

Auf das sich euch immer soviele Fenster auftuen moeget, wie es euren
geheimen Wuenschen entspricht.

Gruss       (\/)  Martin Osieka


