home *** CD-ROM | disk | FTP | other *** search
- ───────────────────────────────────────────────────────────────────
-
-
-
-
-
- ╔════════════════════════════════════════════════════════╗
- ║ ║█
- ║ MDEBUG V2.00 ║█
- ║ Release 01.07.1992 ║█
- ║ ║█
- ║ Highperformance Debugging Tool für PCs ║█
- ║ ║█
- ║ ║█
- ╟────────────────────────────────────────────────────────╢█
- ║ ║█
- ║ Erweiterungen, Änderungen und 'Last Minute Changes' ║█
- ║ von MDEBUG und den zugehörigen Utils ║█
- ║ ║█
- ╚════════════════════════════════════════════════════════╝█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ───────────────────────────────────────────────────────────────────
- Copyright (c) 1988 - 1992 by Bernd Schemmer
-
- Behobene Fehler in der Version V1.70 vom 31.03.1992
- ───────────────────────────────────────────────────
-
- ■ Der Handler für den Interrupt 09h wurde völlig neu geschrieben.
- Die bei der Benutzung von MDEBUG in vorherigen Versionen vereinzelt
- aufgetretenen Probleme mit einer hängengebliebenen Tastatur wurden
- dadurch beseitigt.
-
- ■ MDEBUG benutzt ab dieser Version unter den DOS-Versionen älter als
- 5.0 den Interrupt 16h überhaupt nicht mehr.
-
- ■ Die Taste <M> im Monitor funktionierte nicht immer korrekt.
- Der Fehler wurde behoben.
-
- ■ Nach dem Aufruf von MDEBUG mit dem Parameter SET zur Reaktivierung
- einer residenten Version wird jetzt beim nächsten Aufruf auch auto-
- matisch das Monitor-Fenster neu aufgebaut.
-
- ■ MDEBUG und das Util MDSHELP haben in der vorherigen Version die akt-
- uelle Bildschirmseite nicht korrekt behandelt, falls diese ungleich
- 0 war. Der Fehler wurde korrigiert.
-
- Ab dieser Version ruft MDEBUG zudem die Funktion 0 des Interfaces
- für die Kommandotreiber (Get Status) jedesmal nach der erneuten
- Ermittlung der aktuellen Bildschirmdaten auf (Taste <ALT-F9>).
-
- ■ 1 Zeichen lange Parameter führten in den vorherigen Versionen nicht
- zu einem Fehler. Der Fehler wurde korrigiert.
-
- ■ In der Dokumentation der vorherigen Version wurde irrtümlich angege-
- ben, daß die Taste <F7> im Interpreter die Register R1 bis R7 löscht.
- Dies ist nicht ganz korrekt - die Taste <F7> löscht die Register R1
- bis R8.
-
- ■ In der Dokumentation der vorherigen Version war die Beschreibung der
- Tasten <F6> und <SHIFT-F6> im Monitor und Interpreter vertauscht.
-
-
-
-
-
- ■ Der Interpreter-Befehl zum Öffnen, Ändern oder Schliessen des zweiten
- Windows des Monitors lautet:
-
- F {n}
-
- (nicht 'X {n}' wie in der Dokumentation der vorherigen Version irr-
- tümlich angegeben).
-
- ■ Ebenfalls fehlerhaft in der Dokumentation der vorherigen Version war
- die Beschreibung der Returncodes der Funktion 2 zur Kommunikation
- mit den Kommandotreibern. Sie muß lauten:
-
- Mögliche Returncodes der Funktion 2 der Kommandotreiber:
-
- 0 - Ausführung der Befehlszeile fortsetzen
- 1 - MDEBUG verlassen (Neustart im Interpreter)
- 2 - MDEBUG verlassen mit automatischer Rückkehr
- sobald DOS nicht aktiv ist (Neustart im Interpreter)
- (*) 5 - Übernehme neue Befehlszeile in den Eingabepuffer.
- Die Befehlszeile muß als Nullstring bei DS:SI
- stehen. Sie kann max. 66 Zeichen lang sein.
- (*) 6 - wie 5, die Befehlszeile wird allerdings sofort
- ausgeführt. Die neue Befehlszeile wird intern nicht
- gespeichert. (d.h. sie gilt nicht für <CTRL-RETURN>
- oder <SHIFT-RETURN>)
-
- Alle anderen Werte werden wie der Wert 0 behandelt.
-
- ( (*) = Angaben waren in der vorherigen Version falsch)
-
-
-
-
-
-
-
- Erweiterungen der Version V1.70 vom 31.03.1992
- ──────────────────────────────────────────────
-
- ■ MDEBUG und die Utils wurden an DOS 5.0 angepasst.
-
- ■ In der gesamten Dokumentation wurde, zur Vermeidung von Mehrdeutig-
- keiten, der Begriff 'Debugger' durch den Begriff 'Interpreter' aus-
- getauscht.
-
- ■ Der User-Int wurde um eine Funktion zur Ermittlung des aktuellen
- Teils (Monitor, Interpreter oder Online-Hilfe) von MDEBUG erweitert:
-
- Funktion 7 - Ermittle aktiven Teil von MDEBUG
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 7
- DS:SI zeigt auf das Passwort als ASCIIZ-String
-
- Ausgabe: AX = 0FFFEh ->> Passwort inkorrekt
- AX = 0FFFDh ->> Bildschirmmodus inkorrekt
-
- sonst:
-
- Bit 0 von AL = 1 ->> der nächste Aufruf von MDEBUG
- startet im Interpreter
- Bit 0 von AL = 0 ->> der nächste Aufruf von MDEBUG
- startet im Monitor
- Bit 1 von AL = 1 ->> der nächste Aufruf von MDEBUG
- startet in der Online-Hilfe
- Bit 1 von AL = 0 ->> der nächste Aufruf von MDEBUG
- startet nicht in der Online-Hilfe
-
- ■ Falls der User-Int mit einer unbekannten Funktionsnummer aufgerufen
- wird, gibt er jetzt den Fehlercode 0FFFCh zurück.
-
- ■ Das Flag für den Interrupt 08h (automatischer Aufruf von MDEBUG) wird
- jetzt nur noch durch die Funktionen 3, 4 und 5 des User-Ints zurück-
- gesetzt.
-
-
-
-
-
-
- ■ Beim Aufruf des Programms MDEBUG.COM werden die geladenen Bildschirm-
- und Kommandotreiber jetzt nicht mehr neu initialisiert.
-
- ■ Falls MDEBUG über CALLMDB aufgerufen wird, startet es ab jetzt immer
- im Interpreter.
- Außerdem wurde für das Programm CALLMDB zusätzlich der Parameter
- /Pxxxx implementiert. Mit diesem kann das von CALLMDB für den Aufruf
- von MDEBUG zu verwendende Passwort festgelegt werden.
- Ebenfalls erweitert wurden die Fehlermeldungen von CALLMDB.
-
- ■ Im Monitor wird jetzt immer auch der Offset der aktuellen Cursor-
- Position angezeigt. Dieser ist im Interpreter über die Konstante CU
- benutzbar.
-
- ■ Mit der Taste <T> kann nun im Monitor die Monitor-Start-Adresse mit
- der Adresse der aktuellen Cursorposition geladen werden.
-
- ■ MDEBUG zählt jetzt bei der Ermittlung des letzten MCBs (Taste <L> im
- Monitor) die MCBs mit und bricht die Suche, nach der Ausgabe eines
- Fehlertons, ab, falls mehr als 255 MCBs durchlaufen wurden (da in
- diesem Fall sehr wahrscheinlich die MCB-Kette fehlerhaft ist).
-
- ■ Die Ausgabe des MCB-Kennzeichens von MDEBUG im Interpreter wurde ent-
- fernt.
-
- ■ Mit der Taste <CTRL-Q> im Interpreter kann nun die akustische Ausgabe
- von MDEBUG ein- oder ausgeschaltet werden.
-
- ■ Als BREAK-Taste während eines Aufrufes von MDEBUG gilt jetzt nur
- noch die Taste <CTRL-ScrollLock>.
-
- ■ Im Interpreter können explizite Werte jetzt in jedem beliebigen
- Format mit einer Basis zwischen 2 und 16 eingegeben werden. Zudem
- kann das Formatierungszeichen '.' jetzt in allen Formaten (auch hex.)
- angegeben werden.
-
- ■ Folgende zusätzliche Befehle wurden implementiert (Groß/Kleinschrei-
- bung beachten!):
-
- a op1,op2 - op1 := op1 + op2 + CF
-
- Addiert den Wert des 2. Operanden und den Wert des Carryflags
- auf den 1. Operanden (entspricht dem Befehl 'ADC')
-
- s op1,op2 - op1 := op1 - op2 - CF
-
- Subtrahiert den Wert des 2. Operanden und den Wert des Carry-
- flags vom 1. Operanden (entspricht dem Befehl 'SBB')
-
-
- Q{UIT}L - MDEBUG verlassen und die Tastatur sperren.
-
- Wird MDEBUG über diesen Befehl verlassen, so beendet es den
- Aufruf und sperrt die Tastatur. Der unterbrochene Prozeß läuft
- danach ganz normal weiter - allerdings führt jeder Versuch, eine
- Taste über die Tastatur einzugeben dazu, daß MDEBUG zuerst das
- Passwort abfrägt. Erst nach der korrekten Eingabe des Passwortes
- gibt MDEBUG die Tastatur wieder frei. Die Sperrung wird auch
- wieder aufgehoben durch den Aufruf von MDEBUG über die Funktion
- 3 bzw. 4 des User-Ints oder einen Aufruf von MDEBUG über einen
- zusätzlichen Interrupt.
- Der Befehl dient vor allem dazu, den PC für kurze Zeit für Ein-
- gaben zu sperren ohne eine evtl. Programmausführung zu unter-
- brechen.
-
- Der Befehl 'QL' funktioniert nur, falls ein aktives Passwort für
- MDEBUG installiert ist. Da MDEBUG bei der Abfrage des Passwortes
- den Bildschirmmodus in diesem Fall nicht berücksichtigt, kann es
- vorkommen, daß das Passwort blind eingegeben werden muß. Während
- der Sperrung ist auch die Tastenkombination <CTRL-ALT-DEL>
- gesperrt.
-
- Der Befehlsname muß mit einem 'L' enden.
-
- Hinweis: Maus-Eingaben werden nicht unterbunden.
-
- ■ In MDEBUG V1.70 wurde noch eine weitere Konstante implementiert:
-
- Die Konstante P4 enthält den Offset der Variablen 'MDebugCursor'
- von MDEBUG. Falls der Inhalt dieser Variablen ungleich 0 ist, nimmt
- MDEBUG diesen für die Form des Cursors (Format: Wort, Aufbau: High-
- byte: Top Line, Lowbyte: Bottom Line, jeweils nur die unteren 5
- Bits). Die Variable ist normalerweise auf 0 gesetzt und sollte nur
- verändert werden, falls während eines Aufrufs von MDEBUG kein Cursor
- erscheint.
- Die Variable kann über den Befehl 'MOV CS:[P4],nnnn' jederzeit ver-
- ändert werden. Die Änderung ist sofort wirksam.
- Falls die Variable MDebugCursor ungleich 0 ist, wird nur deren
- Inhalt für die Form des Cursors benutzt, d.h. der Cursor ist in allen
- Modi (Interpreter: Insert/Overwrite, Monitor: frei/blockiert) gleich.
-
- ■ Die Felder 'Save_SE' und 'Save_OF' in der Datenstruktur von MDEBUG
- (Offsets 36h und 38h) wurden vertauscht (siehe Funktionen für die
- Kommandotreiber).
-
-
-
-
-
-
- ■ Die Dokumentation des Programms SHOWINT.COM wurde vollständig über-
- arbeitet. Ich hoffe sie ist jetzt verständlicher.
-
- ■ Durch noch weitergehende Speicherplatzoptimierungen belegt MDEBUG in
- dieser Version wieder weniger als 16 KB Speicher.
-
- ■ Das Archiv PD_1.EXE ist ab dieser Version wegen Platzmangels in der
- Shareware-Version nicht mehr enthalten.
-
-
- Korrekturen und Erweiterungen der Version 1.70 des Treibers MDDISDRV.COM
- ────────────────────────────────────────────────────────────────────────
-
- ■ Der Fehler bei der Auswertung des Parameters /S[switches] wurde
- korrigiert.
-
- ■ In der vorherigen Version von MDDISDRV konnte das Segment-Register CS
- nicht direkt geändert werden. Der Fehler wurde beseitigt.
-
- ■ In der vorherigen Version hat der Disassembler die Namen der Copro-
- zessorbefehle FLDL2E, FLDL2T, FLDLG2 und FLDLN2 falsch ausgegeben
- (jeweils ohne das zweite 'L'). Der Fehler wurde korrigiert.
-
- In der Dokumentation zur vorherigen Version fehlte zudem folgender
- Hinweis:
-
- Der Befehl 'FFREEP i' (Opcode DF r/m, r/m-Byte: 11_000_xxx) des 80287
- ist dem A86 nicht bekannt.
-
- ■ Ebenfalls falsch ausgegeben wurden die Befehle mit dem Opcode 83h der
- 80x86-Prozessoren, falls der zweite Operand dieser Befehle (also das
- immediate Byte) ein Wert größer 07Fh war.
- Dies betraf die durch den Opcode 83h codierten Formen der Befehle
-
- ADD ew,ib / OR ew,ib / ADC ew,ib / SBB ew,ib
- AND ew,ib / SUB ew,ib / XOR ew,ib / CMP ew,ib
-
- Die Beschreibung dieser Befehle in der Dokumentation war ebenfalls
- irreführend und wurde in dieser Version korrigiert.
-
- ■ Der Opcode '0F 3C xx' wurde, falls die aktuelle Ziel-CPU der V20 war,
- vom Disasembler irrtümlich als Befehl 'CALL80 xx' erkannt. Der Fehler
- wurde beseitigt.
-
-
- ■ Der Disassembler erkennt jetzt auch den undokumentierten Befehl
-
- LOADALLD (Opcode 0F 07)
-
- des 80386 (Quelle: c't 11/1991).
-
- ■ Kurze unbedingte Sprünge werden jetzt als 'JMP SHORT nnn' ausgegeben.
-
- ■ Für immediate Bytes wird jetzt zusätzlich der Wert als ASCII-Code und
- im dezimalen und im binären Format ausgegeben.
-
- ■ Für immediate Words wird jetzt zusätzlich der Wert im dezimalen
- Format ausgegeben.
-
- ■ Über den neuen Schalter K können jetzt alle unwichtigeren Kommentare
- des Disassemblers unterdrückt werden.
-
- ■ Der Treiber MDDISDRV markiert jetzt alle Opcodes, die auf einigen,
- aber nicht auf allen Prozessoren möglich sind mit der Zeichenfolge
- '+*' hinter dem mindestens nötigen Prozessor. Dies betrifft z.B.
- den Befehl 'MOV CS,rw', der auf dem 8086 und dem V20 (evtl. auch
- dem 80186) möglich ist. Ebenfalls mit der Zeichenfolge '+*' gekenn-
- zeichnet werden Befehle, die auf den Prozessoren verschieden ausge-
- führt werden; z.B. der Befehl 'AAD', für den bei 80x86-Prozessoren
- (nicht aber beim V20) das zweite Byte des Opcodes ein Operand ist
-
-
-
-
-
- ■ Beim Aufruf des Disassemblers im Monitor oder im Interpreter wird
- jetzt immer in den Disassembler- bzw. Assembler-Modus geschaltet.
- Ausgenommen hiervon ist nur der Aufruf über die Taste <F5> (jeweils
- im Monitor und im Interpreter).
-
- ■ Der Drucker kann jetzt zwischen LPT1 und LPT9 gewählt werden. D.h. es
- sind jetzt bis zu 6 virtuelle Drucker (LPT3 ... LPT9) möglich.
-
- ■ Mit dem neuen Befehl I des Disassemblers kann nun direkt im Disas-
- sembler ein bestimmter Eintrag aus der Interrupt-Tabelle als neue
- Start-Adresse für den Disassembler genommen werden.
-
- ■ Die Online-Hilfe wurde um eine zusätzliche (teilweise kontext-sensi-
- tive) Seite mit der Beschreibung der Statuszeilen des Disassemblers
- erweitert.
-
- ■ Durch die neuen Tasten <W> (= Offset der Start-Adresse um 2 erhöhen)
- und <A> (= Offset der Start-Adresse um 2 vermindern) und der Möglich-
- keit, über die Taste <CTRL-F3> den Modus für die untere Dump-Zeile
- beliebig festlegen zu können, eignet sich MDDISDRV jetzt auch für die
- Inspektion von Sprung- oder Variablen-Tabellen.
-
- ■ Die Register FS und GS können jetzt auch geändert werden, falls als
- Ziel-CPU nicht der 80386 angegeben wurde.
-
- ■ Über den neuen Befehl 'DC {text}{#26}' für den Interpreter können
- jetzt auch Textzeilen auf den aktuellen Drucker des Disassemblers
- ausgegeben werden.
-
- ■ Die Funktion 'Folge dem Befehl' ist jetzt bei allen Befehlen mit
- Speicheroperanden, die über ein 'mod r/m'-Byte addressiert sind,
- möglich. (D.h. auch bei Befehlen mit durch Index- und/oder Basis-
- register addressierten Speicheroperanden, wie z.B. 'MOV AX,[DI-5]'
- oder 'INC B[BX]')
- Hierfür wurde zusätzlich das Hilfsregister HB implementiert, welches
- den aktuellen Inhalt des Index- und/oder des Basisregisters repräsen-
- tiert.
-
- ■ Die Funktion 'Folge dem Befehl' speichert jetzt im Disassembler- und
- im Assembler-Modus bei Befehlen mit einem Sprungziel (z.B. 'jz xxx',
- 'jmp seg:off', 'int nn', 'into', 'bound rw,ew', etc.) die Adresse
- des dem aktuellem Befehl folgendem Befehls auf dem Adressen-Stack.
-
- ■ Die akustischen Ausgaben des Disassemblers können jetzt durch einen
- neuen Parameter (/Qn, n=1 ->> akustische Ausgaben unterdrücken und
- n=0 ->> akustische Ausgaben nicht unterdrücken, Voreinstellung) und
- durch die Taste <CTRL-Q> im Disassembler ein- und ausgeschaltet
- werden.
-
-
- ■ Über die durch den Parameter # ausgegebene Tabelle können jetzt auch
- die Tasten zum Aufruf des Disassemblers in MDEBUG geändert werden.
-
- ■ Die Beschreibung der Opcodes der 80x86-Prozessoren wurde aus der
- Dokumentation für die Treiber extrahiert und befindet sich nun in der
- Datei OPCODES.PRT. Die Beschreibung der Änderungen und Erweiterungen
- der neuen Version befindet sich nun in der Datei WHATS.NEW (welche
- Sie gerade lesen), die chronologische Update-History bis zur jeweils
- vorletzten Version befindet sich in der Datei HISTORY.DOC.
- Diese beiden Dateien, OPCODES.PRT und HISTORY.DOC, sind aus Platz-
- gründen ab dieser Version nur noch in der Vollversion enthalten.
-
-
-
-
- Behobene Fehler in der Version V2.00 vom 01.07.1992
- ───────────────────────────────────────────────────
-
- ■ Die Taste <ALT-F5> im Interpreter hat in der vorherigen Version (nur
- in den Kopien von MDEBUG.COM mit einem Datum vor dem 01.04.1992)
- einen Systemabsturz verursacht. Der Fehler wurde behoben.
-
- ■ Das Zeichen '■' ist, im Gegensatz zur Angabe in der Dokumentation der
- vorherigen Version, bei der Suche einer Bytefolge über den Befehl
- SH im Interpreter KEIN Jokerzeichen (wohl aber bei der Suche im
- Monitor).
-
- ■ Die Offsets in der Tabelle mit dem Aufbau der Datenstruktur von
- MDEBUG (Funktion 2 der Kommandotreiber) ab dem Offset 3Ah (exklusive)
- waren in der Dokumentation der vorherigen Version falsch angegeben.
- Richtig ist:
-
- ┌─────────────────┬───────┬─────────────────────────────────┐
- │ Offset │ │ Funktion der Speicherstelle │
- │ (relativ zu DI) │ Länge │ │
- ╞═════════════════╪═══════╪═════════════════════════════════╡
- │ 00h .. 3Ah │ │ Angaben waren korrekt │
- │ │ │ │
- │ │ │ Die nächsten Angaben waren │
- │ │ │ fehlerhaft, sie müssen lauten: │
- │ 3Ah │ 18h │ gesicherte Registerwerte (...) │
- │ 52h │ 18h │ gesicherte Registerwerte (...) │
- │ │ │ │
- │ 6Ah │ 4h │ Adresse des DOS-Info-Blocks │
- │ │ │ │
- │ ... │ │ Die Offsets der folgenden │
- │ │ │ Felder müssen jeweils um 18h │
- │ │ │ (= 24xD) erhöht werden │
- └─────────────────┴───────┴─────────────────────────────────┘
-
-
-
-
-
-
- Erweiterungen der Version V2.00 vom 01.07.1992
- ──────────────────────────────────────────────
-
- ■ MDEBUG benutzt jetzt Buchstaben-Schalter zur Anzeige verschiedener
- Schalterstellungen. Diese werden jeweils auf den oberen Rahmen der
- Fenster des Monitors bzw. des Interpreters ausgegeben.
-
- Im Monitor sind folgende Schalter implementiert:
-
- ┌──────────┬───────┬──────────────────────────────────┬───────────┐
- │ Schalter │ Wert │Bedeutung │ Taste │
- ╞══════════╪═══════╪══════════════════════════════════╪═══════════╡
- │ Monitor- │ b │ direkte Änderungen im Monitor │ <CTRL-B> │
- │ Mode │ │ möglich │ │
- │ │ B │ direkte Änderungen im Monitor │ │
- │ │ │ NICHT möglich │ │
- ├──────────┼───────┼──────────────────────────────────┼───────────┤
- │ Update- │ * │ Monitor-Inhalt wird laufend │ <F9> │
- │ Mode │ │ upgedated │ │
- │ │ - │ Monitor-Inhalt wird nur nach │ │
- │ │ │ einem Tastendruck upgedated │ │
- └──────────┴───────┴──────────────────────────────────┴───────────┘
-
- Im Interpreter sind folgende Schalter implementiert:
-
- ┌──────────┬───────┬──────────────────────────────────┬───────────┐
- │ Schalter │ Wert │Bedeutung │ Taste │
- ╞══════════╪═══════╪══════════════════════════════════╪═══════════╡
- │ Upcase- │ U │ Buchstaben werden in Großbuch- │ <CTRL-U> │
- │ Mode │ │ staben konvertiert │ │
- │ │ u │ Buchstaben werden NICHT in Groß- │ │
- │ │ │ buchstaben konvertiert │ │
- ├──────────┼───────┼──────────────────────────────────┼───────────┤
- │ Quiet- │ Q │ akustische Ausgaben sind aus- │ <CTRL-Q> │
- │ Mode │ │ geschaltet │ │
- │ │ q │ akustische Ausgben sind einge- │ │
- │ │ │ schaltet │ │
- ├──────────┼───────┼──────────────────────────────────┼───────────┤
- │ Input- │ I │ Eingaben erfolgen im INSERT- │ <INSERT> │
- │ Mode │ │ Modus │ │
- │ │ i │ Eingaben erfolgen im OVERWRITE- │ │
- │ │ │ Modus │ │
- └──────────┴───────┴──────────────────────────────────┴───────────┘
-
-
- ■ Im Monitor von MDEBUG wird nun der Wert des aktuellen Bytes auch im
- dezimalen Format und als ASCII-Code ausgegeben.
-
- ■ Die Eingabeparameter der Funktion 3h des Interfaces für die Kommando-
- treiber wurde erweitert.
-
- ■ Fehlerhafte oder falsche Parameter führen jetzt zum Programm-Abbruch.
-
- ■ Beim Parameter 'HELP' reicht jetzt die Angabe eines Pfades falls die
- Hilfstextdatei 'MDEBUG.HLP' heißt.
-
- ■ Im Scrollbar der Online-Hilfe von MDEBUG werden jetzt auch die Posi-
- tionen der Marker angezeigt.
-
- ■ Die Meldungen von MDEBUG wurden erweitert.
-
- ■ Die Werte der Errorlevel von MDEBUG wurden geändert.
-
- ■ Das Util CALLMDB erkennt jetzt ebenfalls den Parameter '#' (siehe
- Beschreibung der Parameter von MDEBUG)
-
- ■ Der Speicherbedarf des Kommandotreibers MDHIDSRV.COM konnte durch
- weitere Optimierungen um 400 Byte gesenkt werden.
-
- ■ Die Abbruchtaste für das Util SHOWINT ist jetzt <CTRL-X>.
-
-
-
-
- Korrekturen und Erweiterungen der Version V2.00 des Treibers MDDISDRV.COM
- ─────────────────────────────────────────────────────────────────────────
-
- ■ Der Algorithmus zum seitenweisen Rückwärtsscrollen (Taste <PageUp>)
- wurde wesentlich verbessert. Er ist jetzt ca. 50 % schneller und zu-
- sätzlich auch noch sehr viel zielgenauer als vorher!
-
- ■ Im Disassembler können jetzt auch Referenzen auf bestimmte Speicher-
- stellen gesucht werden. Hierfür wurden folgende Tastenbelegungen neu
- implementiert:
-
- <F8>
-
- Sucht eine Code-Referenz (z.B. 'jmp cb', 'int n', 'jc cb', etc.) auf
- eine beliebige Adresse ab der Adresse in der aktuellen Zeile.
-
- <SHIFT-F8>
-
- Sucht eine Daten-Referenz (z.B. 'mov ax,[ew]') auf eine beliebige
- Adresse ab der Adresse in der aktuellen Zeile.
-
- In beiden Fällen kann als Adresse, für die eine Referenz gesucht
- werden soll, eine beliebige Kombination aus Segment und Offset ein-
- gegeben werden. Beachtet werden muß, daß bei der Suche nach einer
- Daten-Referenz der eingegebene Wert für das Segment ignoriert wird.
-
- Gesucht wird immer nur bis zum Ende eines Segments. Die Suche kann
- jederzeit über die Taste <ESC> abgebrochen werden. Falls die Suche
- abgebrochen oder keine Referenz gefunden wurde, wird die Anzeige des
- Disassemblers nicht verändert. In diesen Fall kann zudem direkt nach
- der Suche über die Taste <0> der letzte überprüfte Befehl ermittelt
- werden (d.h. falls eine abgebrochene Suche ab dem zuletzt überprüften
- Befehl fortgesetzt werden soll, müssen hierfür direkt nach der Suche
- die Tasten <0> und <F8> bzw. <SHIFT-F8> benutzt werden).
- Wird eine Referenz gefunden, wird der Code ab dem gefundenen Befehl
- im Disassembler angezeigt.
-
- <CTRL-F8>
-
- Letzte Suche fortsetzen.
- Gesucht wird die zuletzt gesuchte Adresse mit dem zuletzt angegebenen
- Referenz-Art (Code / Data) ab dem auf den zuletzt gefundenen Befehl
- folgenden Befehl (d.h. nicht ab dem aktuellen Befehl!).
- Diese Funktion ist nur möglich, falls vorher mindestens einmal eine
- Daten- oder Code-Referenz gesucht wurde.
-
-
-
-
-
-
- Hinweis:
-
- In dem als Adresse, für die eine Code-Referenz gesucht wird, die
- aktuelle Adresse einer Interrupt-Routine angegeben wird, können mit
- dieser Funktion auch Interrupt-Aufrufe gesucht werden!
-
- Beispiel:
-
- Suche nach einer Code-Referenz für den Interrupt 21h
-
- 1. Über die Tastenfolge 'I21 <RETURN>' den Disassembler zur Anzeige
- des Codes des Interrupt 21h veranlassen.
-
- 2. Über die Taste <Insert> die Adresse der Interrupt-Routine auf den
- Adressen-Stack pushen.
-
- 3. Über die Taste <0> zurück zur alten Startadresse springen
-
- 4. Über die Taste <F8> die Suche nach der Code-Referenz starten. Die
- Adresse, die gesucht werden muß, steht jetzt als oberste Adresse
- auf dem Adressen-Stack.
-
- ■ Das Zeichen #26 wird jetzt vom Befehl DC nicht mehr interpretiert.
- Zur Kennzeichnung des Endes der Parameters muß daher jetzt das Ver-
- kettungszeichen ('^') von MDEBUG verwendet werden
-
- ■ Beim Scrollen des Stacks (Taste <TAB>) wird jetzt jeweils der Code
- bzw. die Daten für die aktuelle Stack-Adresse in den oberen 10 Zeilen
- angezeigt.
- Die 'alte Form' des Scrollens kann über die Taste <SHIFT-TAB> aufge-
- rufen werden.
-
- ■ Falls der Adressen-Stack blockiert ist, kann jetzt auch die Taste
- <CursorRight> nicht mehr benutzt werden.
-
- ■ Die Ausgabe von immediate Bytes bzw. Words wurde verbessert.
- U.a. werden jetzt die Operanden von logischen Befehlen (AND, OR, TEST
- und XOR), falls möglich, nur im binären Format ausgegeben.
-
- ■ Falls ein Verzweigungsbefehl ( CALL, JMP, INT, etc.) auf einen der
- Befehle RET, RETF, IRET oder HLT zeigt, wird dies jetzt hinter dem
- Verzweigungsbefehl als Kommentar angezeigt.
-
- ■ Durch die Taste <CTRL-End> kann das Fenster des DisAssemblers jetzt
- in den unteren Bildschirmbereich verschoben werden.
-
- ■ Durch die Taste <CTRL-Home> kann das Fenster des DisAssemblers jetzt
- in den oberen Bildschirmbereich verschoben werden.
-
- ■ Über die beiden neuen Parameter '*name' und '&name' kann jetzt der
- Status des Disassemblers in eine Datei gesichert bzw. aus einer Datei
- geladen werden.
-
-
-
- Last Minute Infos über MDEBUG und die zugehörigen Utils
- ───────────────────────────────────────────────────────
-
- Die folgenden Punkte sind in der Dokumentation zu MDEBUG falsch oder
- fehlerhaft angegeben:
-
- ■ keine weiteren fehlerhaften Angaben in der Dokumentation vorhanden.
-
-
- Last Minute Changes von MDEBUG und den zugehörigen Utils
- ────────────────────────────────────────────────────────
-
- Die folgenden Erweiterungen/Änderungen wurden in letzter Minute durch-
- geführt und konnten daher noch nicht im Handbuch berücksichtigt werden.
-
- ■ keine weiteren 'Last Minute Changes' in dieser Version
-
- ───────────────────────────────────────────────────────────────────
-
-
-