home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / tools / debugger / mdebug / mdebug22.exe / WHATS.NEW < prev   
Encoding:
Text File  |  1992-06-05  |  26.6 KB  |  657 lines

  1.     ───────────────────────────────────────────────────────────────────
  2.  
  3.  
  4.  
  5.  
  6.  
  7.        ╔════════════════════════════════════════════════════════╗
  8.        ║                                                        ║█
  9.        ║                      MDEBUG V2.00                      ║█
  10.        ║                   Release 01.07.1992                   ║█
  11.        ║                                                        ║█
  12.        ║         Highperformance Debugging Tool für PCs         ║█
  13.        ║                                                        ║█
  14.        ║                                                        ║█
  15.        ╟────────────────────────────────────────────────────────╢█
  16.        ║                                                        ║█
  17.        ║   Erweiterungen, Änderungen und 'Last Minute Changes'  ║█
  18.        ║           von MDEBUG und den zugehörigen Utils         ║█
  19.        ║                                                        ║█
  20.        ╚════════════════════════════════════════════════════════╝█
  21.         ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.     ───────────────────────────────────────────────────────────────────
  54.              Copyright (c) 1988 - 1992 by Bernd Schemmer
  55.  
  56. Behobene Fehler in der Version V1.70 vom 31.03.1992
  57. ───────────────────────────────────────────────────
  58.  
  59. ■ Der Handler für den Interrupt 09h wurde völlig neu geschrieben.
  60.   Die bei der Benutzung  von MDEBUG in vorherigen  Versionen vereinzelt
  61.   aufgetretenen  Probleme  mit einer  hängengebliebenen Tastatur wurden
  62.   dadurch beseitigt.
  63.  
  64. ■ MDEBUG  benutzt  ab dieser  Version unter den DOS-Versionen älter als 
  65.   5.0 den Interrupt 16h überhaupt nicht mehr.
  66.  
  67. ■ Die Taste <M> im Monitor funktionierte nicht immer korrekt. 
  68.   Der Fehler wurde behoben.
  69.  
  70. ■ Nach  dem Aufruf von MDEBUG  mit dem Parameter SET  zur Reaktivierung
  71.   einer residenten Version wird  jetzt beim nächsten  Aufruf auch auto-
  72.   matisch das Monitor-Fenster neu aufgebaut.
  73.  
  74. ■ MDEBUG und das Util MDSHELP haben in der vorherigen Version  die akt-
  75.   uelle  Bildschirmseite nicht korrekt behandelt,  falls diese ungleich 
  76.   0 war. Der Fehler wurde korrigiert.
  77.  
  78.   Ab dieser  Version ruft  MDEBUG zudem  die Funktion 0  des Interfaces
  79.   für  die  Kommandotreiber  (Get Status)  jedesmal nach  der  erneuten
  80.   Ermittlung der aktuellen Bildschirmdaten auf (Taste <ALT-F9>).
  81.  
  82. ■ 1 Zeichen lange Parameter führten  in den  vorherigen Versionen nicht
  83.   zu einem Fehler. Der Fehler wurde korrigiert.
  84.  
  85. ■ In der Dokumentation der vorherigen Version wurde  irrtümlich angege-
  86.   ben, daß die Taste <F7> im Interpreter die Register R1 bis R7 löscht.
  87.   Dies ist nicht ganz korrekt  -  die Taste <F7> löscht die Register R1
  88.   bis R8.
  89.  
  90. ■ In der Dokumentation der vorherigen Version war  die Beschreibung der
  91.   Tasten <F6> und <SHIFT-F6> im Monitor und Interpreter vertauscht.
  92.  
  93.  
  94.  
  95.  
  96.  
  97. ■ Der Interpreter-Befehl zum Öffnen, Ändern oder Schliessen des zweiten
  98.   Windows des Monitors lautet:
  99.  
  100.            F {n}
  101.  
  102.   (nicht 'X {n}' wie  in der Dokumentation  der vorherigen Version irr-
  103.    tümlich angegeben).
  104.  
  105. ■ Ebenfalls fehlerhaft in der Dokumentation der  vorherigen Version war
  106.   die  Beschreibung der  Returncodes der  Funktion 2 zur  Kommunikation
  107.   mit den Kommandotreibern. Sie muß lauten:
  108.  
  109.   Mögliche Returncodes der Funktion 2 der Kommandotreiber:
  110.  
  111.                 0 - Ausführung der Befehlszeile fortsetzen
  112.                 1 - MDEBUG verlassen (Neustart im Interpreter)
  113.                 2 - MDEBUG verlassen mit automatischer Rückkehr
  114.                     sobald DOS nicht aktiv ist (Neustart im Interpreter)
  115.            (*)  5 - Übernehme neue Befehlszeile in den Eingabepuffer.
  116.                     Die Befehlszeile muß als Nullstring bei DS:SI
  117.                     stehen. Sie kann max. 66 Zeichen lang sein.
  118.            (*)  6 - wie 5, die Befehlszeile wird allerdings sofort
  119.                     ausgeführt. Die neue Befehlszeile wird intern nicht
  120.                     gespeichert. (d.h. sie gilt nicht für <CTRL-RETURN>
  121.                     oder <SHIFT-RETURN>)
  122.  
  123.                 Alle anderen Werte werden wie der Wert 0 behandelt.
  124.  
  125.   ( (*) = Angaben waren in der vorherigen Version falsch)
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133. Erweiterungen der Version V1.70 vom 31.03.1992
  134. ──────────────────────────────────────────────
  135.  
  136. ■ MDEBUG und die Utils wurden an DOS 5.0 angepasst.
  137.  
  138. ■ In der  gesamten Dokumentation  wurde, zur Vermeidung von Mehrdeutig-
  139.   keiten, der Begriff  'Debugger' durch den  Begriff 'Interpreter' aus-
  140.   getauscht.
  141.  
  142. ■ Der User-Int  wurde um  eine  Funktion zur  Ermittlung  des aktuellen
  143.   Teils (Monitor, Interpreter oder Online-Hilfe) von MDEBUG erweitert:
  144.  
  145.     Funktion 7 - Ermittle aktiven Teil von MDEBUG
  146.     ───────────────────────────────────────────────────────────────────
  147.  
  148.       Eingabe:  AH = 7
  149.                 DS:SI zeigt auf das Passwort als ASCIIZ-String
  150.  
  151.       Ausgabe:  AX = 0FFFEh ->> Passwort inkorrekt
  152.                 AX = 0FFFDh ->> Bildschirmmodus inkorrekt
  153.  
  154.                 sonst:
  155.  
  156.                 Bit 0 von AL = 1 ->> der nächste Aufruf von MDEBUG
  157.                                      startet im Interpreter
  158.                 Bit 0 von AL = 0 ->> der nächste Aufruf von MDEBUG
  159.                                      startet im Monitor
  160.                 Bit 1 von AL = 1 ->> der nächste Aufruf von MDEBUG
  161.                                      startet in der Online-Hilfe
  162.                 Bit 1 von AL = 0 ->> der nächste Aufruf von MDEBUG
  163.                                      startet nicht in der Online-Hilfe
  164.  
  165. ■ Falls der User-Int mit  einer unbekannten  Funktionsnummer aufgerufen
  166.   wird, gibt er jetzt den Fehlercode 0FFFCh zurück.
  167.  
  168. ■ Das Flag für den Interrupt 08h (automatischer Aufruf von MDEBUG) wird
  169.   jetzt nur  noch durch die Funktionen 3, 4 und 5 des User-Ints zurück-
  170.   gesetzt.
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. ■ Beim Aufruf des Programms MDEBUG.COM werden die geladenen Bildschirm-
  178.   und Kommandotreiber jetzt nicht mehr neu initialisiert.
  179.  
  180. ■ Falls MDEBUG  über CALLMDB aufgerufen wird, startet es ab jetzt immer
  181.   im Interpreter.
  182.   Außerdem  wurde  für  das Programm  CALLMDB  zusätzlich der Parameter
  183.   /Pxxxx implementiert.  Mit diesem kann das von CALLMDB für den Aufruf
  184.   von MDEBUG zu verwendende Passwort festgelegt werden.
  185.   Ebenfalls erweitert wurden die Fehlermeldungen von CALLMDB.
  186.  
  187. ■ Im Monitor wird  jetzt immer  auch der  Offset  der aktuellen Cursor-
  188.   Position angezeigt. Dieser ist  im Interpreter  über die Konstante CU
  189.   benutzbar.
  190.  
  191. ■ Mit  der Taste <T> kann nun  im Monitor die Monitor-Start-Adresse mit
  192.   der Adresse der aktuellen Cursorposition geladen werden.
  193.  
  194. ■ MDEBUG zählt jetzt bei der Ermittlung des letzten MCBs  (Taste <L> im
  195.   Monitor) die MCBs mit  und bricht  die Suche,  nach der Ausgabe eines
  196.   Fehlertons, ab, falls  mehr  als 255  MCBs durchlaufen wurden  (da in
  197.   diesem Fall sehr wahrscheinlich die MCB-Kette fehlerhaft ist).
  198.  
  199. ■ Die Ausgabe des MCB-Kennzeichens von MDEBUG im Interpreter wurde ent-
  200.   fernt.
  201.  
  202. ■ Mit der Taste <CTRL-Q> im Interpreter kann nun die akustische Ausgabe
  203.   von MDEBUG ein- oder ausgeschaltet werden.
  204.  
  205. ■ Als  BREAK-Taste  während  eines  Aufrufes von  MDEBUG gilt jetzt nur
  206.   noch die Taste <CTRL-ScrollLock>.
  207.  
  208. ■ Im  Interpreter  können  explizite  Werte  jetzt in  jedem beliebigen
  209.   Format mit  einer Basis  zwischen 2 und 16  eingegeben werden.  Zudem
  210.   kann das Formatierungszeichen '.' jetzt in allen Formaten (auch hex.)
  211.   angegeben werden.
  212.  
  213. ■ Folgende zusätzliche Befehle wurden implementiert  (Groß/Kleinschrei-
  214.   bung beachten!):
  215.  
  216.        a op1,op2  - op1 := op1 + op2 + CF
  217.  
  218.        Addiert  den  Wert des 2. Operanden und  den Wert des Carryflags
  219.        auf den 1. Operanden  (entspricht dem Befehl 'ADC')
  220.  
  221.        s op1,op2  - op1 := op1 - op2 - CF
  222.  
  223.        Subtrahiert den Wert  des 2. Operanden und  den Wert des  Carry-
  224.        flags vom  1. Operanden  (entspricht dem Befehl 'SBB')
  225.  
  226.  
  227.        Q{UIT}L   - MDEBUG verlassen und die Tastatur sperren.
  228.  
  229.        Wird MDEBUG über  diesen  Befehl  verlassen, so  beendet  es den
  230.        Aufruf  und sperrt  die Tastatur. Der unterbrochene Prozeß läuft
  231.        danach ganz normal weiter - allerdings führt jeder Versuch, eine
  232.        Taste über  die Tastatur einzugeben dazu,  daß MDEBUG zuerst das
  233.        Passwort abfrägt. Erst nach der korrekten Eingabe des Passwortes
  234.        gibt MDEBUG die  Tastatur  wieder frei.  Die Sperrung  wird auch
  235.        wieder aufgehoben  durch den Aufruf von MDEBUG über die Funktion
  236.        3 bzw. 4 des User-Ints  oder  einen Aufruf von MDEBUG über einen
  237.        zusätzlichen Interrupt.
  238.        Der Befehl dient vor allem dazu, den PC  für kurze Zeit für Ein-
  239.        gaben zu  sperren ohne  eine evtl.  Programmausführung zu unter-
  240.        brechen.
  241.  
  242.        Der Befehl 'QL' funktioniert nur, falls ein aktives Passwort für
  243.        MDEBUG installiert ist. Da MDEBUG bei der Abfrage des Passwortes
  244.        den Bildschirmmodus in diesem Fall nicht berücksichtigt, kann es
  245.        vorkommen, daß das Passwort blind eingegeben werden muß. Während
  246.        der  Sperrung  ist  auch  die  Tastenkombination  <CTRL-ALT-DEL>
  247.        gesperrt.
  248.  
  249.        Der Befehlsname muß mit einem 'L' enden.
  250.  
  251.        Hinweis: Maus-Eingaben werden nicht unterbunden.
  252.  
  253. ■ In MDEBUG V1.70 wurde noch eine weitere Konstante implementiert:
  254.  
  255.   Die  Konstante  P4 enthält  den Offset  der Variablen  'MDebugCursor'
  256.   von MDEBUG.  Falls der  Inhalt dieser Variablen ungleich 0 ist, nimmt
  257.   MDEBUG  diesen  für die Form des Cursors (Format: Wort, Aufbau: High-
  258.   byte:  Top Line,  Lowbyte:  Bottom  Line,  jeweils  nur die unteren 5
  259.   Bits). Die Variable ist normalerweise  auf  0 gesetzt  und sollte nur
  260.   verändert werden, falls während eines Aufrufs  von MDEBUG kein Cursor
  261.   erscheint.
  262.   Die  Variable kann über  den Befehl 'MOV CS:[P4],nnnn' jederzeit ver-
  263.   ändert werden. Die Änderung ist sofort wirksam.
  264.   Falls  die  Variable  MDebugCursor  ungleich 0  ist,  wird nur  deren
  265.   Inhalt für die Form des Cursors benutzt, d.h. der Cursor ist in allen
  266.   Modi (Interpreter: Insert/Overwrite, Monitor: frei/blockiert) gleich.
  267.  
  268. ■ Die  Felder 'Save_SE' und 'Save_OF' in  der Datenstruktur  von MDEBUG
  269.   (Offsets 36h und 38h)  wurden vertauscht  (siehe Funktionen  für  die
  270.   Kommandotreiber).
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277. ■ Die  Dokumentation des Programms SHOWINT.COM wurde  vollständig über-
  278.   arbeitet. Ich hoffe sie ist jetzt verständlicher.
  279.  
  280. ■ Durch noch weitergehende Speicherplatzoptimierungen  belegt MDEBUG in
  281.   dieser Version wieder weniger als 16 KB Speicher.
  282.  
  283. ■ Das Archiv PD_1.EXE ist  ab dieser  Version wegen Platzmangels in der
  284.   Shareware-Version nicht mehr enthalten.
  285.  
  286.  
  287. Korrekturen und Erweiterungen der Version 1.70 des Treibers MDDISDRV.COM
  288. ────────────────────────────────────────────────────────────────────────
  289.  
  290. ■ Der  Fehler bei  der Auswertung  des  Parameters  /S[switches]  wurde
  291.   korrigiert.
  292.  
  293. ■ In der vorherigen Version von MDDISDRV konnte das Segment-Register CS
  294.   nicht direkt geändert werden. Der Fehler wurde beseitigt.
  295.  
  296. ■ In der vorherigen Version  hat der Disassembler  die Namen der Copro-
  297.   zessorbefehle  FLDL2E,  FLDL2T, FLDLG2  und  FLDLN2 falsch ausgegeben
  298.   (jeweils ohne das zweite 'L'). Der Fehler wurde korrigiert.
  299.  
  300.   In der  Dokumentation zur  vorherigen Version  fehlte zudem folgender
  301.   Hinweis:
  302.  
  303.   Der Befehl 'FFREEP i' (Opcode DF r/m, r/m-Byte: 11_000_xxx) des 80287
  304.   ist dem A86 nicht bekannt.
  305.  
  306. ■ Ebenfalls falsch ausgegeben wurden die Befehle mit dem Opcode 83h der
  307.   80x86-Prozessoren, falls der zweite Operand dieser Befehle  (also das
  308.   immediate Byte) ein Wert größer 07Fh war.
  309.   Dies betraf die durch den Opcode 83h codierten Formen der Befehle
  310.  
  311.        ADD ew,ib     / OR  ew,ib    / ADC ew,ib    / SBB ew,ib
  312.        AND ew,ib     / SUB ew,ib     / XOR ew,ib    / CMP ew,ib
  313.  
  314.   Die  Beschreibung dieser  Befehle in der  Dokumentation war ebenfalls
  315.   irreführend und wurde in dieser Version korrigiert.
  316.  
  317. ■ Der Opcode '0F 3C xx' wurde, falls die aktuelle Ziel-CPU der V20 war,
  318.   vom Disasembler irrtümlich als Befehl 'CALL80 xx' erkannt. Der Fehler
  319.   wurde beseitigt.
  320.  
  321.  
  322. ■ Der Disassembler erkennt jetzt auch den undokumentierten Befehl
  323.  
  324.        LOADALLD (Opcode 0F 07)
  325.  
  326.   des 80386 (Quelle: c't 11/1991).
  327.  
  328. ■ Kurze unbedingte Sprünge werden jetzt als 'JMP SHORT nnn' ausgegeben.
  329.  
  330. ■ Für immediate Bytes wird jetzt zusätzlich der Wert als ASCII-Code und
  331.   im dezimalen und im binären Format ausgegeben.
  332.  
  333. ■ Für  immediate Words  wird jetzt  zusätzlich  der Wert  im  dezimalen
  334.   Format ausgegeben.
  335.  
  336. ■ Über den neuen Schalter K können jetzt  alle unwichtigeren Kommentare
  337.   des Disassemblers unterdrückt werden.
  338.  
  339. ■ Der  Treiber MDDISDRV  markiert  jetzt alle Opcodes, die auf einigen,
  340.   aber nicht auf allen Prozessoren möglich  sind  mit der  Zeichenfolge
  341.   '+*' hinter  dem mindestens nötigen Prozessor.   Dies  betrifft  z.B.
  342.   den Befehl 'MOV CS,rw',  der  auf  dem  8086 und dem  V20 (evtl. auch
  343.   dem 80186) möglich ist.  Ebenfalls mit  der Zeichenfolge '+*' gekenn-
  344.   zeichnet  werden  Befehle, die auf den Prozessoren verschieden ausge-
  345.   führt  werden; z.B. der Befehl 'AAD', für  den  bei 80x86-Prozessoren
  346.   (nicht aber beim V20)  das zweite Byte des Opcodes ein Operand  ist
  347.  
  348.  
  349.  
  350.  
  351.  
  352. ■ Beim  Aufruf des  Disassemblers  im Monitor  oder im Interpreter wird
  353.   jetzt immer in den  Disassembler-  bzw.  Assembler-Modus  geschaltet.
  354.   Ausgenommen hiervon ist nur der Aufruf  über die Taste  <F5> (jeweils
  355.   im Monitor und im Interpreter).
  356.  
  357. ■ Der Drucker kann jetzt zwischen LPT1 und LPT9 gewählt werden. D.h. es
  358.   sind jetzt bis zu 6 virtuelle Drucker (LPT3 ... LPT9) möglich.
  359.  
  360. ■ Mit dem  neuen Befehl I des  Disassemblers kann  nun direkt im Disas-
  361.   sembler ein  bestimmter Eintrag  aus der  Interrupt-Tabelle  als neue
  362.   Start-Adresse für den Disassembler genommen werden.
  363.  
  364. ■ Die Online-Hilfe wurde um eine  zusätzliche (teilweise kontext-sensi-
  365.   tive) Seite mit der  Beschreibung  der Statuszeilen des Disassemblers
  366.   erweitert.
  367.  
  368. ■ Durch  die neuen Tasten <W> (= Offset der Start-Adresse um 2 erhöhen)
  369.   und <A> (= Offset der Start-Adresse um 2 vermindern) und der Möglich-
  370.   keit, über die Taste  <CTRL-F3> den  Modus für die  untere Dump-Zeile
  371.   beliebig festlegen zu können, eignet sich MDDISDRV jetzt auch für die
  372.   Inspektion von Sprung- oder Variablen-Tabellen.
  373.  
  374. ■ Die Register FS und GS  können jetzt auch  geändert werden, falls als
  375.   Ziel-CPU nicht der 80386 angegeben wurde.
  376.  
  377. ■ Über  den neuen  Befehl  'DC {text}{#26}'  für den Interpreter können
  378.   jetzt  auch  Textzeilen  auf den aktuellen  Drucker des Disassemblers
  379.   ausgegeben werden.
  380.  
  381. ■ Die  Funktion  'Folge dem Befehl'  ist jetzt  bei allen  Befehlen mit
  382.   Speicheroperanden,  die  über ein  'mod r/m'-Byte  addressiert  sind,
  383.   möglich. (D.h. auch  bei Befehlen  mit durch  Index-  und/oder Basis-
  384.   register  addressierten  Speicheroperanden,  wie z.B. 'MOV AX,[DI-5]'
  385.   oder 'INC B[BX]')
  386.   Hierfür wurde zusätzlich das Hilfsregister HB  implementiert, welches
  387.   den aktuellen Inhalt des Index- und/oder des Basisregisters repräsen-
  388.   tiert.
  389.  
  390. ■ Die Funktion 'Folge dem Befehl' speichert  jetzt im Disassembler- und
  391.   im Assembler-Modus bei Befehlen mit  einem Sprungziel (z.B. 'jz xxx',
  392.   'jmp seg:off', 'int nn', 'into', 'bound rw,ew',  etc.)   die  Adresse
  393.   des dem aktuellem Befehl folgendem Befehls auf dem Adressen-Stack.
  394.  
  395. ■ Die akustischen Ausgaben des  Disassemblers können  jetzt durch einen
  396.   neuen  Parameter (/Qn, n=1 ->> akustische  Ausgaben unterdrücken  und
  397.   n=0 ->> akustische Ausgaben  nicht unterdrücken,  Voreinstellung) und
  398.   durch  die  Taste  <CTRL-Q>  im  Disassembler ein-  und ausgeschaltet
  399.   werden.
  400.  
  401.  
  402. ■ Über die durch den Parameter # ausgegebene Tabelle  können jetzt auch
  403.   die Tasten zum Aufruf des Disassemblers in MDEBUG geändert werden.
  404.  
  405. ■ Die  Beschreibung  der Opcodes  der 80x86-Prozessoren  wurde  aus der
  406.   Dokumentation für die Treiber extrahiert und befindet sich nun in der
  407.   Datei OPCODES.PRT.  Die Beschreibung der Änderungen und Erweiterungen
  408.   der neuen Version befindet  sich nun in der  Datei WHATS.NEW  (welche
  409.   Sie gerade lesen), die chronologische  Update-History bis zur jeweils
  410.   vorletzten Version befindet sich in der Datei HISTORY.DOC.
  411.   Diese  beiden Dateien,  OPCODES.PRT  und HISTORY.DOC, sind aus Platz-
  412.   gründen ab dieser Version nur noch in der Vollversion enthalten.
  413.  
  414.  
  415.  
  416.  
  417. Behobene Fehler in der Version V2.00 vom 01.07.1992
  418. ───────────────────────────────────────────────────
  419.  
  420. ■ Die Taste <ALT-F5> im Interpreter hat in der vorherigen Version (nur
  421.   in den  Kopien von  MDEBUG.COM mit  einem Datum vor  dem 01.04.1992)
  422.   einen Systemabsturz  verursacht. Der  Fehler  wurde behoben.
  423.  
  424. ■ Das Zeichen '■' ist, im Gegensatz zur Angabe in der Dokumentation der
  425.   vorherigen Version,  bei  der Suche  einer Bytefolge über den  Befehl
  426.   SH im  Interpreter  KEIN Jokerzeichen  (wohl aber  bei  der  Suche im
  427.   Monitor).
  428.  
  429. ■ Die  Offsets in der  Tabelle mit  dem Aufbau  der  Datenstruktur  von
  430.   MDEBUG (Funktion 2 der Kommandotreiber) ab dem Offset 3Ah (exklusive)
  431.   waren in der Dokumentation der vorherigen Version falsch angegeben.
  432.   Richtig ist:
  433.  
  434.          ┌─────────────────┬───────┬─────────────────────────────────┐
  435.          │ Offset          │       │ Funktion der Speicherstelle     │
  436.          │ (relativ zu DI) │ Länge │                                 │
  437.          ╞═════════════════╪═══════╪═════════════════════════════════╡
  438.          │ 00h .. 3Ah      │       │ Angaben waren korrekt           │
  439.          │                 │       │                                 │
  440.          │                 │       │ Die nächsten Angaben waren      │
  441.          │                 │       │ fehlerhaft, sie müssen lauten:  │
  442.          │ 3Ah             │ 18h   │ gesicherte Registerwerte (...)  │
  443.          │ 52h             │ 18h   │ gesicherte Registerwerte (...)  │
  444.          │                 │       │                                 │
  445.          │ 6Ah             │  4h   │ Adresse des DOS-Info-Blocks     │
  446.          │                 │       │                                 │
  447.          │ ...             │       │ Die Offsets der folgenden       │
  448.          │                 │       │ Felder müssen jeweils um 18h    │
  449.          │                 │       │ (= 24xD) erhöht werden          │
  450.          └─────────────────┴───────┴─────────────────────────────────┘
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457. Erweiterungen der Version V2.00 vom 01.07.1992
  458. ──────────────────────────────────────────────
  459.  
  460. ■ MDEBUG  benutzt jetzt  Buchstaben-Schalter  zur Anzeige verschiedener
  461.   Schalterstellungen.  Diese werden  jeweils auf den oberen  Rahmen der
  462.   Fenster des Monitors bzw. des Interpreters ausgegeben.
  463.  
  464.   Im Monitor sind folgende Schalter implementiert:
  465.  
  466.   ┌──────────┬───────┬──────────────────────────────────┬───────────┐
  467.   │ Schalter │ Wert  │Bedeutung                         │  Taste    │
  468.   ╞══════════╪═══════╪══════════════════════════════════╪═══════════╡
  469.   │ Monitor- │  b    │ direkte Änderungen im Monitor    │  <CTRL-B> │
  470.   │ Mode     │       │ möglich                          │           │
  471.   │          │  B    │ direkte Änderungen im Monitor    │           │
  472.   │          │       │ NICHT möglich                    │           │
  473.   ├──────────┼───────┼──────────────────────────────────┼───────────┤
  474.   │ Update-  │  *    │ Monitor-Inhalt wird laufend      │   <F9>    │
  475.   │ Mode     │       │ upgedated                        │           │
  476.   │          │  -    │ Monitor-Inhalt wird nur nach     │           │
  477.   │          │       │ einem Tastendruck upgedated      │           │
  478.   └──────────┴───────┴──────────────────────────────────┴───────────┘
  479.  
  480.   Im Interpreter sind folgende Schalter implementiert:
  481.  
  482.   ┌──────────┬───────┬──────────────────────────────────┬───────────┐
  483.   │ Schalter │ Wert  │Bedeutung                         │  Taste    │
  484.   ╞══════════╪═══════╪══════════════════════════════════╪═══════════╡
  485.   │ Upcase-  │  U    │ Buchstaben werden in Großbuch-   │  <CTRL-U> │
  486.   │ Mode     │       │ staben konvertiert               │           │
  487.   │          │  u    │ Buchstaben werden NICHT in Groß- │           │
  488.   │          │       │ buchstaben konvertiert           │           │
  489.   ├──────────┼───────┼──────────────────────────────────┼───────────┤
  490.   │ Quiet-   │  Q    │ akustische Ausgaben sind aus-    │  <CTRL-Q> │
  491.   │ Mode     │       │ geschaltet                       │           │
  492.   │          │  q    │ akustische Ausgben sind einge-   │           │
  493.   │          │       │ schaltet                         │           │
  494.   ├──────────┼───────┼──────────────────────────────────┼───────────┤
  495.   │ Input-   │  I    │ Eingaben erfolgen im INSERT-     │  <INSERT> │
  496.   │ Mode     │       │ Modus                            │           │
  497.   │          │  i    │ Eingaben erfolgen im OVERWRITE-  │           │
  498.   │          │       │ Modus                            │           │
  499.   └──────────┴───────┴──────────────────────────────────┴───────────┘
  500.  
  501.  
  502. ■ Im Monitor von MDEBUG wird nun  der Wert des  aktuellen Bytes auch im
  503.   dezimalen Format und als ASCII-Code ausgegeben.
  504.  
  505. ■ Die Eingabeparameter der Funktion 3h des Interfaces für die Kommando-
  506.   treiber wurde erweitert.
  507.  
  508. ■ Fehlerhafte oder falsche Parameter führen jetzt zum Programm-Abbruch.
  509.  
  510. ■ Beim Parameter 'HELP' reicht jetzt  die Angabe eines Pfades falls die
  511.   Hilfstextdatei 'MDEBUG.HLP' heißt.
  512.  
  513. ■ Im Scrollbar der Online-Hilfe  von MDEBUG werden jetzt auch die Posi-
  514.   tionen der Marker angezeigt.
  515.  
  516. ■ Die Meldungen von MDEBUG wurden erweitert.
  517.  
  518. ■ Die Werte der Errorlevel von MDEBUG wurden geändert.
  519.  
  520. ■ Das  Util CALLMDB  erkennt jetzt  ebenfalls  den Parameter '#' (siehe
  521.   Beschreibung der Parameter von MDEBUG)
  522.  
  523. ■ Der  Speicherbedarf des  Kommandotreibers  MDHIDSRV.COM konnte  durch
  524.   weitere Optimierungen um 400 Byte gesenkt werden.
  525.  
  526. ■ Die Abbruchtaste für das Util SHOWINT ist jetzt <CTRL-X>.
  527.  
  528.  
  529.  
  530.  
  531. Korrekturen und Erweiterungen der Version V2.00 des Treibers MDDISDRV.COM
  532. ─────────────────────────────────────────────────────────────────────────
  533.  
  534. ■ Der Algorithmus  zum seitenweisen  Rückwärtsscrollen (Taste <PageUp>)
  535.   wurde wesentlich verbessert. Er  ist jetzt ca. 50 % schneller und zu-
  536.   sätzlich auch noch sehr viel zielgenauer als vorher!
  537.  
  538. ■ Im Disassembler können  jetzt auch Referenzen auf bestimmte Speicher-
  539.   stellen gesucht werden.  Hierfür wurden folgende Tastenbelegungen neu
  540.   implementiert:
  541.  
  542.   <F8>
  543.  
  544.   Sucht eine Code-Referenz (z.B. 'jmp cb', 'int n', 'jc cb', etc.)  auf
  545.   eine beliebige Adresse ab der Adresse in der aktuellen Zeile.
  546.  
  547.   <SHIFT-F8>
  548.  
  549.   Sucht  eine  Daten-Referenz  (z.B. 'mov ax,[ew]')  auf eine beliebige
  550.   Adresse ab der Adresse in der aktuellen Zeile.
  551.  
  552.   In beiden Fällen  kann als  Adresse,  für die  eine Referenz  gesucht 
  553.   werden soll, eine beliebige Kombination  aus Segment  und Offset ein-
  554.   gegeben werden.  Beachtet werden  muß, daß bei der  Suche  nach einer
  555.   Daten-Referenz der eingegebene Wert für das Segment ignoriert wird.
  556.  
  557.   Gesucht  wird immer nur bis zum Ende eines Segments.  Die Suche  kann
  558.   jederzeit über die Taste <ESC>  abgebrochen werden.  Falls  die Suche
  559.   abgebrochen oder keine Referenz  gefunden wurde, wird die Anzeige des
  560.   Disassemblers  nicht verändert. In diesen Fall kann zudem direkt nach
  561.   der Suche über die Taste <0> der letzte  überprüfte Befehl  ermittelt
  562.   werden (d.h. falls eine abgebrochene Suche ab dem zuletzt überprüften
  563.   Befehl fortgesetzt werden soll,  müssen hierfür direkt nach der Suche
  564.   die Tasten <0> und <F8> bzw. <SHIFT-F8> benutzt  werden).
  565.   Wird  eine  Referenz gefunden, wird der Code ab dem gefundenen Befehl
  566.   im Disassembler angezeigt.
  567.  
  568.   <CTRL-F8>
  569.  
  570.   Letzte Suche fortsetzen.
  571.   Gesucht wird die zuletzt gesuchte Adresse mit dem zuletzt angegebenen
  572.   Referenz-Art (Code / Data)  ab dem auf  den zuletzt gefundenen Befehl
  573.   folgenden Befehl (d.h. nicht ab dem aktuellen Befehl!).
  574.   Diese Funktion ist nur möglich, falls vorher  mindestens einmal  eine
  575.   Daten- oder  Code-Referenz gesucht wurde.
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.   Hinweis:
  583.  
  584.   In dem als  Adresse, für  die  eine  Code-Referenz gesucht  wird, die
  585.   aktuelle  Adresse einer Interrupt-Routine angegeben wird,  können mit
  586.   dieser Funktion auch Interrupt-Aufrufe gesucht werden!
  587.  
  588.   Beispiel:
  589.  
  590.   Suche nach einer Code-Referenz für den Interrupt 21h
  591.  
  592.   1. Über  die Tastenfolge 'I21 <RETURN>' den  Disassembler zur Anzeige
  593.      des Codes des Interrupt 21h veranlassen.
  594.  
  595.   2. Über die Taste <Insert> die Adresse der Interrupt-Routine  auf den
  596.      Adressen-Stack pushen.
  597.  
  598.   3. Über die Taste <0> zurück zur alten Startadresse springen
  599.  
  600.   4. Über die Taste <F8> die Suche nach der Code-Referenz starten.  Die
  601.      Adresse, die gesucht werden  muß, steht jetzt  als oberste Adresse
  602.      auf dem Adressen-Stack.
  603.  
  604. ■ Das Zeichen #26 wird jetzt vom Befehl DC nicht mehr interpretiert.
  605.   Zur  Kennzeichnung des Endes der Parameters muß  daher jetzt das Ver-
  606.   kettungszeichen ('^') von MDEBUG verwendet werden
  607.  
  608. ■ Beim Scrollen  des Stacks  (Taste <TAB>)  wird jetzt jeweils der Code
  609.   bzw. die Daten für die aktuelle Stack-Adresse in den oberen 10 Zeilen
  610.   angezeigt.
  611.   Die 'alte Form' des  Scrollens kann über die Taste <SHIFT-TAB> aufge-
  612.   rufen werden.
  613.  
  614. ■ Falls der  Adressen-Stack  blockiert ist,  kann jetzt auch  die Taste
  615.   <CursorRight> nicht mehr benutzt werden.
  616.  
  617. ■ Die Ausgabe von immediate Bytes bzw. Words wurde verbessert.
  618.   U.a. werden jetzt die Operanden von logischen Befehlen (AND, OR, TEST
  619.   und XOR), falls möglich, nur im binären Format ausgegeben. 
  620.  
  621. ■ Falls  ein Verzweigungsbefehl  ( CALL, JMP, INT, etc.)  auf einen der
  622.   Befehle RET, RETF, IRET  oder HLT zeigt, wird  dies jetzt  hinter dem
  623.   Verzweigungsbefehl als Kommentar angezeigt.
  624.  
  625. ■ Durch die Taste <CTRL-End> kann  das Fenster des  DisAssemblers jetzt
  626.   in den unteren Bildschirmbereich verschoben werden.
  627.  
  628. ■ Durch die Taste <CTRL-Home> kann das Fenster des  DisAssemblers jetzt
  629.   in den oberen Bildschirmbereich verschoben werden.
  630.  
  631. ■ Über die beiden neuen Parameter '*name' und '&name'  kann  jetzt  der 
  632.   Status des Disassemblers in eine Datei gesichert bzw. aus einer Datei 
  633.   geladen werden.
  634.  
  635.  
  636.  
  637. Last Minute Infos über MDEBUG und die zugehörigen Utils
  638. ───────────────────────────────────────────────────────
  639.  
  640. Die  folgenden Punkte sind  in der Dokumentation  zu MDEBUG falsch oder
  641. fehlerhaft angegeben:
  642.  
  643. ■ keine weiteren fehlerhaften Angaben in der Dokumentation vorhanden.
  644.  
  645.  
  646. Last Minute Changes von MDEBUG und den zugehörigen Utils
  647. ────────────────────────────────────────────────────────
  648.  
  649. Die folgenden Erweiterungen/Änderungen wurden in letzter  Minute durch-
  650. geführt und konnten daher noch nicht im Handbuch berücksichtigt werden.
  651.  
  652. ■ keine weiteren 'Last Minute Changes' in dieser Version
  653.  
  654.     ───────────────────────────────────────────────────────────────────
  655.  
  656.  
  657.