TRASH.CPX Version 01.05 CPX-Modul der Utility-Serie von mz'91 1. Einleitung TRASH.CPX ist ein nachladbares Modul fr das modulare Kontroll- feld XCONTROL von Atari. Es erm”glicht die Konfiguration eines residenten Treibers, der den Papierkorb des Desktop 'leerbar' macht, also die Restaurie- rung gel”schter Dateien erm”glicht. TRASH.CPX ist ein CPX-Modul der Utility-Serie von mz'91. Diese CPX-Module erm”glichen die Konfiguration der System-Hardware und -Software und im Zusammenspiel mit residenten Programmen einige ntzliche Zusatzfunktionen. Die CPX-Module der Utility-Serie sind fr den Einsatz auf Atari ST-Modellen geschrieben. Auf anderen Atari-Rechnern wurden sie nicht getestet. Einige Funktionen sind von der TOS-Version abh„ngig. Zur Zeit sind folgende CPX-Module verfgbar: DIVERSES.CPX V01.12 (1) -Uhrzeiteinblendung, Alarmzeit, Drucker-Code-Konverter, Bildwiederholfrequenzeinstellung DISK.CPX V01.02 (2) -Steprateneinstellung Laufwerke A und B, Floppy-Write-Verify-Wahl, HD-Parken mittels externem PRG TRASH.CPX V01.05 -Installation eines 'leerbaren Papierkorbs' DESKPIC.CPX V01.14 (3) -Anzeige eines Desktop-Hintergrund- Bildes im DEGAS-Format (1) Uhrfunktion nur fr TOS 1.04 oder Hardwareuhr; Frequenzeinstellung nur fr ST (2) HD-Parkfunktion nur fr reine TOS-Programme geeignet (3) nur fr hohe ST-Aufl”sung (640x400 monochrom) Bezug und Information: Michael Zuhl Transvaalstr. 16 1000 Berlin 65 2. šbersicht ber die mitgelieferten Dateien TRASH.CPX ........ CPX-Modul fr XCONTROL TRASH.PRG ........ residente Treiber fr Papierkorb TRASH.DOC ........ diese Anleitung (WP-Format) TRASH.TXT ........ diese Anleitung (ASCII-Format) 2.1 Beschreibung von TRASH.CPX TRASH.CPX ist ein nachladbares Modul fr das modulare Kontroll- feld XCONTROL von Atari. Es erm”glicht die Konfiguration des mitgelieferten residenten Treibers fr die Installation eines 'leerbaren' Papierkorbs. TRASH.CPX sollte im gleichen Verzeichnis abgelegt werden wie die brigen CPX-Module, damit es beim Booten von XCONTROL in die Liste der verfgbaren CPX-Module bernommen werden kann. TRASH.CPX arbeitet nur im Zusammenspiel mit dem residenten Programm TRASH.PRG (s. dort). TRASH.CPX ist ein CPX-Modul der Utility-Serie von mz'91 und als solches frei kopierbar. Es sollte sinnvollerweise nur mit dem Programm TRASH.PRG und dieser Anleitung weitergegeben werden. Die CPX-Module der Utility-Serie sind fr den Gebrauch mit XCONTROL von Atari auf ST-Systemen konzipiert. Damit unterliegen sie den Einschr„nkungen und Besonderheiten, die Atari in der XCONTROL- Dokumentation aufgefhrt hat (s. dort). Insbesondere strzt der Rechner regelm„žig ab, wenn im Farbbetrieb die Aufl”sung ge„ndert und anschliežend im L”schdialog eine Scroll-Funktion aufgerufen wird, und zwar unabh„ngig davon, ob zuvor (wie von Atari empfohlen) XCONTROL abgeschaltet wurde oder nicht. Die Ursache dieses Verhaltens konnte ich trotz intensiver Suche nicht eruie- ren; daher muž von einem Wechsel der Aufl”sung bei Verwendung von TRASH.CPX / TRASH.PRG abgeraten werden (oder umgekehrt). Da die Farbdarstellung aber zum vernnftigen Arbeiten ohnehin ungeeignet ist, drfte diese Einschr„nkung nicht ins Gewicht fallen. 2.2 Beschreibung von TRASH.PRG TRASH.PRG ist ein residentes Programm, das einen Treiber fr die Benutzung des Desktop-Papierkorbs als 'leerbaren' Papierkorb zur Verfgung stellt, also die M”glichkeit bietet, gel”schte Dateien wieder zu restaurieren. Resident bedeutet, daž sich TRASH.PRG beim Booten in das Betriebssystem einklinkt und bis zum n„chsten Reset bzw. Ausschalten im Speicher verbleibt. Wegen des geringen Speicherbedarfs ist dies auch in Systemen mit geringem Speicher- ausbau nicht problematisch. TRASH.PRG sollte wie alle residenten Programme aus dem AUTO- Ordner heraus beim Booten des Systems gestartet werden; da es auf den Zeitpunkt des Starts aber nicht ankommt, ist (nach Umbenen- nung in TRASH.TOS) auch ein Start vom Desktop aus m”glich. Unter der Betriebssystemerweiterung MiNT muž TRASH.PRG nach MiNT gestartet werden, also z.B. aus MINT.CNF heraus. 2.3 Beschreibung von TRASH.DOC und TRASH.TXT TRASH.DOC und TRASH.TXT enthalten jeweils diesen Anleitungstext. TRASH.DOC liegt im WP-Format vor. Somit kann der Text mit allen Programmen, die das WORDPLUS-Datei-Format verarbeiten k”nnen, gelesen und ausgedruckt werden. TRASH.TXT enth„lt den Text als reine ASCII-Datei ohne Forma- tierungscodes. Dieser Text kann daher mit ASCII-Editoren und direkt vom Desktop aus gelesen und ausgedruckt werden. 3. Bedienungsanleitung 3.1 Bedienung von TRASH.CPX TRASH.CPX wird genauso bedient wie die von Atari mitgelieferten CPX-Module. In der Modul-Liste von XCONTROL tr„gt es sich unter der Bezeichnung 'Trash Utility' ein. Die Funktionen von TRASH.CPX sind auf zwei Dialogboxen verteilt: Hauptdialog ........... Einstellen der Parameter L”schdialog ........... L”schen der Dateien im TrashDir 3.1.1 TRASH.CPX: Bedienung Hauptdialog Die Bedienungselemente des Hauptdialogs von TRASH.CPX sind in fnf Funktionsgruppen unterteilt: Papierkorb-Funktion ... Wahl der Papierkorbfunktion TrashDir-Ordner ....... Einstellen des TrashDir-Ordners L”sch-Icon ............ šbergang zum L”schdialog Information ........... Information ber das CPX-Modul Status-Funktionen ..... Speichern/šbernahme von Žnderungen 3.1.1.1 TRASH.CPX: Hauptdialog / Papierkorb-Funktion Klickt man den Auswahlknopf fr die Papierkorbfunktion an, erscheint ein Popup-Men mit den Eintr„gen 'verschieben' und 'vernichten'. Wird 'verschieben' ausgew„hlt, wird eine Datei, die auf des Papierkorb-Icon des Desktop gezogen oder von einem Programm per Betriebssystemaufruf gel”scht wird, in das TrashDir (s. dort) verschoben und nicht endgltig gel”scht. Gleichwohl wird sie an der ursprnglichen Stelle entfernt. Man kann eine solchermažen 'verschobene' Datei also dadurch wiederherstellen, daž man sie aus dem TrashDir an eine beliebige andere Stelle zurckkopiert. Prinzipbedingt wird auch eine Kopie einer Datei im TrashDir angelegt, die mittels des ab TOS 1.04 verfgbaren Desktop-Verschiebebefehls (CONTROL-Taste beim Kopiervorgang gedrckt halten) verschoben wurde; dies ist aber nicht sch„dlich, das Verschieben wird vom Desktop korrekt ausgefhrt. Klickt man 'vernichten' an, verh„lt sich der Papierkorb wie gewohnt: Dateien, die auf das Papierkorb-Icon gezogen oder von Programmen per Betriebssystemaufruf gel”scht werden, werden un- widerruflich gel”scht. 3.1.1.2 TRASH.CPX: Hauptdialog / TrashDir-Ordner Im Feld TrashDir-Ordner wird der ausgew„hlte Ordner zur Aufnahme der verschobenen Dateien angezeigt. Ist der Pfad l„nger als das Anzeigefeld kann mittels der Scroll-Kn”pfe links und rechts neben dem Anzeigefeld im Pfad gesrollt werden. Hat der Pfad šberl„nge, wird dies durch die Symbole '®' in der ersten bzw. '¯' in der letzen Spalte angezeigt. Klickt man das Pfad-Anzeigefeld an, erscheint eine Dateiauswahl- box. Hier kann ein neuer Ordner als TrashDir-Ordner ausgew„hlt werden. Der bisherige Ordner ist voreingestellt. Wenn man den gewnschten Ordner erreicht hat, klickt man den OK-Knopf an. Die Auswahl einer bestimmten Datei hat keinen Einfluž. Wird der ABBRUCH-Knopf angeklickt, bleibt der alte TrashDir-Ordner erhal- ten. Es ist bei ausreichendem Speicherausbau eventuell ratsam, den TrashDir-Ordner auf einer (vorzugsweise resetfesten) RAM-Disk anzulegen; damit erspart man sich beim Beenden der Arbeit am Rechner das L”schen der ins TrashDir verschobenen Dateien, die man endgltig l”schen m”chte. 3.1.1.3 TRASH.CPX: Hauptdialog / L”sch-Icon Wird dieses Icon (unter links) angeklickt, wechselt man in den L”schdialog, in dem man die ins TrashDir verschobenen Dateien endgltig l”schen kann (s. Bedienung L”schdialog). 3.1.1.4 TRASH.CPX: Information Nach dem Anklicken des Informationsknopfes erscheint eine Infor- mationsbox. Mittels Anklicken des OK-Knopfes oder Drcken der RETURN-Taste gelangt man zurck zum Hauptdialog. 3.1.1.5 TRASH.CPX: Status-Funktionen Diese Funktionsgruppe befindet sich am unteren Rand der Dialog- box. Sie besteht aus drei Auswahlkn”pfen: SICHERN, OK und ABBRUCH. SICHERN speichert die aktuellen Funktionseinstellungen nach Rckfrage im CPX-Modul. Dazu ist es erforderlich, daž sich das CPX-Modul noch im CPX-Verzeichnis befindet. Beim n„chsten Booten des Systems werden dann alle Funktionen so eingestellt wie zum Zeitpunkt des Sicherns. OK bernimmt alle Funktionseinstellungen bis zum n„chsten Reset bzw. Ausschalten des Systems. Das bedeutet, daž die Einstellungen bis zum n„chsten Reset bzw. Ausschalten erhalten bleiben, beim n„chsten Booten jedoch wieder auf die zuletzt gespeicherten Werte gesetzt werden. ABBRUCH verwirft die vorgenommenen Žnderungen der Funktionsein- stellungen und stellt den Zustand wieder her, der vorlag, als TRASH.CPX aufgerufen wurde. Das Anklicken des Schliežknopfes des Kontrollfeldfensters hat, w„hrend man sich im Hauptdialog befindet, die Wirkung von OK; befindet man sich im L”schdialog, hat es die Wirkung von ABBRUCH. Zus„tzlich wird das Kontrollfeldfenster geschlossen. Wenn bei ge”ffnetem Kontrollfeldfenster und aufgerufenem TRASH.CPX die laufende Applikation beendet wird hat das die gleiche Wirkung wie ABBRUCH, nur daž aužerdem das Kontrollfeld- fenster geschlossen wird. 3.1.2 TRASH.CPX: Bedienung L”schdialog Die Bedienungselemente des L”schdialogs von TRASH.CPX sind in drei Funktionsgruppen unterteilt: L”schfunktionen ....... Ausl”sen von L”schfunktionen Dateiauswahl .......... Selektion der zu l”schenden Dateien Ausgang ............... Rckkehr zum Hauptdialog 3.1.2.1 TRASH.CPX: L”schdialog / L”schfunktionen Diese Funktionsgruppe besteht aus zwei Kn”pfen: 'selektiv' und 'alles'. Klickt man auf den Knopf 'selektiv' werden alle Dateien im TrashDir unwiderruflich gel”scht, die zuvor im Dateiauswahlfen- ster selektiert wurden (s. L”schdialog / Dateiauswahl). Ist keine Datei im Auswahlfenster selektiert oder berhaupt keine Datei im TrashDir, ist der Knopf nicht anw„hlbar. Wird der Knopf 'alles' angeklickt, werden nach einer Sicherheits- abfrage alle Dateien im TrashDir unwiderruflich gel”scht. Dateien, die zuvor im Dateiauswahlfenster selektiert wurden (s. L”schdialog / Dateiauswahl), werden bei dieser Funktion NICHT gel”scht. 3.1.2.2 TRASH.CPX: L”schdialog / Dateiauswahl Im Dateiauswahlfenster k”nnen einzelne oder mehrere Dateien selektiert werden, die endgltig gel”scht oder nicht gel”scht werden sollen (s. L”schdialog / L”schfunktionen). Mittels der Pfeile und des Schiebers rechts am Fensterrand kann im TrashDir wie vom Desktop-Dateiauswahlfenster her gewohnt gescrollt werden. Dabei bleiben bereits getroffene Selektionen erhalten. Einzelne Dateien werden mittels Einfachklick auf ihren Eintrag im Fenster selektiert. Bei einem erneuten Klickt auf eine bereits selektierte Datei wird diese deselektiert. Eine selektierte Datei wird in invertierter Schrift angezeigt. Mehrere Dateien kann man selektieren, indem man einen Eintrag anklickt und bei gedrckter Maustaste ber andere Eintr„ge f„hrt. Berhrt man dabei Eintr„ge, die bereits selektiert waren, bleiben diese selektiert. F„hrt man bei gedrckter Maustaste nach oben oder unten aus dem Fenster heraus und gibt es noch weitere Dateien im TrashDir werden diese durch das Fenster gescrollt und ebenfalls selektiert. Hat man zuviele Dateien selektiert kann man bei immer noch gedrckter Maustaste in die Gegenrichtung fahren und dadurch die zuletzt selektierten Dateien wieder deselektie- ren. Man kann sogar wieder ber den zuerst selektierten Eintrag zurckfahren und weitere Dateien in der anderen Richtung selek- tieren; der zuerst selektierte Eintrag bleibt dabei selektiert. Auf gleiche Weise kann man bereits selektierte Dateien deselek- tieren. Die jeweilige Funktion (Selektion/Deselektion) ist dabei vom Status des zuerst angeklickten Eintrags abh„ngig. Zur šbung kann man ruhig mit dieser Funktion experimentieren; solange keine L”schfunktion (s. L”schdialog / L”schfunktionen) ausgel”st wird kann nichts passieren. Alle Selektionen verlieren ihre Gltigkeit, nachdem eine L”sch- funktion (s. L”schdialog / L”schfunktionen) ausgel”st wurde oder wenn der L”schdialog mittels des 'Ausgang'-Knopfes (s. L”schdia- log / Ausgang) verlassen wird. Im Dateiauswahlfenster werden maximal 50 Dateien angezeigt. Im allgemeinen sollte diese Anzahl ausreichen; wenn man mehr als 50 Dateien im TrashDir hat, scheint es an der Zeit, mal wieder auf- zur„umen. 3.1.2.3 TRASH.CPX: L”schdialog / Ausgang Wird der Knopf 'Ausgang' angeklickt gelangt man zurck zum Hauptdialog von TRASH.CPX (s. Bedienung Hauptdialog). 3.2 Bedienung von TRASH.PRG TRASH.PRG hat keine eigentlichen Bedienungselemente. Es ist als AUTO-Ordner-Anwendung konzipiert. Da es nicht auf den Zeitpunkt der Installation ankommt und TRASH.PRG ein reines TOS-Programm ist, kann es auch vom Desktop aus gestartet werden. Es sollte dann jedoch in TRASH.TOS umbenannt werden. Unter der Betriebs- systemerweiterung MiNT muž TRASH.PRG nach MiNT gestartet werden, also z.B. aus MINT.CNF heraus. TRASH.PRG versucht, einen residenten Treiber fr einen 'leer- baren' Papierkorb zu installieren; dabei geben Meldungen Auskunft ber den Stand der Dinge. Was TRASH.PRG macht ist im Abschnitt 'Internes' angegeben. 3.2.1 TRASH.PRG: Meldungen TRASH.PRG gibt w„hrend des Programmlaufs Meldungen auf dem TOS- Bildschirm aus. Zun„chst installiert TRASH.PRG einen Cookie im Cookie-Jar (s. Internes). Tritt dabei ein Fehler auf, wird eine entsprechende Meldung ausgegeben und das Programm abgebrochen. TRASH.PRG ver- bleibt dann nicht resident im Speicher. Anschliežend installiert TRASH.PRG den Treiber fr den 'leer- baren' Papierkorb. Die erfolgreiche Installation wird gemeldet. Der 'leerbare' Papierkorb ist zun„chst ausgeschaltet, d.h. der Papierkorb auf dem Dektop verh„lt sich normal. Die Papierkorb- Funktion kann von TRASH.CPX aus konfiguriert werden (s. dort). Falls der Treiber installiert werden konnte bleibt TRASH.PRG resident im Speicher. 3.2.2 TRASH.PRG: Internes Fr Programmierer oder Interessierte wird in diesem Abschnitt ausgefhrt, wie sich TRASH.PRG ins System einklinkt. TRASH.PRG versucht nach dem Start einen Cookie im Cookie-Jar anzulegen. Dazu wird berprft, ob bereits ein Jar angelegt wurde; wenn nicht legt TRASH.PRG einen Jar fr acht Cookies an und installiert eine Routine im resvector, die bei einem Reset den Cookie-Jar deinstalliert (fr TOS 1.xx erforderlich). Existiert bereits ein Jar, wird untersucht, ob TRASH.PRG bereits installiert wurde; in diesem Fall wird das Programm abgebrochen und bleibt selbstverst„ndlich nicht nochmal im Speicher. Ist TRASH.PRG noch nicht installiert, wird ein neuer Cookie angelegt; ist der aktuelle Jar voll, legt TRASH.PRG einen gr”žeren an. Wenn ein Cookie angelegt werden kann, hat dieser die Kennung (Magic) "MZTR" (0x4D5A5452L). Der Wert (Value) des Cookies enth„lt einen Pointer auf die zentrale Datenstruktur von TRASH.PRG: typedef struct { int trash_status; char trash_dir[128]; int trash_version; } TRASH_INFO; Die Bedeutung der einzelnen Komponenten: trash_status: (R/W) 0 = Dateien l”schen, 1 = verschieben trash_dir: (R/W) TrashDir-Pfad mit Laufwerk und abschliežendem Backslash trash_version: (R/O) hex-Byte-Angabe der Version 1.Byte Hauptrev. / 2.Byte Unterrev. Nach dem Anlegen des Cookies verbiegt TRASH.PRG den TRAP#1-Vektor (GEMDOS) auf den Papierkorb-Treiber. Das XBRA-Protokoll ist implementiert; die XBRA-ID lautet "MZTR". Der Treiber f„ngt, wenn er aktiviert wurde, Ddelete()-Aufrufe ab und verschiebt die entsprechende Datei ins TrashDir. Dabei k”nnen mehrere Fehler auftreten, die im folgenden n„her erl„utert werden: Zun„chst wird geprft, ob die betreffende Datei berhaupt vorhan- den ist; wenn nicht, wird an dieser Stelle der Fehlercode '-33' zurckgeliefert. Danach wird geprft, ob die Datei den 'nur lesen'-Status hat (Fehlercode '-36'). Anschliežend wird per Malloc() Speicher zur Aufnahme der Datei angefordert. Reicht der Speicher nicht aus, wird ebenfalls ein Fehler gemeldet ('-39'). Dann wird die Datei in den Speicher eingelesen. Auftretende Fehler werden mit dem entsprechenden Fehlercode gemeldet. Wenn die Datei eingelesen wurde, wird sie ins TrashDir zurckgeschrie- ben und danach wird der Speicher wieder freigegeben. Eventuelle Fehler werden wie beschrieben gemeldet. In der aktuellen Version von TRASH.PRG (V 01.05) ist es kein Fehler, wenn bereits eine Datei gleichen Namens im TrashDir existiert; diese wird dann von der aktuellen Datei berschrieben. Diesem Verhalten liegt die Philosophie zugrunde, daž es aus- reicht, jeweils die letzte gel”schte Version einer Datei fr eine eventuelle Restaurierung vorzuhalten. Aužerdem wrde sonst das TrashDir unter Umst„nden sehr schnell anwachsen. Schliežlich wird die Datei am Ursprungsort gel”scht. Nachdem die Installation abgeschlossen ist, verbleibt TRASH.PRG komplett im Speicher (mittels Ptermres). TRASH.PRG wurde vollst„ndig in Assembler geschrieben (Pure Assembler, ASH) und TRASH.CPX in PureC (auch ASH). 4. Copyright und Haftungsausschluž TRASH.CPX und TRASH.PRG wurden entwickelt von Michael Zuhl Transvaalstr. 16 1000 Berlin 65 Einige Anregungen, Ideen und Tricks wurden folgenden Quellen ent- nommen: - CPX-Programmierung: "CPX - Dem variablen Kontrollfeld auf der Spur", Serie in ST-Computer 3-5/91 + 9/91, Uwe Hax und Oliver Scholz - Cookiejar-Prinzip: "STee-Geb„ck - Das Cookie-Jar-Prinzip", in ST-Computer 12/90, Rolf Kotzian "Vorhang auf fr die Keksdose", in ST-Magazin 3/90, Julian F. Reschke - XBRA-Protokoll und berhaupt: Atari ST Profibuch, Jankowski/Rabich/Reschke, SYBEX-Verlag, 10. Auflage 1991 Die CPX-Module der Utility-Serie von mz'91 (also auch TRASH.CPX und TRASH.PRG) sind Freeware, d.h. sie drfen kopiert und weitergegeben werden, solange dies nicht kommerziell geschieht; davon ausgenommen ist lediglich die Verbreitung ber PD-Disket- ten, solange diese gegen einen geringen Unkostenbeitrag abgegeben werden. Obwohl bei der Programmierung alle Sorgfalt gebt wurde und TRASH.CPX und TRASH.PRG bei mir fehlerfrei laufen (s. Einschr„n- kung im Farbbetrieb unter 'Beschreibung von TRASH.CPX'), kann ich keinerlei Garantie oder Haftung bernehmen, weder fr die angege- benen Funktionen noch fr irgendwelche eventuell aus dem Gebrauch dieser Programme entstehenden Folgesch„den. Der Einsatz dieser Programme erfolgt ausschliežlich auf eigenes Risiko. TRASH.CPX V01.05 TRASH.PRG V01.05 10.09.92 mz'91