Komfortables Parken...

Komfortables Parken der Festplatte, Bekanntlich fahren die ATARI-Festplatten die Schreib-/Leseköpfe nach Abschalten nicht automatisch in die Parkposition. Durch Ein- und Ausschalten gelangen die Köpfe also in Berührung mit der Platte, was einer langen Lebensdauer der Platte höchst abträglich ist.

Das von ATARI mitgelieferte Programm SHIP.PRG kann sinn voller weise nur von der Diskette gestartet werden, und das auch nur, wenn zuvor alle Fenster mit Festplattendirectories auf dem Desktop geschlossen worden sind. Dies ist einigermaßen zeitaufwendig und für die Praxis nicht tragbar.

Naheliegend wäre die Programmierung eines Accessories. das - ohne das Desktop zu verändern. d.h. keine Plattenzugriffe zu provozieren - die Festplatte parkt. Nur ist mir nicht bekannt, wie der entsprechende Befehl auszusehen hat, auch bräuchte man dafür wohl einen Assembler.

Die Lösung dieser Probleme ist das vorliegende Programm. LÖGOFF.PRG ruft im Prinzip lediglich SHIP.PRG auf, das im selben Directory stehen muß. Anschließend erfolgt eine Meldung über den Erfolg des Programmes (Festplatte geparkt oder SHIP.PRG nicht gefunden).

Die Vorteile sind:

Bewahren Sie LOGOFF.PRG zusammen mit SHIP.PRG in dem Directory (bzw. den Directories) auf, in denen Sie i.d.R. arbeiten, also ein geöffnetes Fenster auf dem Desktop liegen haben. Zum Beenden der Arbeit genügt ein einfacher Aufruf von LOGOFF .PRG.

	{$S10} { 10k Arbeitsspeicher für dieses Programm 
				sollten genügen }

	PROGRAM logoff;

	{ Programm zum Parken der Festplatte vor dem Ausschalten der Geräte;
		SHIP.PRG muß im selben Directory wie LOGOFF.PRG stehen.
		Vorteil gegenüber der alleinigen Verwendung von SHIP.PRG:
		LOGOFF.PRG kann von der Festplatte geladen werden, Fenster auf
		dem Desktop brauchen nicht geschlossen werden.

		erstellt mit ST Pascal plus V2.02 von CCD,
		(c) Hartmut Thordsen, im Marz 1988 }

	{$I GEMGLOB.PAS}

	{ Dieses Includefile ist eine Zusammenfassung von GEMCONST.PAS,
		GEMTYPE.PAS und GEMSUBS.PAS - dadurch sind bei Compilierung 
		von GEM-Programmen weniger Plattenzugriffe notwendig.

		Die Platte wird ein wenig geschont, der Compilerzyklus wird 
		beschleunigt. }

	LABEL 	1;	{	Errorlabel	}
	CONST 	ship_program	=	'\SHIP.PRG';
	VAR 	drive, done, dummy	:	INTEGER;
			path_buffer, 
			commandline,
			environment	:	C_String;
			path		:	Path_Name;
			s			:	Str255;

	FUNCTION gemdos_get_drive : INTEGER;
		GEMDOS ($19);

	PROCEDURE gemdos_get_path (VAR pathbuf : C_String; 
		drive : INTEGER);
		GEMDOS ($47);

	FUNCTION gemdos_execute (mode : INTEGER; VAR path, 
		com, env : C_String)
		: INTEGER;	GEMDOS ($4B);
	PROCEDURE CtoPstr (Cstr : C_String; VAR Pstr :
		STRING); EXTERNAL;
	PROCEDURE PtoCstr (Pstr : STRING; VAR Cstr : C_String);
		EXTERNAL;
		{ Konverter-Routinen werden aus PASTRIX gelinkt }

	BEGIN
	{ — GEM initialisieren }
	IF Init_Gem < 0 THEN 
		GOTO 1;

	{ - Directory und Pfad zu SHIP.PRG generieren } 
	drive : = gemdos_get_drive;
	gemdos_get_path (path_buffer, Succ(drive));
	CtoPstr (path_buffer, path);
	path := Concat (chr(drive+65), ':', path,ship_program);
	
	{ — SHIP.PRG aufrufen }
	PtoCstr (path, path_buffer); 
	commandline[0] := chr(0);
	environment[0] := chr(0); { Parameter ohne Bedeutung} 
	done := gemdos_execute (0, { Programm laden und starten }
			path_buffer, commandline, environment);

	{ — Ergebnis des Aufrufs melden }
	IF done = -33 THEN
		s := Concat (' [3] [...', ship_program, '|nicht gefunden. |' ,
		'Festplatte ist|nicht gesichert !][ Ok ]') 
	ELSE 
		s :=' [0][Festplatte geparkt.| |Geräte bitte jetzt|abschalten.][ Nein ]';
	dummy := Do_Alert (s, 0);
	Exit_Gem;

1:
END.

Hartmut Thordsen



Aus: ST-Computer 11 / 1988, Seite 70

Links

Copyright-Bestimmungen: siehe Über diese Seite