File: /~heha/hs/dos/mrec_src.zip/MREC.DOC

Dokumentation zu MREC 1.0, dem Tastatur-Makrorecorder
Copyright 1994 Berauer Computer Cossebaude

Dieser Makrorekorder ist ein aufzeichnendes wie auch wiedergebendes System
für die Steuerung anderer Programme. Gemäß der Problemstellung wurde
dieses Programm nicht als TSR (<engl: terminate and stay resident, residentes
Programm nach Beendigung) entwickelt, sondern als Vater-Programm. Das
bedeutet, daß MREC in der Lage ist, ein anderes Programm als sog. Child-
Prozeß zu starten und während seiner Abarbeitung die Kontrolle über die
Tastatureingaben des Child-Programms zu überwachen und zu emulieren.
Vorteilhaft ist bei dieser Art des Steuerprogramms, daß es keine De-
installationsprobleme geben kann (es sei denn, man startet ein TSR als
Child) und daß der "Treiber" sich selbst bei Programmbeendigung mit
entfernt.

Mindestanforderungen:
- IBM-PC 8088 oder kompatibler auf BIOS-Ebene
- MS-DOS 3.3 oder vergleichbares Betriebssystem
- PC- oder MF2-Tastatur mit deutschem Tastaturtreiber KEYB oder kompatiblem
- 3 Kilobyte konventioneller oder hoher Speicher neben dem Nutzprogramm
...sollte wohl jeder haben!

Wie funktioniert das Programm im Innern prinzipiell? (Experten-Hinweis)
 Zunächst wird geprüft, ob die Makrodatei existiert oder nicht. Je nach
Ergebnis wird dann aufgenommen oder wiedergegeben. Bei Wiedergabebetrieb
wird das File in einen internen Puffer gelesen und gewandelt, sodaß
jede Taste 2 Bytes benötigt.
 Kurz vor dem Start des Childs, was je nach Option /x direkt das Programm
oder die command.com ist, wird der Tastaturinterrupt Int16 angezapft und
das Child gestartet. Die Anzapfung bewirkt dann die Emulation der
Tastendrücke bzw. das Mitschneiden.
 Nach Beendigung des Programms wird (im Record-Fall) dieser 2-Byte-je-Taste-
Puffer gewandelt und geschrieben. Damit dieser Programmteil nicht
während der Laufzeit des Childs im Speicher verbleibt, wird er
erst nach seiner Beendigung als Overlay nachgeladen. Das Overlay ist
hierbei keine weitere Datei, sondern in MREC.COM enthalten.

Die Form der Eingabezeile ermöglicht ein und denselben Programmaufruf
zum Anlernen wie zur Geisterfahrt. Das kann Tipparbeit sparen helfen.

Die ASCII-Steuerdatei enthält editierbare ASCII-Zeichen und kann mit jedem
Standard-Text-Editor, wie z.B. EDIT.COM, TURBO.EXE oder NE.EXE bearbeitet
werden.

Hinweis: Bei 'besseren' Texteditoren, wie Word oder WordPerfect, muß
die Ausgabedatei "normaler DOS-Text", niemals "Dokument" sein!

Kommandozeilen-Parameter von MREC:

/? oder /h  Online-Hilfe mit Kurzhinweisen zu allen Parametern

/r  erzwingt selbst bei vorhandener Tastaturmakrodatei die Aufnahme.
 Gleiches würde das vorherige Löschen jener Datei bewirken

/x  startet das Child-Programm ohne den Befehlsinterpreter command.com
 (bzw. einen mit %comspec% definierten anderen Kommandointerpreter).
 Standardmäßig wird der Kommandointerpreter geladen, der die Suche
 der Datei im Pfad und die korrekte Ausführung von Batch-Dateien
 übernimmt. (nach dem System: Laß andere arbeiten!) Nachteilig ist,
 daß die command.com noch einmal 3 Kilobyte RAM benötigt.
 Wird /x angegeben, wird das Child-Programm direkt ausgeführt.
 ACHTUNG:
 - Es muß ein kompletter absoluter oder relativer Pfad angegeben werden,
   da der DOS-Suchpfad nicht abgesucht wird!
 - Die korrekte Extension (.COM oder .EXE) muß angegeben werden
 - NIEMALS Batch-Dateien (*.BAT) angeben - sonst Absturz!
 - Die Pfadangabe darf "/" statt "\" enthalten (der offizielle DOS=UNIX-Bug)
 - Die Extension kann auch anders als .COM oder .EXE lauten, wenn das
   entsprechende Programm *ausführbar* ist. (Experten-Hinweis)

