Quick-Tips

Desktop, wechsle Dich!

Wer einen ATARI der STE-Version besitzt, hat sich bestimmt schon über die Tatsache gefreut, daß er endlich Icons auf dem Desktop ablegen kann. Wer seinen Bildschirm nun so richtig voll hat (nicht im übertragenen Sinne), auf kein Icon verzichten will und sich den Rechner auch noch mit jemandem teilen muß, der völlig andere Programme benötigt, hat sich bestimmt schon ein zweites Desktop gewünscht. Diese Idee habe ich mit einem kleinen Programm realisiert, das die NEWDESK.INF-Datei in einen beliebig wählbaren Namen umbenennt und eine andere Datei in NEWDESK.INF.

Für den Namen der inaktiven Datei wählt man z.B. das Anwendungsgebiet z.B. GRAFIK.INF etc. Die Dateinamen und die Namen der beiden Benutzer werden in der Datei DWECHSEL.PAR gespeichert, die sich jeder nach folgendem Schema frei erstellen kann:

z.B.:

C:\TEXTVER.INF
User1 aktiv
User 1
C:\GRAFIK.INF
User2 aktiv
User 2

Die Datei muß in jedem Fall DWECHSEF.PAR heißen und sich zusammen mit DWECHSEL.PRG im AUTO-Ordner des Boot-Laufwerks befinden. Damit das Programm funktioniert, müssen bereits eine Datei NEWDESK.INF und eine der in der PAR-Datei genannten im Wurzelverzeichnis des Boot-Laufwerks existieren. Das Programm zeigt dann den momentanen Status an. Da der Programmaufbau recht einfach ist, läßt sich das Programm auf beliebig viele weitere Benutzer erweitern

M. Eisenhardt

' Desktop-Wechsler by Matthias Eisenhardt 
' (c)1992 by MAXON-Computer
'
$10000				!Speicher reservieren.
OPEN "I",#1,CHR$(GEMDOS(25)+ 65)+":\AUTO\WECHSEL.PAR" 
INPUT #1,pfadl$		!aus
INPUT #1,messagel$	!PARameter-Datei
INPUT #1,benutzer1$	!einlesen.
INPUT #1,pfad2$		!
INPUT #1,message2$	!
INPUT #1,benutzer2$	!
CLOSE				!
IF EXIST(pfad1$) THEN	!Prüfen, welche der
	status$=LEFT$(message1$,25) !beiden angegebenen 
ELSE IF EXIST(pfad2$)	!INF-Dateien aktiviert
	status$=LEFT$(message2$,25) !ist und Status ein-
ENDIF				!tragen.
CLS
PRINT AT(6,9);"|---------------------|"
PRINT AT(6,10);"|  Desktop-Status:    |"
PRINT AT(6,11);"|                     |"
PRINT AT(6,12);"|"+SPACE$(13-(LEN(status$)/2))+ status$+SPACE$(13-(LEN(status$)/2))+"|"
PRINT AT(6,13);"|                     |"
PRINT AT(6,14);"+---------------------+";CHR$(27);"q"
PRINT AT(11,16);"'1' = "+benutzer1$
PRINT AT(11,18);"'2' = "+benutzer2$
PRINT AT(14,21);"Benutzer ? ";
REPEAT	!Abfrageschleife,
	benutzer$=INPUT$(1)	!solange bis richtige
	d$=CHR$(GEMDOS(25)+65)		!Zahl (1/2) eingegeben 
	IF benutzer$="1" THEN		!wurde.
		IF EXIST(pfad2$) THEN 	!Bei anderem Benutzer,
			NAME d$+":\NEWDESK.INF" AS pfad1$ !Umbenenn. der 
			NAME pfad2$ AS d$+":\NEWDESK.INF" !inaktiven Datei in
		ENDIF					!'NEWDESK.INF' und
		CLS						!der aktiven Datei in
		END						!den in der PAR-Datei
	ELSE IF benutzer$="2" 	!angegebenen Namen.
		IF EXIST(pfad1$) THEN 	!
			NAME d$+":\NEWDESK.INF" AS pfad2$
			NAME pfad1$ AS d$+":\NEWDESK.INF"
		ENDIF
		CLS
		END
	ELSE IF benutzer$=CHR$(13)
		CLS 
		END 
	ENDIF 
UNTIL 0

Das Trace-Bit im Statusregister

Die Nützlichkeit des Trace-Bits (Bit 15) im Statusregister ist sicherlich vielen Programmierern unbekannt. Dabei bietet es einen ganz besonderen Komfort. Es existiert nämlich ein Exceptions-Vektor namens Trace, in dem die Adresse einer ganz normalen, mit RTE abgeschlossenen Routine, steht. Ist nun das Trace-Bit im SR gesetzt, so wird nach jedem abgearbeiteten Assemblerbefehl in die im Trace-Vektor eingetragene Routine gesprungen. Dadurch ist es zum Beispiel möglich, Ihren ST in Zeitlupe zu versetzen. Sie müssen lediglich eine Routine einbauen, die Ihren Rechner nach jedem Befehl etwas aufhält, z. B. durch eine Warteschleife. Ein weiteres nützliches Beispiel ist ein Debugger. Durch den Trace-Vektor wird somit eine Einzelschrittbearbeitung möglich. Man kann immer einen Befehl ausführen und sich danach die Register-Inhalte oder andere programmspezifische Informationen angzeigen lassen. Das Programm wird Schritt für Schritt verfolgt und die Fehlersuche damit erheblich erleichtert.

Christian Roth / Matthias Brust

Graustufen-Dithering

Da der ST im hochauflösenden Grafikmodus nur Schwarz und Weiß kennt, wünschen sich viele ST-User echte Graustufen. Man behilft sich daher mit Füllmustern, um Graustufen zu simulieren. Doch diese sind wiederum beschränkt (8 vorgegebene Graustufenfüllmuster). Es gibt jedoch ein Verfahren, mit dem man aus diesen Mustern noch viele weitere erzeugen kann. Es nennt sich Dithering. Dabei tut man so, als ob man einen Schwärzungsgrad zur Verfügung hätte und mischt je nach diesem Grad die verschiedenen Füllmuster zu einer neuen Graustufe zusammen. Schauen Sie sich doch mal das Ergebnis im Bild an.

Christian Roth /Matthias Brust

' Graustufen-Dithering in GFA-BASIC V3.X 
' von Christian Roth u. Matthias Brust 
'
BOUNDARY 0	!Umrahmung von Pbox aus
' Balken mit den Graustufen 
step=9/640 
FOR i&=0 TO 639 STEP 3 
	DEFFILL 1,2,step*i&
	IF INT(step*i&)<>0
		PBOX i&,0,i&+4,19
	ENDIF
NEXT i&
' Jetzt mit Dithering
step=8/640					!Felder/Auflösung
r&=DIV(640,8)				!Auflösung/Felder
FOR i&=0 TO 639 STEP 3
	FOR i1&=40 TO 59 STEP 3
		' Normalgraustufe berechnen
		gr_stufe&=step*i&
		' Dithering-Effekt:
		IF RANDOM(r&)<i& MOD r&
			INC gr_stufe&
		ENDIF
		DEFFILL 1,2,gr_stufe&
		IF gr_stufe&<>0
			PBOX i&,i1&,i&+4,i1&+4
		ENDIF
	NEXT i1&
NEXT i&
BOUNDARY 1					!Umrahmung wieder ein


Aus: ST-Computer 11 / 1992, Seite 136

Links

Copyright-Bestimmungen: siehe Über diese Seite