home *** CD-ROM | disk | FTP | other *** search
- TREC_386
- ========
-
- Da immer mehr Anwender über einen PC mit 386-Prozessor (oder höher) verfügen,
- habe ich eine spezielle Version des Recorders für diese Computer geschrieben.
-
- Dabei habe ich versucht, sowohl aus Fehlern bei der Erstellung des Recorders
- zu lernen, als auch Anregungen aus dem Kreis der Anwender zu verwirklichen.
-
- Daß dabei nicht nur Vorteile gegenüber dem Recorder entstanden sind, ist
- jedoch beinahe schon selbstverständlich.
-
-
- Die Nachteile
- =============
-
- Zunächst ist es natürlich ein Nachteil, daß Sie für dieses Programm zumindest
- über einen 386SX-PC verfügen müssen. Weiterhin erfordert das Programm das
- Vorhandensein eines EMS-Treibers. Da wohl jeder 386er zumindest über 2 MB
- Ram verfügt, ist aber die Installation dieses Treibers stets möglich.
- Meistens ist er bereits in der CONFIG.SYS enthalten - ansonsten lesen Sie
- bitte in Ihrem DOS-Handbuch nach, wie er installiert wird.
-
- Die Nachteile von TREC_386 gegenüber dem Recorder:
-
- - TREC ist ein reiner Tastatur-Rekorder. Mausaufzeichnungen erfolgen nicht.
- - keine HOT-KEY-Definition über die Command-Line.
- - kein Hidden-Start aus der Autoexec.Bat möglich.
- ( Für diesen Zweck stehen jetzt SPY.EXE und INSIDE.EXE zur Verfügung,)
- ( über die Sie sich in TROJA.DOC weitergehender informieren können)
-
- Da nach meiner Erfahrung ca. 90% der Anwender nur die Aufzeichnungsfunktion
- für die Tastatur verwenden, sind die obigen Nachteile nicht bedeutend.
-
-
- Die Vorteile
- ============
-
- Es sind eine ganze Menge:
-
- - nicht ohne Grund verlangt TREC_386 nach einem EMS-Treiber. Seinen
- überwiegenden Speicherbedarf (16 KByte) besorgt er sich dort.
- Nur einen geringen Teil (1 KByte) belegt er im Hauptspeicher.
- Gegenüber dem Recorder V1.3b ist das eine Ersparnis von 36.5 KByte,
- bzw. 97%
- - Im Gegensatz zum Recorder belegt TREC keinen zus. Environment-Speicher.
- - Wenn TREC installiert ist und erneut gestartet wird, deinstalliert er
- sich selbsttätig. Natürlich wird der EMS-Speicher wieder freigegeben.
- - Statt 2500 Tastendrücken kann TREC 4096 Tastendrücke speichern (+63%).
- - Statt der fast in jedem Programm belegten Funktionstasten benutzt TREC
- für seine HOT-KEY Tastenkombinationen die Steuertasten Shift, Alt und
- Control, die zu keinem realen Tastendruck führen.
- - Neben dem bereits im Recorder vorhandenen HOT-KEY zur Aufzeichnungs-
- kontrolle existiert jetzt eine weitere Tastenkombination zur Abspiel-
- Kontrolle. KEYSTART ist also bereits implementiert.
- - Für alle Programmierer unter den Anwendern bietet TREC eine Kommunikatios-
- schnittstelle auf dem Interrupt $7A an. Damit kann man aus Programmen
- heraus TREC direkte Anweisungen erteilen.
- - TREC ist zu 100% in Assembler programmiert. Deshalb schleppt er keinen
- Ballast mit sich - weder speichermäßigen, noch zeitlichen.
- - Die Formate von TREC (Speicher/Dateien) sind dokumentiert.
-
-
- Die Unterschiede zum Recorder
- =============================
-
- Neben den oben erwähneten Unterschieden sind es vor allem die neuen Tasten-
- kombinationen, die TREC zu Aktionen veranlassen:
-
- <Rechte Shifttaste> + <Linke Shifttaste> + <Control-Taste> gleichzeitig
- führen dazu, daß TREC mit der Aufzeichnung beginnt (Signalton) bzw. diese
- beendet (kein Signalton). Die Tasten sind softwaremäßig entprellt. Damit der
- Signalton auch mit Sicherheit wieder ausgeschaltet wird, lassen Sie bitte
- die Control-Taste als erste vor den Shift-Tasten wieder los.
- Im Unterschied zum Recorder beginnt TREC seine Aufzeichnung immer in der
- Nullposition des Aufzeichnungspuffers!
-
- <Rechte Shifttaste> + <Linke Shifttaste> + <Alt-Taste> gleichzeitig
- führen dazu, daß TREC mit dem Abspielen beginnt (Signalton) bzw. dieses
- beendet (kein Signalton). Die Tasten sind softwaremäßig entprellt. Damit der
- Signalton auch mit Sicherheit wieder ausgeschaltet wird, lassen Sie bitte
- die Alt-Taste als erste vor den Shift-Tasten wieder los.
- Bevor mit der gleichen Tastenkombination der Abspielvorgang erneut gestartet
- werden kann, ist zunächst der vorherige Abspielvorgang zu beenden. Die
- Kombination ist in diesem Fall also zweimal zu drücken!
-
-
- Statt TRANSMIT: TRT
- ===================
-
- TREC_386 hat seinen eigenen Transmitter: TRT.
- Dieser ist jedoch in der Bedienung mit Transmit identisch. Allerdings
- bietet TRT noch zwei weitere Anweisungen an TREC_386 an:
-
- TRT /R schaltet TREC_386 per Transmitter-Befehl in den Aufzeichnungs-Modus
- TRT /X schaltet TREC_386 aus jedem Modus in den Warte-Modus.
-
- Alle anderen Anweisungen bleiben in Syntax und Wirkung unverändert.
-
-
- Die Konverter
- =============
-
- Da die Speicherdateien von TREC_386 und dem Recorder verständlicherweise
- ein anderes Format haben, gibt es in diesem Paket zwei Programme, die
- die Konvertierung der beiden Formate untereinander vornehmen.
-
- Die Bedienung ist einfach und stets gleich:
-
- REC2TREC toll.dat toll.rec
- erzeugt aus der Recorder-Datei Toll.dat die TREC-Datei Toll.rec
-
- TREC2REC toll.rec toll.dat
- erzeugt aus der TREC-Datei Toll.rec die Recorder-Datei Toll.dat
-
- Zwei Dinge sind dabei jedoch zu beachten:
-
- Wenn eine Recorder-Datei in eine Datei für TREC gewandelt wird, gehen dabei
- die Informationen über die Mausbewegungen verloren. Diese werden von TREC
- schließlich nicht unterstützt.
-
- Beim umgekehrten Fall der Wandlung einer TREC-Datei in das Recorder-Format
- wird die Anzahl der Tastendrücke, falls sie über 2500 lag, auf 2500 Tasten
- beschränkt. Mehr kann der Recorder nicht verarbeiten.
-
- Während der letzte Fall kein nützliches Element in sich birgt, ist der
- erste Fall, bei anschließender Rückwandlung ins Recorder-Format, dazu
- einsetzbar, ganz bewußt die Mausbewegungen aus einer Recorder-Datei zu
- eliminieren!
-
-
- Die Kommunikationsschnittstelle
- ===============================
-
- Wenn Sie TREC aus Programmen heraus aufrufen wollen, dann erfahren Sie
- im folgenden, wie Sie vorgehen müssen.
-
- Der Aufruf von TREC unterscheidet sich in keiner Weise vom Aufruf z.B. der
- DOS-Funktionen. Diese können Sie nicht nur aus Assembler, sondern auch
- von Pascal, Basic oder C aus aufrufen. Sie füttern zunächst die Register
- mit den Übergabeparametern, rufen den Interrupt auf und werten die
- Rückgabewerte in den Registern aus.
-
- TREC bietet Ihnen auf dem Interrupt $7A insgesamt 9 verschieden Funktionen
- an. Hier eine Beschreibung:
-
- Funktion 0
- ----------
-
- Startparameter: AX=0
-
- Eigenschaft: Der Aufruf dieser Funktion führt dazu, daß sich TREC
- überwiegend selbst deinstalliert. Die System-Vektoren
- werden zurückgesetzt, EMS-Speicher wieder freigegeben.
- AX enthält nach dem Aufruf die Adresse des aktuellen
- PSP von TREC. Damit kann TREC durch den Aufruf der
- Funktion $49 von DOS-$21 anschließend endgültig aus
- dem Speicher entfernt werden.
-
- Rückgabe: AX= Aktuelle Segmentadresse des PSP von TREC
-
- Verändert wird: AX
-
- Hinweis: Die Deinstallation von TREC aus einem Programm heraus,
- welches auch noch eine andere Funktion erfüllt, ist mit
- Vorsicht zu genießen. Falls dieses Programm selbst
- Vektoren verbiegt, kann es später (auch viel später!)
- zu einem Absturz kommen.
- Zu verdanken haben wir das dem Umstand, daß es noch immer
- keine allgemein verwendetete Norm zur "Vektorverbiegung"
- gibt, die eine gewisse Transzendenz dieser Geschichte
- einbringen würde. Siehe z.B. XBRA-Protokoll bei Atari,
- was allerdings auch noch zu verbessern wäre.
-
- Funktion 1
- ----------
-
- Startparameter: AX=1
-
- Eigenschaft: Status-Abfrage. Nach dem Aufruf sind die Register mit
- Informationen über TREC gefüllt:
- AX=Modus (0=Stand by, 1=Aufzeichnung, 2=Abspielen)
- BX=Offset des Aufzeichnungspointers zum Pufferstart
- CX=Offset des Abspielpointers zum Pufferstart
- DX=Handlenummer der EMS-Page (Seite 0) von TREC
- ES=Segmentadresse der Page-Frame des EMS-Treibers
-
- Verändert wird: AX, BX, CX, DX, ES
-
- Funktion 2
- ----------
-
- Startparameter: AX=2
-
- Eigenschaft: TREC-Reset. Löscht den Inhalt der Puffers. TREC wird in
- den Stand-by Modus geschaltet, wo er das System nicht
- beeinflußt. Die Pufferpointer werden auf Ihre Null-
- positionen gesetzt. 4096 Tastendrücke frei.
-
- Verändert wird: AX
-
- Hinweis: Der Puffer, also die EMS-Page, wird nicht physikalisch
- gelöscht. Die Rücksetzung des Pointers führt jedoch
- dazu, daß TREC von diesem Pufferinhalt nichts mehr weiß.
-
- Funktion 3
- ----------
-
- Startparameter: AX=3
-
- Eigenschaft: Start der Aufzeichnung. TREC setzt die Puffer-Pointer
- in ihre Nullpositionen. Der System-Timer wird initiali-
- siert. Anschließend beginnt sofort die Aufzeichnung.
-
- Verändert wird: AX
-
- Funktion 4
- ----------
-
- Startparameter: AX=4
-
- Eigenschaft: Ende der Aufzeichnung. TREC beendet die Tastaturabfrage.
-
- Verändert wird: AX
-
- Funktion 5
- ----------
-
- Startparameter: AX=5
-
- Eigenschaft: Start des Abspielvorganges. TREC setzt den Puffer-Pointer
- der Abspielung in seine Nullposition. Der System-Timer
- wird initialisiert. Anschließend beginnt sofort der
- Abspielvorgang.
-
- Verändert wird: AX
-
- Funktion 6
- ----------
-
- Startparameter: AX=6
-
- Eigenschaft: Der Abspielvorgang wird beendet. Mit der Funktion 5 kann
- der gleiche Pufferinhalt jedoch immer wieder neu
- abgespielt werden.
-
- Verändert wird: AX
-
- Funktion 7
- ----------
-
- Startparameter: AX=7, BX=neuer Einlese-Puffer-Pointer
-
- Eigenschaft: Mit dieser Funktion kann der Einlese-Puffer-Pointer, der
- bestimmt, wo im Speicher die nächste gedrückte Taste
- abgespeichert wird, direkt gesetzt werden.
- Der Wert muß durch 4 dividierbar sein. TREC prüft NICHT,
- ob der Pointer einen brauchbaren Wert enthält!
- Wenn man selbstgeschriebene Daten in den EMS-Speicher
- kopiert, kann man diese Funktion einsetzen, um das Ende
- dieses Bereichs zu markieren.
-
- Verändert wird: AX
-
- Hinweis: Der Pointer ist ein "Near"-Pointer. Segmentadresse ist
- immer die Seite 0 des EMS-Page-Frame.
-
- Funktion 8
- ----------
-
- Startparameter: AX=8, BX=neuer Abspiel-Puffer-Pointer
-
- Eigenschaft: Mit dieser Funktion kann der Abspiel-Puffer-Pointer, der
- bestimmt, wo im Speicher das nächste auszugebende Zeichen
- zu finden ist, direkt gesetzt werden.
- Der Wert muß durch 4 dividierbar sein. TREC prüft NICHT,
- ob der Pointer einen brauchbaren Wert enthält!
- Durch diese Funktion kann man z.B. auf eine ganz bestimmte
- Stelle im Speicher zugreifen und diese abspielen lassen.
- Der Timer (word $40:$6C) muß natürlich entsprechend
- eingestellt sein, bzw. eingestellt werden.
-
- Verändert wird: AX
-
- Hinweis: Der Pointer ist ein "Near"-Pointer. Segmentadresse ist
- immer die Seite 0 des EMS-Page-Frame.
-
-
- Bevor Sie in einem Programm, welches TREC_386 nicht selbst installiert hat,
- davon ausgehen, daß TREC aktiv ist, sollten Sie sich besser Gewissheit
- darüber verschaffen, bevor Sie INT $7A aufrufen. Der INT $7A zeigt nämlich
- im anderen Fall nach NIL. Ihr Programm würde sich dann verabschieden.
-
- Holen Sie sich besser über $35 von DOS-$21 den aktuellen Pointer des
- INT $7A. Verringern Sie den zurückgegebenen Offset um 4 Bytes (Unterlauf
- kann nicht stattfinden!). Falls TREC_386 installiert ist, finden Sie an
- der Adresse, auf die der Pointer jetzt zeigt, die Zeichenkette 'TREC'.
-
- Mit den Funktionen ist es einem Programm im Prinzip möglich, die Eingaben
- des Anwenders selbst vorzugeben. Nicht nur für Demo-Programme sollte dies
- von Interesse sein. Letztlich kann ein Programm sich nun auch selbst
- editieren und neu compilieren - doch das führt wohl etwas zu weit.
-
-
- Formate
- =======
-
- Alle Tastendrücke speichert TREC in seinem allokierten EMS-Speicherbereich.
- Mittels der Funktion zur Status-Abfrage kann man sich die Segmentadresse
- der Page-Frame des EMS-Treibers mitteilen lassen.
-
- Mit Hilfe der ebenfalls übergebenen Handle-Nummer ist es nun durch den
- Aufruf der Funktion $44 des Interrupts $67 kein Problem mehr, sich den
- Speicher von TREC im Page-Frame darstellen zu lassen. TRECs logische
- Bildschirmseite ist immer Null.
-
- Die 16 KB dieser EMS-Page sind zu maximal 4096 Records a 4 Bytes aufgeteilt.
- Die Tastendrücke sind sequentiell in korrekter zeitlicher Eingabeabfolge
- auf dieser Seite abgespeichert.
-
- Jeder 4-Bytes-Record ist folgendermaßen aufgebaut:
-
- 1 Byte ASCII-Code der gedrückten Taste
- 1 Byte Scan-Code der gedrückten Taste
- 1 Word (lo/hi) Timer-Wert zur gedrückten Taste
-
- Mit Hilfe des Pointer-Wertes (Mod 4 ist immer 0) kann die Anzahl der Tasten
- im Puffer, sowie die Anzahl der eventuell bereits abgespielten Tasten
- ermittelt werden. Dazu ist dieser Wert durch 4 zu dividieren.
-
- Die Pointer zeigen stets auf die nächste zu belegende bzw. nächste
- abzuspielende Position.
-
- Wer sich an den EMS-Speicher nicht heranwagen möchte, der kann auch direkt
- abgespeicherte Dateien von TREC bearbeiten. Das Format dieser Dateien
- entspricht dem oben beschriebenen Format - mit einer Ausnahme:
- Diese Dateien beginnen mit einem 4-Bytes-Record als Kennung. Dieser enthält
- die ASCII-Zeichen 'TREC'. Somit ergibt sich die Gesamtzahl der Zeichen in
- einer Datei zu: (Dateilänge div 4)-1
-
- Das war schon alles, was die Formate hergeben.
-
-
- Schlußbemerkung
- ===============
-
- Ich hoffe, daß sich die ganze Arbeit für TREC_386 auch gelohnt hat. Gelohnt
- hat sie sich dann, wenn Sie mit diesem Programm zufrieden sind und es
- gerne einsetzen. In diesem Fall, aber auch dann, wenn Sie dieses Programm
- fürchterlich finden, würde ich gerne Ihre Meinung dazu erfahren.
-
- Uwe Kuhring
-