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 >
Text File  |  1992-02-08  |  14KB  |  353 lines

  1. TREC_386
  2. ========
  3.  
  4. Da immer mehr Anwender über einen PC mit 386-Prozessor (oder höher) verfügen,
  5. habe ich eine spezielle Version des Recorders für diese Computer geschrieben.
  6.  
  7. Dabei habe ich versucht, sowohl aus Fehlern bei der Erstellung des Recorders
  8. zu lernen, als auch Anregungen aus dem Kreis der Anwender zu verwirklichen.
  9.  
  10. Daß dabei nicht nur Vorteile gegenüber dem Recorder entstanden sind, ist
  11. jedoch beinahe schon selbstverständlich.
  12.  
  13.  
  14. Die Nachteile
  15. =============
  16.  
  17. Zunächst ist es natürlich ein Nachteil, daß Sie für dieses Programm zumindest
  18. über einen 386SX-PC verfügen müssen. Weiterhin erfordert das Programm das
  19. Vorhandensein eines EMS-Treibers. Da wohl jeder 386er zumindest über 2 MB
  20. Ram verfügt, ist aber die Installation dieses Treibers stets möglich.
  21. Meistens ist er bereits in der CONFIG.SYS enthalten - ansonsten lesen Sie
  22. bitte in Ihrem DOS-Handbuch nach, wie er installiert wird.
  23.  
  24. Die Nachteile von TREC_386 gegenüber dem Recorder:
  25.  
  26.  - TREC ist ein reiner Tastatur-Rekorder. Mausaufzeichnungen erfolgen nicht.
  27.  - keine HOT-KEY-Definition über die Command-Line.
  28.  - kein Hidden-Start aus der Autoexec.Bat möglich.
  29.    ( Für diesen Zweck stehen jetzt SPY.EXE und INSIDE.EXE zur Verfügung,)
  30.    ( über die Sie sich in TROJA.DOC weitergehender informieren können)
  31.  
  32. Da nach meiner Erfahrung ca. 90% der Anwender nur die Aufzeichnungsfunktion
  33. für die Tastatur verwenden, sind die obigen Nachteile nicht bedeutend.
  34.  
  35.  
  36. Die Vorteile
  37. ============
  38.  
  39. Es sind eine ganze Menge:
  40.  
  41.  - nicht ohne Grund verlangt TREC_386 nach einem EMS-Treiber. Seinen
  42.    überwiegenden Speicherbedarf (16 KByte) besorgt er sich dort.
  43.    Nur einen geringen Teil (1 KByte) belegt er im Hauptspeicher.
  44.    Gegenüber dem Recorder V1.3b ist das eine Ersparnis von 36.5 KByte,
  45.    bzw. 97%
  46.  - Im Gegensatz zum Recorder belegt TREC keinen zus. Environment-Speicher.
  47.  - Wenn TREC installiert ist und erneut gestartet wird, deinstalliert er
  48.    sich selbsttätig. Natürlich wird der EMS-Speicher wieder freigegeben.
  49.  - Statt 2500 Tastendrücken kann TREC 4096 Tastendrücke speichern (+63%).
  50.  - Statt der fast in jedem Programm belegten Funktionstasten benutzt TREC
  51.    für seine HOT-KEY Tastenkombinationen die Steuertasten Shift, Alt und
  52.    Control, die zu keinem realen Tastendruck führen.
  53.  - Neben dem bereits im Recorder vorhandenen HOT-KEY zur Aufzeichnungs-
  54.    kontrolle existiert jetzt eine weitere Tastenkombination zur Abspiel-
  55.    Kontrolle. KEYSTART ist also bereits implementiert.
  56.  - Für alle Programmierer unter den Anwendern bietet TREC eine Kommunikatios-
  57.    schnittstelle auf dem Interrupt $7A an. Damit kann man aus Programmen
  58.    heraus TREC direkte Anweisungen erteilen.
  59.  - TREC ist zu 100% in Assembler programmiert. Deshalb schleppt er keinen
  60.    Ballast mit sich - weder speichermäßigen, noch zeitlichen.
  61.  - Die Formate von TREC (Speicher/Dateien) sind dokumentiert.
  62.  
  63.  
  64. Die Unterschiede zum Recorder
  65. =============================
  66.  
  67. Neben den oben erwähneten Unterschieden sind es vor allem die neuen Tasten-
  68. kombinationen, die TREC zu Aktionen veranlassen:
  69.  
  70. <Rechte Shifttaste> + <Linke Shifttaste> + <Control-Taste> gleichzeitig
  71. führen dazu, daß TREC mit der Aufzeichnung beginnt (Signalton) bzw. diese
  72. beendet (kein Signalton). Die Tasten sind softwaremäßig entprellt. Damit der
  73. Signalton auch mit Sicherheit wieder ausgeschaltet wird, lassen Sie bitte
  74. die Control-Taste als erste vor den Shift-Tasten wieder los.
  75. Im Unterschied zum Recorder beginnt TREC seine Aufzeichnung immer in der
  76. Nullposition des Aufzeichnungspuffers!
  77.  
  78. <Rechte Shifttaste> + <Linke Shifttaste> + <Alt-Taste> gleichzeitig
  79. führen dazu, daß TREC mit dem Abspielen beginnt (Signalton) bzw. dieses
  80. beendet (kein Signalton). Die Tasten sind softwaremäßig entprellt. Damit der
  81. Signalton auch mit Sicherheit wieder ausgeschaltet wird, lassen Sie bitte
  82. die Alt-Taste als erste vor den Shift-Tasten wieder los.
  83. Bevor mit der gleichen Tastenkombination der Abspielvorgang erneut gestartet
  84. werden kann, ist zunächst der vorherige Abspielvorgang zu beenden. Die
  85. Kombination ist in diesem Fall also zweimal zu drücken!
  86.  
  87.  
  88. Statt TRANSMIT: TRT
  89. ===================
  90.  
  91. TREC_386 hat seinen eigenen Transmitter: TRT.
  92. Dieser ist jedoch in der Bedienung mit Transmit identisch. Allerdings
  93. bietet TRT noch zwei weitere Anweisungen an TREC_386 an:
  94.  
  95. TRT /R schaltet TREC_386 per Transmitter-Befehl in den Aufzeichnungs-Modus
  96. TRT /X schaltet TREC_386 aus jedem Modus in den Warte-Modus.
  97.  
  98. Alle anderen Anweisungen bleiben in Syntax und Wirkung unverändert.
  99.  
  100.  
  101. Die Konverter
  102. =============
  103.  
  104. Da die Speicherdateien von TREC_386 und dem Recorder verständlicherweise
  105. ein anderes Format haben, gibt es in diesem Paket zwei Programme, die
  106. die Konvertierung der beiden Formate untereinander vornehmen.
  107.  
  108. Die Bedienung ist einfach und stets gleich:
  109.  
  110. REC2TREC toll.dat toll.rec
  111. erzeugt aus der Recorder-Datei Toll.dat die TREC-Datei Toll.rec
  112.  
  113. TREC2REC toll.rec toll.dat
  114. erzeugt aus der TREC-Datei Toll.rec die Recorder-Datei Toll.dat
  115.  
  116. Zwei Dinge sind dabei jedoch zu beachten:
  117.  
  118. Wenn eine Recorder-Datei in eine Datei für TREC gewandelt wird, gehen dabei
  119. die Informationen über die Mausbewegungen verloren. Diese werden von TREC
  120. schließlich nicht unterstützt.
  121.  
  122. Beim umgekehrten Fall der Wandlung einer TREC-Datei in das Recorder-Format
  123. wird die Anzahl der Tastendrücke, falls sie über 2500 lag, auf 2500 Tasten
  124. beschränkt. Mehr kann der Recorder nicht verarbeiten.
  125.  
  126. Während der letzte Fall kein nützliches Element in sich birgt, ist der
  127. erste Fall, bei anschließender Rückwandlung ins Recorder-Format, dazu
  128. einsetzbar, ganz bewußt die Mausbewegungen aus einer Recorder-Datei zu
  129. eliminieren!
  130.  
  131.  
  132. Die Kommunikationsschnittstelle
  133. ===============================
  134.  
  135. Wenn Sie TREC aus Programmen heraus aufrufen wollen, dann erfahren Sie
  136. im folgenden, wie Sie vorgehen müssen.
  137.  
  138. Der Aufruf von TREC unterscheidet sich in keiner Weise vom Aufruf z.B. der
  139. DOS-Funktionen. Diese können Sie nicht nur aus Assembler, sondern auch
  140. von Pascal, Basic oder C aus aufrufen. Sie füttern zunächst die Register
  141. mit den Übergabeparametern, rufen den Interrupt auf und werten die
  142. Rückgabewerte in den Registern aus.
  143.  
  144. TREC bietet Ihnen auf dem Interrupt $7A insgesamt 9 verschieden Funktionen
  145. an. Hier eine Beschreibung:
  146.  
  147. Funktion 0
  148. ----------
  149.  
  150.    Startparameter: AX=0
  151.  
  152.    Eigenschaft:    Der Aufruf dieser Funktion führt dazu, daß sich TREC
  153.                    überwiegend selbst deinstalliert. Die System-Vektoren
  154.                    werden zurückgesetzt, EMS-Speicher wieder freigegeben.
  155.                    AX enthält nach dem Aufruf die Adresse des aktuellen
  156.                    PSP von TREC. Damit kann TREC durch den Aufruf der
  157.                    Funktion $49 von DOS-$21 anschließend endgültig aus
  158.                    dem Speicher entfernt werden.
  159.  
  160.    Rückgabe:       AX= Aktuelle Segmentadresse des PSP von TREC
  161.  
  162.    Verändert wird: AX
  163.  
  164.    Hinweis:        Die Deinstallation von TREC aus einem Programm heraus,
  165.                    welches auch noch eine andere Funktion erfüllt, ist mit
  166.                    Vorsicht zu genießen. Falls dieses Programm selbst
  167.                    Vektoren verbiegt, kann es später (auch viel später!)
  168.                    zu einem Absturz kommen.
  169.                    Zu verdanken haben wir das dem Umstand, daß es noch immer
  170.                    keine allgemein verwendetete Norm zur "Vektorverbiegung"
  171.                    gibt, die eine gewisse Transzendenz dieser Geschichte
  172.                    einbringen würde. Siehe z.B. XBRA-Protokoll bei Atari,
  173.                    was allerdings auch noch zu verbessern wäre.
  174.  
  175. Funktion 1
  176. ----------
  177.  
  178.    Startparameter: AX=1
  179.  
  180.    Eigenschaft:    Status-Abfrage. Nach dem Aufruf sind die Register mit
  181.                    Informationen über TREC gefüllt:
  182.                    AX=Modus (0=Stand by, 1=Aufzeichnung, 2=Abspielen)
  183.                    BX=Offset des Aufzeichnungspointers zum Pufferstart
  184.                    CX=Offset des Abspielpointers zum Pufferstart
  185.                    DX=Handlenummer der EMS-Page (Seite 0) von TREC
  186.                    ES=Segmentadresse der Page-Frame des EMS-Treibers
  187.  
  188.    Verändert wird: AX, BX, CX, DX, ES
  189.  
  190. Funktion 2
  191. ----------
  192.  
  193.    Startparameter: AX=2
  194.  
  195.    Eigenschaft:    TREC-Reset. Löscht den Inhalt der Puffers. TREC wird in
  196.                    den Stand-by Modus geschaltet, wo er das System nicht
  197.                    beeinflußt. Die Pufferpointer werden auf Ihre Null-
  198.                    positionen gesetzt. 4096 Tastendrücke frei.
  199.  
  200.    Verändert wird: AX
  201.  
  202.    Hinweis:        Der Puffer, also die EMS-Page, wird nicht physikalisch
  203.                    gelöscht. Die Rücksetzung des Pointers führt jedoch
  204.                    dazu, daß TREC von diesem Pufferinhalt nichts mehr weiß.
  205.  
  206. Funktion 3
  207. ----------
  208.  
  209.    Startparameter: AX=3
  210.  
  211.    Eigenschaft:    Start der Aufzeichnung. TREC setzt die Puffer-Pointer
  212.                    in ihre Nullpositionen. Der System-Timer wird initiali-
  213.                    siert. Anschließend beginnt sofort die Aufzeichnung.
  214.  
  215.    Verändert wird: AX
  216.  
  217. Funktion 4
  218. ----------
  219.  
  220.    Startparameter: AX=4
  221.  
  222.    Eigenschaft:    Ende der Aufzeichnung. TREC beendet die Tastaturabfrage.
  223.  
  224.    Verändert wird: AX
  225.  
  226. Funktion 5
  227. ----------
  228.  
  229.    Startparameter: AX=5
  230.  
  231.    Eigenschaft:    Start des Abspielvorganges. TREC setzt den Puffer-Pointer
  232.                    der Abspielung in seine Nullposition. Der System-Timer
  233.                    wird initialisiert. Anschließend beginnt sofort der
  234.                    Abspielvorgang.
  235.  
  236.    Verändert wird: AX
  237.  
  238. Funktion 6
  239. ----------
  240.  
  241.    Startparameter: AX=6
  242.  
  243.    Eigenschaft:    Der Abspielvorgang wird beendet. Mit der Funktion 5 kann
  244.                    der gleiche Pufferinhalt jedoch immer wieder neu
  245.                    abgespielt werden.
  246.  
  247.    Verändert wird: AX
  248.  
  249. Funktion 7
  250. ----------
  251.  
  252.    Startparameter: AX=7, BX=neuer Einlese-Puffer-Pointer
  253.  
  254.    Eigenschaft:    Mit dieser Funktion kann der Einlese-Puffer-Pointer, der
  255.                    bestimmt, wo im Speicher die nächste gedrückte Taste
  256.                    abgespeichert wird, direkt gesetzt werden.
  257.                    Der Wert muß durch 4 dividierbar sein. TREC prüft NICHT,
  258.                    ob der Pointer einen brauchbaren Wert enthält!
  259.                    Wenn man selbstgeschriebene Daten in den EMS-Speicher
  260.                    kopiert, kann man diese Funktion einsetzen, um das Ende
  261.                    dieses Bereichs zu markieren.
  262.  
  263.    Verändert wird: AX
  264.  
  265.    Hinweis:        Der Pointer ist ein "Near"-Pointer. Segmentadresse ist
  266.                    immer die Seite 0 des EMS-Page-Frame.
  267.  
  268. Funktion 8
  269. ----------
  270.  
  271.    Startparameter: AX=8, BX=neuer Abspiel-Puffer-Pointer
  272.  
  273.    Eigenschaft:    Mit dieser Funktion kann der Abspiel-Puffer-Pointer, der
  274.                    bestimmt, wo im Speicher das nächste auszugebende Zeichen
  275.                    zu finden ist, direkt gesetzt werden.
  276.                    Der Wert muß durch 4 dividierbar sein. TREC prüft NICHT,
  277.                    ob der Pointer einen brauchbaren Wert enthält!
  278.                    Durch diese Funktion kann man z.B. auf eine ganz bestimmte
  279.                    Stelle im Speicher zugreifen und diese abspielen lassen.
  280.                    Der Timer (word $40:$6C) muß natürlich entsprechend
  281.                    eingestellt sein, bzw. eingestellt werden.
  282.  
  283.    Verändert wird: AX
  284.  
  285.    Hinweis:        Der Pointer ist ein "Near"-Pointer. Segmentadresse ist
  286.                    immer die Seite 0 des EMS-Page-Frame.
  287.  
  288.  
  289. Bevor Sie in einem Programm, welches TREC_386 nicht selbst installiert hat,
  290. davon ausgehen, daß TREC aktiv ist, sollten Sie sich besser Gewissheit
  291. darüber verschaffen, bevor Sie INT $7A aufrufen. Der INT $7A zeigt nämlich
  292. im anderen Fall nach NIL. Ihr Programm würde sich dann verabschieden.
  293.  
  294. Holen Sie sich besser über $35 von DOS-$21 den aktuellen Pointer des
  295. INT $7A. Verringern Sie den zurückgegebenen Offset um 4 Bytes (Unterlauf
  296. kann nicht stattfinden!). Falls TREC_386 installiert ist, finden Sie an
  297. der Adresse, auf die der Pointer jetzt zeigt, die Zeichenkette 'TREC'.
  298.  
  299. Mit den Funktionen ist es einem Programm im Prinzip möglich, die Eingaben
  300. des Anwenders selbst vorzugeben. Nicht nur für Demo-Programme sollte dies
  301. von Interesse sein. Letztlich kann ein Programm sich nun auch selbst
  302. editieren und neu compilieren - doch das führt wohl etwas zu weit.
  303.  
  304.  
  305. Formate
  306. =======
  307.  
  308. Alle Tastendrücke speichert TREC in seinem allokierten EMS-Speicherbereich.
  309. Mittels der Funktion zur Status-Abfrage kann man sich die Segmentadresse
  310. der Page-Frame des EMS-Treibers mitteilen lassen.
  311.  
  312. Mit Hilfe der ebenfalls übergebenen Handle-Nummer ist es nun durch den
  313. Aufruf der Funktion $44 des Interrupts $67 kein Problem mehr, sich den
  314. Speicher von TREC im Page-Frame darstellen zu lassen. TRECs logische
  315. Bildschirmseite ist immer Null.
  316.  
  317. Die 16 KB dieser EMS-Page sind zu maximal 4096 Records a 4 Bytes aufgeteilt.
  318. Die Tastendrücke sind sequentiell in korrekter zeitlicher Eingabeabfolge
  319. auf dieser Seite abgespeichert.
  320.  
  321. Jeder 4-Bytes-Record ist folgendermaßen aufgebaut:
  322.  
  323.       1 Byte  ASCII-Code der gedrückten Taste
  324.       1 Byte  Scan-Code der gedrückten Taste
  325.       1 Word  (lo/hi) Timer-Wert zur gedrückten Taste
  326.  
  327. Mit Hilfe des Pointer-Wertes (Mod 4 ist immer 0) kann die Anzahl der Tasten
  328. im Puffer, sowie die Anzahl der eventuell bereits abgespielten Tasten
  329. ermittelt werden. Dazu ist dieser Wert durch 4 zu dividieren.
  330.  
  331. Die Pointer zeigen stets auf die nächste zu belegende bzw. nächste
  332. abzuspielende Position.
  333.  
  334. Wer sich an den EMS-Speicher nicht heranwagen möchte, der kann auch direkt
  335. abgespeicherte Dateien von TREC bearbeiten. Das Format dieser Dateien
  336. entspricht dem oben beschriebenen Format - mit einer Ausnahme:
  337. Diese Dateien beginnen mit einem 4-Bytes-Record als Kennung. Dieser enthält
  338. die ASCII-Zeichen 'TREC'. Somit ergibt sich die Gesamtzahl der Zeichen in
  339. einer Datei zu: (Dateilänge div 4)-1
  340.  
  341. Das war schon alles, was die Formate hergeben.
  342.  
  343.  
  344. Schlußbemerkung
  345. ===============
  346.  
  347. Ich hoffe, daß sich die ganze Arbeit für TREC_386 auch gelohnt hat. Gelohnt
  348. hat sie sich dann, wenn Sie mit diesem Programm zufrieden sind und es
  349. gerne einsetzen. In diesem Fall, aber auch dann, wenn Sie dieses Programm
  350. fürchterlich finden, würde ich gerne Ihre Meinung dazu erfahren.
  351.  
  352. Uwe Kuhring
  353.