/nn (nn=Zahl von 0 bis 65535)  verändert die Wiederholrate bei der Tasten-
 statusabfrage. Standardmäßig steht sie auf 256. Eine Erhöhung wird not-
 wendig, wenn bei der Wiedergabe offenbar Tastenanschläge verschluckt
 werden. Eine Erhöhung von nn kann ein recht starkes "Einschlafen" des
 Rechners bewirken. Wird dies bemerkt, kann man den Rechner durch Drücken
 irgendeiner Taste auf die Sprünge helfen.
 Bei Angabe von genau nn=65535 wird bei der Statusabfrage stets "keine Taste"
 gemeldet. Eventuell kann das Programm stehenbleiben; dann irgendeine Taste
 drücken und beim nächsten Mal den Wert für nn verkleinern! Probiere auch
 Parameter /v!

/l  Verhindert, daß ein Tastendruck bei stehenbleibendem Programm weiterhilft.
 Dies ermöglicht einen sicheren Schutz beim Verlassen des Rechners, daß das
 Programm korrekt arbeitet. Während der Testphase diesen Schalter bitte
 *nicht* setzen!

/v  aktiviert den Bildschirm-Veränderungs-Test bei jeder Tastenstatusabfrage
 des Programms. Ist der Bildschirm seit dem letzten Zugriff verändert, wird
 der Wiederholungszähler, der von Null bis nn zählt, zurückgesetzt. Dies
 ist dann hilfreich, wenn ein längerwährender Job, z.B. ein Druckjob, nicht
 korrekt funktioniert, und auf dem Bildschirm irgendein Statuswert "zappelt",
 z.B. eine Satznummer oder ein Balkendiagramm. Ursache für die sonst auf-
 tretenden Fehlverhalten ist ein periodisches ClrKeybrdBuf, welches sich
 naturgemäß nur sehr schwer programmtechnisch abfangen läßt.

/t  Tastaturmakrodatei übersetzen
 Der Typ der Eingabedatei (Text, binär, gescrambelt) wird automatisch erkannt.
 Stansardmäßig wird in eine editierbare ASCII-Datei gewandelt.

/b  Binärdatei erzeugen (sonst ASCII-Datei)

/bx gescrambelte Binärdatei erzeugen
 Ein Paßwort einer existierenden gescrambelten Datei läßt sich deshalb
 unter Verwendung der Optionen /t und /bx verändern. Beachte: Ein leeres
 Paßwort ist hierbei auch ein Paßwort und erzeugt eine gescrambelte Datei!
 Die Zeichenzahl im Paßwort ist auf 15 Zeichen beschränkt. Das Paßwort
 ist case-sensitiv, also bei Eingabe bitte auf Shift-Lock achten! Intern
 werden 16 Bit für den Paßwort-Check verwendet.
 Das Paßwort-System ist zwar rein prinipiell brauchbar, d.h. an den Inhalt
 der Makrodatei ist an sich schwer heranzukommen. Jedoch läßt sich die
 ganze Sache jämmerlich leicht unterlaufen, wenn man mit dem Makro einen
 x-beliebigen Texteditor startet! Eine spätere Version müßte hierfür
 wenigstens den korrekten Namen des Zielprogramms abchecken! Aber auch
 hier wäre ein simpler Hack, das ausführbare Programm umzubenennen...

/s  Anzeige aller möglichen Textmakros. Da die Ausgabe über mehrere Bildschirm-
 seiten erfolgt, empfiehlt es sich, die Ausgabe über MORE oder in eine Datei
 umzuleiten. Genaueres s. DOS-Handbuch

Fehlermeldungen:
Sie sind meistens selbsterklärend, bis auf die beiden, die vor oder nach der
Ausführung des Child-Programms auftauchen könnten
(Platzmangel für Meldungstexte):

- Fehler xx beim Ausführen des Hauptprogramms
   Das Tochterprogramm (i.a. command.com) konnte nicht ausgeführt werden
  xx=02 (oder 03): Datei (oder Pfad) nicht gefunden
  xx=05: Zugriff verweigert

  Sollte diese Meldung ohne Angabe des Parameters /x auftreten, liegt wohl
  ein schwerer Programm- oder Systemfehler vor, da das bedeutet, daß der
  Kommandointerpreter nicht gefunden wurde. Vielleicht hilft neu booten...
  Zum Auffinden des Kdo.-Interpreters wird die Umgebungsvariable COMSPEC
  herangezogen; fehlt diese, wird X:\command.com angenommen, wobei
  X: das Bootlaufwerk ist

  Ansonsten haben Sie bei Fehler 02 den Pfad oder (häufiger) die Extension
  vergessen. Bei Fehler 05 ist ein Sharing-Problem im Netzwerk die einzig
  mögliche Ursache.

