(\/) 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 k”nnen 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 m”glich 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, k”nnen 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