Und in der mit diesem Handbuch vorliegenden Version 2.0 von DiskWorks gibt es noch eine Besonderheit bei diesen Makros. Zunächst einmal eme schlechte Nachricht: zür Ausführung eines Makros wird nicht mehr automatisch DW verlassen. Und jetzt viele gute: man kann jetzt Makros sowohl in gewohnter Form (mit einer kleinen Anderung) als auch innerhalb von DiskWorks anwenden. Z. B. Markerien aller *.BAK und automatisches Löschen. Derer Anwendungen gibt es viele. Aber da ist dem Anwender keine Grenze gesetzt und seine Phantasie gefordert.
Jetzt aber nahere lnfonnationen zu der Erweiterung der Sprache 'DWMac'.
Ein wenig Ubertreibung ist immer ganz nett. Also nehmt das mit der Makrosprache nicht so ernst. Es handelt sich nämlich nicht um eine ausgezeichnete Programmiersprache, sondern vielmehr um das Aufschreiben von Tastenfolgen, die DW dann wieder abspielen kann.
Das nennt sich dann ein Makro starten'. Makros können sowohl innerhalb als auch außerhalb von DW ausgeführt werden. Es wird ja eigentlich 'nur' der KEYBUFF$ des Betriebssystems verwendet.
Wichtig ist nur, daß man nicht versehtlich ein Makro, daß für das 'Außerhalb' bestimmt war, innerhalb von Diskworks ausführt. Das führt dann nämlich mit Sicherheit zum Absturz des Rechners.
Ein Makro hat im Prinzip einen recht einfachen Autbau. Es fangt mit der Taste an, die nach dem Betätigen dazu führen soll, daß das Makro gestartet wird. Dann folgt ein Space und dann fängt die Befehlsfolge an, die ausgeführt werden.
Also:
<Taste><SPACE><Befehlsfolge>
Die <Taste> muß eine Taste sein, die man über die Tastatur erreichen kann also die Menge [A..Z,a..z,0..9,!,",#,$,%,&,?,:,',{,},[,],(,),|,_,@,;„,]. Jeder sollte damit mal experimentieren. Aber in etwa müßten das alle Zeichen sein.
<SPACE> muß auch nicht weiter erklärt werden, ist aber in jedem Fall notwenig.
Und jetzt zur <Befehlfolge> Da kann zunächst auch mal jedes Zeichen drinstehen, was über die Tastatur erreichbar ist. Z.B. die Folge <LOAD"S2:DW">. Tja, und da hatten wird dann auch gleich ein leines Problem aufgedeckt (denkst Du), denn wie mache ich dem Rechner klar, daß ich hinter dem Load.. auch noch ein ENTER gedrüc_t haben möchte? Kein Problem. Es gibt sogar zwei Lösungen dieses Problems. Die erste ist das Zeichen "~" (die Tilde). Anstelle der Tilde wird vom MakroInterpreter (hört sich auch gut an, nicht war?) ein ENTER bei der Ausführung der Makros eingesetzt.
Jetzt soll es aber schon mal vorgekommen sein, daß man nicht nur ein ENTER, sondern z.B. den Code der OFFTaste in einem Makro haben möchte. Oder gar den Code der CTRL-Taste.
Oder der SML-Taste...
Tja, auch da gibt's eine Lösung. Tastencodes jeder Art kann man in DW.CFG als folgende Zeichenfolge schreiben:
\<ASCII-CODE\
Also den Code in zwei nach hinten gekippte Schrägstriche eingefaßt, z.B. \15\ Das bedeutet die OFF-Taste, da der ASCIICode der OFF-Taste 15 ist.
Damit ihr nicht alle Codes erst noch herausfinden müßt, gibt's eine Tabelle mit den besonderen Codes. Ihr könnt auf diese Weise auch die normalen ASCII-Zeichen in den Makros abbilden. Aber es ist schließlich einfacher "LOAD" zu schreiben, als \76\\79\\65\\68\
Es gibt noch eine kleine aber nichtsdestotrotz feine Besonderheit. Mit der Zeichenfolge
\@
kann an der Stelle im Makro der Dateiname der obersten Displayzeile eingefügt werden. Also praktisch wie eine Variable, die je nach Situation einen andern Wert hat.
Taste Code
F1
17
F2
18
F3
19
F4
20
F5
21
F6
22
DEF
27
KBII 4
CTRL 3
SHIFT 1
SML 2
DPfeil 9
RCL 25
Down 10
UP
11
BS
5
OFF 15
CL
24
MODE 31
Left
8
Right 12
\
92 oder \\
@
64
~
126
Und jetzt noch mal auf das 'Innerhalb' und 'Außerhalb'. In der Version 1.2 von DW wurde für ein Makro automatisch DW verlassen und somit automatisch auf den Basic-Interpreter 'losgelassen'. Das geschieht jetzt einfach nicht mehr, sondern man muß das Verlassen von DW einfach mit der MODE-Taste erzeugen. Aber wie die MODE Taste erzeugen? Na klar, gerade erst gelerntt Einfach \31\ als erstes Zeichen der Befehlsfolge und schon geht's in Richtung BasicInterpreter.
Damit wird auch klar, warum man darauf achten muß, kein 'außerhalb' Makro 'innerhalb' abzuspielen. Angenommen wird hätten folgendes vor: Laden des Programms Text+ aus DW heraus per Makro. Text+ liegt auf S2: und heißt TXT.
Also würde die Befehlsfolge im Basic-Interpreter lauten 'BLOAD"S2:TXT<ENTER>'. In DW.CFG müßte aber folgendes vermerkt sein (wir nehmen mal an, daB wir die Taste "T" belegen wollen):
T\31\BLOAD"S2:TXT~
Also vorangestellt der Code Gur die Mode-Taste, dann das <SPACE> und abschließend der Code für die ENTER Taste.
Sollte das \31\ vergessen werden, so führt DW das Makro 'Innerhalb' aus und bis zum ersten "T" von TXT passiert nichts Schlimmes.