- Fehler xx beim Laden des Dekodier-Overlays
   Das für die Ausführungszeit des Tochterprogramms gekürzte Programm
   MREC.COM konnte nicht mehr korrekt verlängert werden.
  xx=02 (oder 03): Datei MREC.COM nicht gefunden
  xx=05: Zugriff verweigert
  xx=08: kein RAM
  xx=10: Lesefehler, Datei zu kurz

  Bei Aufnahme eines Makros kann der RAM-Inhalt nicht mehr als Makrodatei
  gespeichert werden wegen obiger Fehler. Möglicherweise ist inzwischen
  der (remote) Rechner mit dem Programm MREC ausgefallen. Die Meldung 08 kann
  nur beim Aufruf eines TSR auftauchen. Hier hilft am besten das Hochladen
  entweder der TSR oder von MREC.
  Fehler 05 weist auf Sharing-Probleme hin. Ein anderer hat MREC.COM zum
  Schreiben geöffnet o.ä. (was für ein Schlingel!!) Oder Sie haben
  auf diese Datei Rechte nur zum Ausführen, nicht zum Lesen vergeben.
  Geben Sie also Leserechte. Fragen Sie ggf. hierzu den Systemverwalter.
  Zum Nachladen wird ParamStr(0) herangezogen, welches den kompletten
  Pfad zur Datei MREC.COM enthält. Fernstart-Probleme können daher nicht
  die Ursache von Fehlermeldungen sein!

  Fehler 10 tritt bei gekürzter Datei auf, dessen meiste Ursache das
  Komprimieren des Programms mittels PKLITE, LZEXE oder DIET ist. Also
  lassen Sie das Programm wie es ist. (Es ist doch gar nicht so lang!)

Enthält die Textdatei Syntaxfehler, werden entsprechene Meldungen
ausgegeben. Sie sollten diese Fehler umgehend ausbauen.
Eine Textdatei wird an ihrem ersten Wort erkannt. Binärdateien haben ebenfalls
eine Kennung in den ersten 2 Bytes. Wird keines der 3 Formate erkannt,
gibt es eine Fehlermeldung, und MREC bricht ab. Stellen Sie die Datei
wieder korrekt her, löschen sie sie für eine Neuaufnahme oder geben Sie
beim nächsten Mal in der Kommandozeile ein /r zusätzlich an.

Bei allen Optionen kann als Anstrich auch "-" (Minus) verwendet werden.
Da es aber möglich ist, daß Dateinamen mit "-" anfangen, müssen solche
Dateien mit einem "-" am Anfang *mehr* angegeben werden.

Alle Optionen sind case-insensitiv, d.h. ob Klein- oder Großbuchstaben
ist völlig egal.

Nicht vergessen, daß man MREC auch hochladen kann, wenn's im Speicher
knapp wird!

Aufbau der ASCII-Steuerdatei:
- Einzelne Tasten entsprechen einzelne Buchstaben
- Shift+Buchstabe wird als Großbuchstabe dargestellt
- Control+Taste bzw. Alt+Taste werden als ctrl+x bzw. alt+x dargestellt,
  wobei x die normale Taste darstellt
- Trennzeichen zwischen Tastencodes ist sog. Weißraum, also Spaces, Zeilenenden
  usw.
- Möglich ist auch die direkte Angabe des Tastencodes als Dezimal- oder
  Hexadezimalzahl. Hexzahlen benötigen den Präfix "$".
- Das erste Wort der Datei ist das Kennwort und lautet "MREC#ASCII"
- Alle Angaben sind case-sensitiv, außer die Hexziffern A..F in Hexzahlen!
  Man sollte niemals Groß- und Kleinbuchstaben verwechseln. Im allgemeinen
  gelten NUR Kleinbuchstaben.
- Die Sonderzeichen {[]}\|~@µ, die auf der deutschen Tastatur nur via AltGr
  erreichbar sind, sind OHNE 'alt+' zu schreiben!
- Der geniale Vorteil einer ASCII-Datei ist ihre Austauschbarkeit bezüglich
  anderer Tastaturtreiber. Lediglich MREC.COM muß zum momentanen Treiber
  passen! Die Binärdateien sind i.a. NICHT zwischen verschiedenen Keyboard-
  Layouts austauschbar!
- Augenscheinlich ist selbstverständlich die Editierbarkeit dieser Datei
Detected encoding: OEM (CP437)1
Wrong umlauts? - Assume file is ANSI (CP1252) encoded