home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Taifun Collection
/
Taifun_Collection_Vol_1.iso
/
richter
/
7056
/
7056.mhs
/
RICHTER.DTP
/
RECORDER
/
TREC.DOC
< prev
next >
Wrap
Text File
|
1992-02-08
|
14KB
|
353 lines
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