home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-06-06 | 320.0 KB | 10,441 lines |
- ───────────────────────────────────────────────────────────────────
-
-
-
-
-
- ┌────────────────────────────────────────┐
- │ │█
- │ MDEBUG V2.00 │█
- │ │█
- │ Release 01.07.1992 │█
- │ │█
- │ Highperformance Debugging Tool für PCs │█
- │ │█
- └────────────────────────────────────────┘█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
-
-
-
- programmiert von:
-
- ┌─────────────────────────┐
- │ Bernd Schemmer │█
- │ Ondrup 117 │█
- │ D-4710 Lüdinghausen 2 │█
- └─────────────────────────┘█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
-
-
-
-
- ╔════════════════════════════════════════════════════════╗
- ╟────────────────────────────────────────────────────────╢█
- ║ ║█
- ║ Benutzer- und Referenz-Handbuch ║█
- ║ ║█
- ╚════════════════════════════════════════════════════════╝█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
-
-
-
-
-
-
-
-
-
-
-
- ───────────────────────────────────────────────────────────────────
- Copyright (c) 1988 - 1992 by Bernd Schemmer
-
-
-
-
-
-
-
-
-
-
- Inhalt Seite
- ────────────────────────────────────────────────────────────
-
-
- Kurzbeschreibung von MDEBUG .......................... 1
- Benutzung von MDEBUG ................................. 2
- Nichtgewerbliche Weitergabe von MDEBUG ............... 3
- Vertrieb von MDEBUG über PD-Händler und Mailboxen .... 4
- Garantieausschlußerklärung ........................... 5
- System-Vorraussetzungen .............................. 6
- Einschränkungen ...................................... 6
- Vorbereitungen vor dem Start ......................... 7
- Eintragen der Registrierungsnummer ................... 7
- Passwort ............................................. 8
- Prozessnummer überprüfen ............................. 10
- Starten von MDEBUG ................................... 11
- Parameter für MDEBUG ................................. 11
- INT=[0|{nn}{,N}] ................................... 11
- CoM=nn ............................................. 12
- CoD=nn ............................................. 12
- CoHm=nn ............................................ 12
- RoM=nn ............................................. 13
- RoD=nn ............................................. 13
- RoH=nn ............................................. 13
- SEG=[nnnn|reg] ..................................... 13
- OFF=[nnnn|reg] ..................................... 13
- STD ................................................ 13
- STM ................................................ 13
- STH ................................................ 14
- KEY=X{n} ........................................... 14
- SET ................................................ 14
- EXIT ............................................... 15
- &name{,{nnnn}}{,{mmmm}}{,N} ........................ 16
- *name{,{nnnn}}{,{mmmm}}{,N} ........................ 18
- HELP{={pfad}{name}} ................................ 19
- NOHELP ............................................. 19
- BUF=nnnn ........................................... 20
- TEXT{=nnnn}{,m} .................................... 20
- GRAPH .............................................. 21
- PRO=nn ............................................. 21
- ? .................................................. 21
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Inhalts-Verzeichnis I 1
-
-
-
-
- Inhalt Seite
- ────────────────────────────────────────────────────────────
-
-
- DEF ................................................ 21
- # .................................................. 22
- MAKE ............................................... 22
- MF2 ................................................ 23
- NoMF2 .............................................. 23
- @ .................................................. 23
- Errorlevel ........................................... 24
- Voreinstellungen ..................................... 24
- Aufruf über den Hotkey ............................... 25
- Beschreibung des Monitors ............................ 26
- Aufbau des Monitor-Fensters ........................ 26
- Tastenbelegung im Monitor .......................... 29
- Beschreibung der Online-Hilfe ........................ 38
- Aufbau des Fensters der Online-Hilfe ............... 38
- Tastenbelegung in der Online-Hilfe ................. 39
- Beschreibung des Interpreters ........................ 40
- Aufbau des Interpreter-Fensters .................... 40
- Tasten-Belegung im Interpreter ..................... 43
- Tastenumbelegungen im Interpreter .................. 49
- Befehle des Interpreters ........................... 49
- ?{...} ........................................... 50
- V{...} {reg1}{,}{reg2} ........................... 51
- #26{...} {seg1:}[reg1|wert1] {...}{#26} .......... 51
- #27{...} {seg1:}[reg1|wert1] ..................... 52
- #27{...}H {seg1:}[reg1|wert1] .................... 53
- D{UMP} Mn ........................................ 53
- P{OINTER} {seg1:}[reg1|wert1] .................... 53
- A{DD} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] .... 53
- S{UB} {seg1:}[reg1|wert1],{seg2}[reg2|wert2] ..... 53
- a{dd} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] .... 53
- s{ub} {seg1:}[reg1|wert1],{seg2}[reg2|wert2] ..... 54
- + {seg1:}[reg1|wert1] ............................ 54
- - {seg1:}[reg1|wert1] ............................ 54
- > {seg1:}[reg1|wert1] ............................ 54
- < {seg1:}[reg1|wert1] ............................ 54
- » {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........ 54
- « {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........ 55
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Inhalts-Verzeichnis I 2
-
-
-
-
- Inhalt Seite
- ────────────────────────────────────────────────────────────
-
-
- & {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........ 55
- | {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........ 55
- ! {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........ 55
- T {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........ 55
- N{EG} {seg1:}[reg1|wert1] ........................ 55
- M{OV} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] .... 56
- C{OP}Y ........................................... 56
- I{NT} [reg|wert] ................................. 56
- B b1{{,}b2..{,}bn} ............................... 57
- G{O} [reg|wert] .................................. 58
- / hilfreg ........................................ 59
- \ hilfreg ........................................ 59
- # hilfreg ........................................ 59
- W{AIT} ........................................... 59
- H{OME} {[reg|wert]} .............................. 60
- H{...}N {[reg|wert]} ............................. 60
- ¿ [reg|wert] ..................................... 61
- ¿H [reg|wert] .................................... 62
- F {n} ............................................ 62
- FX ............................................... 62
- @ {...} .......................................... 62
- Q{UIT} ........................................... 63
- Q{UIT}R .......................................... 63
- Q{UIT}L .......................................... 63
- SH [suchmaske] {,}{...} .......................... 64
- Bedeutung der Parameter ............................ 69
- Konstanten ......................................... 73
- Ausdruck ........................................... 75
- Adressierung von Speicherstellen ................... 81
- Syntax der Befehle ................................. 81
- Syntax der Operanden ............................... 84
- Sonstiges .......................................... 84
- Aufruf von MDEBUG im Graphikmodus .................... 86
- Funktionen der Bildschirmtreiber ..................... 87
- Funktion 0 - Get Driver Status .................... 88
- Funktion 1 - Init Driver .......................... 89
- Funktion 2 - Save Graphik data .................... 89
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Inhalts-Verzeichnis I 3
-
-
-
-
- Inhalt Seite
- ────────────────────────────────────────────────────────────
-
-
- Funktion 3 - Restore Graphik data ................. 90
- Funktion 4 - Show saved data ...................... 90
- Funktion 5 - Switch back to text screen ........... 91
- Funktion 06 bis 7Fh - reserviert ................... 91
- Funktion 80h bis 0FFh - reserviert ................. 91
- Erweiterungen von MDEBUG mittels Kommandotreiber ..... 92
- Funktionen der Kommandotreiber ....................... 93
- Funktion 0 - Get Status ........................... 94
- Funktion 1 - Init Driver .......................... 95
- Funktion 2 - Execute interpreter command .......... 96
- Funktion 3 - Execute key in the monitor ........... 100
- Funktion 4 - Execute key in the interpreter ....... 101
- Funktion 05h bis 0Ah - reserviert .................. 102
- Funktion 10h - Get adress of the old interrupt 2Fh . 102
- Funktion 11h - Start Driver ........................ 103
- Funktion 12h - End Driver .......................... 103
- Funktion 13h bis 7Fh - reserviert .................. 104
- Funktion 80h bis 0FFh - reserviert ................. 104
- Zusätzlicher User-Interrupt .......................... 105
- Funktion 0 - Status ermitteln ...................... 106
- Funktion 1 - Ermittle Adresse der Hilfsregister .... 107
- Funktion 2 - Status setzen ......................... 108
- Funktion 3 - Aufruf von MDEBUG ..................... 109
- Funktion 4 - Aufruf von MDEBUG mit den akt. Werten . 109
- Funktion 5 - Lösche oder Setze Flags von MDEBUG .... 110
- Funktion 6 - Ermittle Passwort-Status .............. 110
- Funktion 7 - Ermittle aktiven Teil von MDEBUG ...... 111
- Sonstiges zum User-Int ............................. 111
- Anhang A ............................................. 112
- Fehlermeldungen beim Aufruf von MDEBUG ............. 113
- Meldungen des Interpreters von MDEBUG .............. 121
- Weitere Meldungen des Interpreters von MDEBUG ...... 122
- Anhang B ............................................. 123
- Programm-Interna ................................... 123
- Hinweise für die Fehlersuche - Trouble-Shooting .... 124
- Stack-Überlauf ..................................... 131
- Tastatur-Codes ..................................... 132
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Inhalts-Verzeichnis I 4
-
-
-
-
- Inhalt Seite
- ────────────────────────────────────────────────────────────
-
-
- Make-Code der Aufruf-Taste ......................... 134
- Verträglichkeit gegenüber anderen Programmen ....... 135
- Anhang C ............................................. 136
- Installieren von MDEBUG ............................ 137
- Ändern der Tastenbelegung von MDEBUG ............... 138
- Anhang D ............................................. 145
- Utilities und Beispieldateien zu MDEBUG .............. 145
- MDEBUG.HLP ......................................... 146
- MDHELP.INP (VV) ................................... 146
- MDMKHLP.COM (VV) .................................. 146
- MDSHELP.COM (VV) .................................. 152
- SETMD.EXE .......................................... 152
- SETREGNR.EXE (VV) ................................. 153
- CALLMDB.COM (VV) .................................. 153
- TESTMD.PAS ......................................... 157
- TESTMD.EXE ......................................... 157
- CHECKMD.A86 ........................................ 157
- CHECKMD.OBJ ........................................ 157
- CALLMD.A86 ......................................... 157
- CALLMD.OBJ ......................................... 157
- MDCMD.A86 .......................................... 158
- MDCMD.OBJ .......................................... 158
- KONVERT.A86 ........................................ 158
- KONVERT.OBJ ........................................ 158
- UPSTR.BIN .......................................... 158
- LOWSTR.BIN ......................................... 158
- UPSTR.A86 .......................................... 158
- LOWSTR.A86 ......................................... 158
- SHOWINT.COM (VV) .................................. 159
- SHOW2FP.COM ........................................ 167
- FREESTCK.COM ....................................... 167
- MDCGADRV.ASM (VV) ................................. 167
- MDHGCDRV.ASM (VV) ................................. 167
- MDDRIVER.ASM (VV) ................................. 168
- MDBSPDRV.ASM (VV) ................................. 168
- MDBSPDRV.INC (VV) ................................. 168
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Inhalts-Verzeichnis I 5
-
-
-
- Kurzbeschreibung von MDEBUG
- ───────────────────────────
-
- MDEBUG ist ein speicherresidentes Debugging-Tool für PCs bestehend
- aus einem Speichermonitor, einem Interpreter mit eigener Program-
- miersprache und einem interaktiven und selektiven DisAssembler.
- MDEBUG wurde ursprünglich für die Ermittlung von undokumentierten
- Strukturen des Betriebssystems MS-DOS entwickelt, kann aber viel-
- fältig eingesetzt werden. (z.B. zur Unterstützung bei der Program-
- mierung).
-
- MDEBUG sollte nur von Programmierern mit gutem Wissen über ihren
- PC und dem Betriebssystem MS-DOS bzw. PC-DOS verwendet werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 1
-
-
-
- Benutzung von MDEBUG
- ────────────────────
-
- MDEBUG ist ein Shareware-Programm, dessen Copyright beim Autor
- liegt.
-
- Die Shareware-Version von MDEBUG kann für 4 Wochen getestet werden.
- Danach muß entschieden werden, ob MDEBUG weiter benutzt werden
- soll oder nicht. Falls MDEBUG nach der Probezeit weiter benutzt
- werden soll, muß die Vollversion erworben werden.
-
- Die Vollversion von MDEBUG kostet 75,- DM und kann mit dem Formular
- aus der Datei MDEBUG.FRM bestellt werden.
-
- Die Vollversion von MDEBUG enthält:
-
- ┌───────────────────────────────────────────────────────────────────┐
- │ - die neueste Version von MDEBUG incl. einer eigenen Registrie- │█
- │ rungsnummer. │█
- │ Die Vollversion ist identisch mit der Shareware-Version von │█
- │ MDEBUG. Allerdings kann die Shareware-Meldung beim Programm- │█
- │ start (incl. der 'Wartezeit') entfernt werden. Zudem ist der │█
- │ Parameter 'MAKE' nur in der Vollversion implementiert. (s.u.) │█
- │ │█
- │ - mehrere Utils zur Unterstützung von MDEBUG, teilweise incl. │█
- │ Quellcode │█
- │ │█
- │ - Unterstützung bei Problemen mit MDEBUG und bei der Programmie- │█
- │ rung von Bildschirm- oder Kommandotreibern für MDEBUG │█
- │ │█
- │ - die Möglichkeit zum Bezug großer Updates von MDEBUG gegen eine │█
- │ Gebühr deren Höhe sich nach der Größe der vorgenommenen │█
- │ Erweiterungen richtet. │█
- └───────────────────────────────────────────────────────────────────┘█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- Ein großes Update ist eine Erweiterung von MDEBUG um neue Funktio-
- nen - erkennbar daran, daß die Hauptversionsnummer geändert wurde.
- Die Hauptversionnummer besteht aus den Vorkommastellen und der
- ersten Nachkommastelle der Versionsnummer (bei V1.70 ist die Haupt-
- versionsnummer z.B. 1.7).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 2
-
-
-
- Ein kleines Update ist eine Korrektur von MDEBUG zur Behebung von
- kleinen Fehlern und Mängeln - erkennbar daran, daß sich nur die
- Revisions-Nummer (= 2. Nachkommastelle) oder nur das Release-Datum
- ändert (ein kleines Update wäre z.B. der Wechsel von Version V1.70
- zu V1.71).
-
- Kleine Updates können von Besitzern der Vollversion gegen Erstat-
- tung der Porto- und Verpackungskosten jederzeit bezogen werden,
- falls die Hauptversion der Vollversion von MDEBUG mit der Hauptver-
- sion der aktuellen Version von MDEBUG übereinstimmt.
-
- Besitzer der Vollversion von MDEBUG dürfen diese auf bis zu zwei
- (ihnen gehörenden!) Computern gleichzeitig benutzen.
-
- Hinweis:
-
- Ein gedrucktes Handbuch für MDEBUG ist im Moment noch nicht
- verfügbar, Besitzer der Vollversion erhalten aber eine Mitteilung
- falls ein Handbuch verfügbar ist.
-
-
- Nichtgewerbliche Weitergabe von MDEBUG
- ──────────────────────────────────────
-
- Kopien der Original-Diskette mit der Shareware-Version von MDEBUG
- können und sollen (!) beliebig oft weitergegeben werden solange
- keins der Programme und keine der Dateien auf der Diskette geändert
- oder gelöscht werden und keine Dateien oder Programme ohne das
- Einverständnis des Autors hinzugefügt werden.
-
- Die Vollversion darf - mit Ausnahme der Datei MDEBUG_3.EXE - unter
- Berücksichtigung der für die Shareware-Version angegebenen Bedin-
- gungen ebenfalls weiter gegeben werden. Die nur in der Vollversion
- enthaltene Datei MDEBUG_3.EXE darf auf keinen Fall weiter gegeben
- werden!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 3
-
-
-
- Vertrieb von MDEBUG über PD-Händler und Mailboxen
- ─────────────────────────────────────────────────
-
- Jeder PD-Händler darf die Shareware-Version von MDEBUG vertreiben,
- solange folgende Punkte eingehalten werden:
-
- ┌───────────────────────────────────────────────────────────────────┐
- │-Es dürfen keine Dateien auf der Diskette geändert oder gelöscht │█
- │ werden. D.h. alle in der Datei INHALT.LST aufgelisteten Dateien │█
- │ müssen in unveränderter Form vorhanden sein. │█
- │ │█
- │-Außer kleineren Info- oder Werbedateien dürfen ohne Absprache mit │█
- │ dem Autor keine weiteren Dateien auf die Diskette kopiert werden. │█
- │ │█
- │-Es darf immer nur die neueste Version von MDEBUG vertrieben │█
- │ werden. Händler, die MDEBUG vertreiben wollen, sollten sich daher │█
- │ auf meine Mailing-Liste für Update-Versionen setzen lassen. Der │█
- │ Bezug der Updates von MDEBUG kann auch über die DS (Deutsche │█
- │ Shareware) erfolgen. │█
- │ │█
- │-Für den Vertrieb von MDEBUG darf eine Gebühr von bis zu 20,- DM │█
- │ verlangt werden, solange sichergestellt ist, daß der Käufer weiß, │█
- │ das es sich hierbei um Gebühren des Vertriebs und NICHT um den │█
- │ Preis von MDEBUG handelt. │█
- │ │█
- │-Der Katalog-Eintrag für MDEBUG muß immer auch den Namen des │█
- │ Autors - Bernd Schemmer - enthalten. Zudem muß aus dem Katalog │█
- │ klar ersichtlich sein, daß es sich um eine Shareware-Version │█
- │ handelt. │█
- │ Die Begriffe Public Domain, Freie Software oder Freeware dürfen │█
- │ mit Bezug auf MDEBUG weder schriftlich noch mündlich verwendet │█
- │ werden. │█
- └───────────────────────────────────────────────────────────────────┘█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- Für die Katalog-Einträge sollte die Datei 'MDEBUG.TXT' bzw. ein
- Auszug aus dieser verwendet werden.
-
- Für den Vertrieb von MDEBUG über Mailboxen gelten ebenfalls die
- obigen Bedingungen. Das Packen ALLER Dateien auf der Diskette in
- ein neues Archiv ist für den Vertrieb über Mailboxen gestattet.
-
- Ich behalte mir vor, Vertrieben oder Mailboxen, die gegen diese
- Bedingungen verstoßen, den Vertrieb von MDEBUG zu untersagen.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 4
-
-
-
- Garantieausschlußerklärung
- ──────────────────────────
-
- Garantieausschlußerklärung für MDEBUG und die zugehörigen Utils und
- Textdateien mit der Dokumentation, im weiteren 'diese Software'
- genannt, von Bernd Schemmer, im weiteren 'der Autor' genannt:
-
- ┌───────────────────────────────────────────────────────────────────┐
- │Der Autor gibt keine Garantien irgendeiner Art, weder ausdrücklich│█
- │noch implizit, einschliesslich unbegrenzt aller Garantien der Ver-│█
- │wendbarkeit und/oder Nichtverwendbarkeit für irgendeinen Zweck. Der│█
- │Autor übernimmt keine Verpflichtungen für den Gebrauchswert dieser│█
- │Software über den Kaufpreis dieser Software hinaus. Unter keinen│█
- │Umständen ist der Autor haftbar für jedwede Folgeschäden, ein-│█
- │schliesslich aller entgangenen Gewinne und Vermögensverluste, oder│█
- │anderer mittelbarer und unmittelbarer Schäden, die durch den│█
- │Gebrauch oder die Nichtverwendbarkeit dieser Software und ihrer│█
- │begleitenden Dokumentation entstehen. Dies gilt auch dann, wenn der│█
- │Autor über die Möglichkeit solcher Schäden unterrichtet war oder│█
- │ist. │█
- └───────────────────────────────────────────────────────────────────┘█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- Und noch was für die Juristen:
-
- ┌────────────────────────────────────────────────────────────────────┐
- │Warenamen und eingetragene Warenzeichen werden in der Dokumentation │█
- │ohne Gewährleistung einer freien Verwendung benutzt. │█
- └────────────────────────────────────────────────────────────────────┘█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 5
-
-
-
- System-Vorraussetzungen
- ───────────────────────
-
- Hardware: IBM-PC/AT/Kompatibler mit einem beliebigem
- Graphikadapter (CGA, HGC, EGA, VGA, o.a.)
-
- MDEBUG belegt ca. 16 K Hauptspeicher
- (Minimum, ohne Online-Hilfe und Treiber)
- Für die Installation von MDEBUG werden 64 K
- freier Speicher benötigt.
-
-
- Software: Betriebssystem MS-DOS/PC-DOS ab Version 3.0
- oder ein kompatibles Betriebssystem.
- Für die Übersetzung der Quelltexte wird der
- Assembler A86 V3.22 benötigt.
-
-
- Einschränkungen
- ───────────────
-
- MDEBUG läuft auf meinem Rechner fehlerfrei. Allerdings kann ich
- natürlich nicht dafür garantieren daß es auf allen Rechnern läuft.
- (insbesondere die Verträglichkeit mit anderen TSRs, siehe auch
- 'Verträglichkeit gegenüber anderen Programmen')
-
- Falls MDEBUG auf einem Rechner nicht läuft bzw. nicht korrekt
- läuft, kann ich versuchen den Fehler zu finden und zu beheben
- - falls mir dies mitgeteilt wird. Dies gilt auch für die Shareware-
- Version von MDEBUG.
- Dazu benötige ich dann die Daten über die genaue Ausstattung des
- Rechners (Speicherausbau, Graphikadapter, etc.), die Namen und
- Versionsnummern der normalerweise geladenen Programme (incl. der
- DOS-Version) und, bei einer Fehlfunktion von MDEBUG, eine möglichst
- ausführliche Beschreibung des Fehlers.
-
- Da es mit dem Programm MDEBUG prinzipiell auch möglich ist Software
- und Hardware zu beschädigen, übernehme ich für Fehler des Benutzers
- und für bisher von mir nicht bemerkte Programmfehler und sich
- daraus eventuell ergebende Schäden keinerlei Haftung!
-
- Änderungs-, Erweiterungswünsche und Kritik zu MDEBUG sind mir immer
- willkommen.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 6
-
-
-
- Vorbereitungen vor dem Start
- ────────────────────────────
-
-
- Vor dem ersten Start von MDEBUG muß einiges beachtet werden:
-
-
- Eintragen der Registrierungsnummer
- ──────────────────────────────────
-
- Besitzer der Vollversion sollten als erstes ihre Registrierungs-
- nummer in die Datei MDEBUG.COM eintragen. Hierzu dient das Programm
- SETREGNR.EXE. SETREGNR benötigt keine Parameter und erfragt alle
- Daten im Dialog mit dem Benutzer.
-
- Hinweis:
-
- Der Parameter 'MAKE' von MDEBUG kann erst nach der Eintragung der
- Registrierungsnmmer benutzt werden!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 7
-
-
-
- Passwort
- ────────
-
- MDEBUG ist zur Sicherung vor unbefugten Benutzern mit einer
- (abschaltbaren) Passwort-Abfrage versehen.
-
- Falls die Passwort-Abfrage aktiv ist, wird das Passwort bei jedem
- Aufruf über den Hotkey und jedem Aufruf einer der Funktionen des
- User-Ints (mit Ausnahme der Funktion 6, s.u.) abgefragt.
- MDEBUG überprüft vor der Passwort-Abfrage den Bildschirmmodus. Ist
- dieser nicht korrekt, wird die Eingabe abgebrochen.
-
- ┌──── MDEBUG ────┐
- Aufbau des Fensters zur Eingabe eines Passworts: │ Passwort: **** │
- └────────────────┘
-
- Das Passwort ist 4 Zeichen lang und besteht nur aus Zeichen mit
- einem ASCII-Code größer oder gleich 32 (= Leerzeichen). Es wird
- verdeckt eingegeben, wobei die Cursorposition die aktuelle Stelle
- im Passwort bei der Eingabe wiedergibt. Die Schreibweise (groß/
- klein) des Passwortes muß übereinstimmen.
-
- Bei der Eingabe gilt immer der Overwrite-Modus; zum Positionieren
- des Cursors können die Tasten
-
- <Home>, <CursorRight>, <CursorLeft> und <BackSpace>
-
- verwendet werden.
-
- <ESC> bricht die Abfrage (d.h. den Aufruf) ab, <RETURN> beendet
- die Eingabe des Passwortes.
-
- Bei falscher Eingabe, wird der Aufruf abgebrochen und eine Fehler-
- meldung (incl. Fehlerton) ausgegeben. Die Fehlermeldung muß mit
- einem Tastendruck quittiert werden. Die gedrückte Taste wird igno-
- riert.
- Für die Eingabe des Passwortes im Dialog stehen maximal 10 Sekunden
- zur Verfügung - nachdem diese Zeitspanne abgelaufen ist, bricht
- MDEBUG die Passwort-Abfrage ab.
-
- ┌──── MDEBUG ────┐
- Ausgabe bei falschem Passwort: │ INKORREKT │
- └────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 8
-
-
-
- Zur Änderung von Variablen über einen zweiten Aufruf von MDEBUG
- mit dem Parameter 'SET' müssen, falls die residente Version mit
- einem aktiven Passwort ausgestattet ist, ebenfalls die Passwörter
- beider Versionen übereinstimmen. Dies gilt auch für den Aufruf von
- MDEBUG mit dem Parameter 'EXIT'.
-
- Das Passwort kann nur in der Datei MDEBUG.COM durch das Programm
- SETMD.EXE geändert werden. Der Aktiv-Schalter des Passwortes kann
- jederzeit während eines Aufrufes gesetzt oder gelöscht werden.
- (s.u.)
- Der Aktiv-Schalter bestimmt, ob das Passwort abgefragt werden soll
- ('ON') oder nicht ('OFF'). Der Status des Aktiv-Schalters wird bei
- installiertem Passwort auf dem oberen Rand des Interpreter-Fensters
- angezeigt.
-
- Zu beachten ist, daß nur immer EINE Kopie von MDEBUG ein bestimm-
- tes Passwort hat. D.h. auch wenn über das Programm SETMD ver-
- schiedenen Kopien von MDEBUG.COM das gleiche Passwort zugeordnet
- wird, sind die Passwörter der Kopien NICHT kompatibel.
-
- In der Original-Version von MDEBUG ist noch kein Passwort ein-
- gerichtet.
-
- Die Fenster zur Passwort-Abfrage werden in der aktuellen Farbe des
- Bildschirms ausgegeben; die aktuelle Cursor-Form wird ebenfalls
- übernommen, d.h. falls der Cursor gerade abgeschaltet ist muß das
- Passwort ohne Cursor eingegeben werden.
-
- Hinweis:
-
- Die Sicherheitskopie von MDEBUG sollte immer OHNE Passwort erstellt
- werden!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 9
-
-
-
- Prozessnummer überprüfen
- ────────────────────────
-
- MDEBUG benutzt zur Kommunikation mit den Bildschirm- und Kommando-
- treibern den Multiplex-Interrupt 2Fh. (siehe unten)
-
- Die voreingestellten Prozessnummern, die MDEBUG zur Kommunikation
- über den Interrupt 2Fh belegt, sind D0h und D1h. Vor dem Start von
- MDEBUG muß überprüft werden, ob diese Prozessnummern schon von
- einem anderen Programm benutzt werden.
-
- Die Überprüfung der Prozessnummern kann mit dem Util SHOW2FP.COM
- gemacht werden. (Vor der Überprüfung der Prozessnummer sollten alle
- Gerätetreiber und speicherresidenten Programme die normalerweise
- benutzt werden, geladen sein.) Der Aufruf von SHOW2FP lautet dann:
-
- SHOW2FP D0 <RETURN>
-
- Sollte SHOW2FP nun melden, daß eine der beiden Prozessnummern
- (die als Parameter angegebene oder die auf diese folgende) schon
- belegt ist, müssen zuerst zwei freie aufeinanderfolgende Prozess-
- nummern gesucht werden (Ansonsten kann MDEBUG ohne Änderung benutzt
- werden).
- Dazu ruft mensch SHOW2FP einmal ohne Parameter auf. Also:
-
- SHOW2FP <RETURN>
-
- SHOW2FP gibt nun alle belegten Prozessnummern zwischen C0h und
- FFh aus. Nun müssen zwei aufeinanderfolgende freie Prozessnummern
- (also zwei die NICHT von SHOW2FP ausgegeben wurden) zwischen C0h
- und FFh gewählt werden. Bei JEDER Installation von MDEBUG muß nun
- die niedrigere der beiden Nummern als Prozessnummer für MDEBUG über
- den Parameter 'PRO=nn' explizit angegeben werden.
- Die neuen Prozessnummern müssen ebenfalls beim Aufruf der Kommando-
- und Bildschirmtreiber über den Parameter '/Pnn' angegeben werden.
-
- Besitzer der Vollversion können die neue Prozessnummer natürlich
- auch über den Parameter 'MAKE' als neue Prozessnummer in die Datei
- MDEBUG.COM eintragen. Sinnvollerweise sollten die neuen Prozess-
- nummern auch über den Parameter '/I' in die Kommando- und Bild-
- schirmtreiber als Voreinstellungen übernommen werden.
-
- Es sei hier nochmals darauf hingewiesen, daß eine falsche Prozess-
- nummer für MDEBUG das System zum Absturz bringen kann!
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 10
-
-
-
- Starten von MDEBUG
- ──────────────────
-
- Aufruf: MDEBUG {INT=[0|{nn}{,N}]} {KEY=X{n}}
- {CoM=nn} {CoD=nn} {CoHm=nn}
- {RoM=nn} {RoD=nn} {RoH=nn}
- {SEG=[nnnn|reg]} {OFF=[nnnn|reg]}
- {STD} {STM} {STH}
- {SET} {EXIT}
- {&name{,{nnnn}}{,{mmmm}}{,N}}
- {*name{,{nnnn}}{,{mmmm}}{,N}}
- {TEXT{=nnnn}{,m}} {GRAPH} {PRO=nn}
- {HELP{={pfad}{name}}} {NOHELP} {BUF=nnnn}
- {?} {#} {DEF} {MAKE}
- {MF2} {NoMF2}
- {@ kommentar}
-
- Hinweis:
-
- Beim Aufruf der Shareware-Version wird eine Shareware-Meldung
- ausgegeben und eine kurze Zeit gewartet. Die Wartezeit kann durch
- das Betätigen einer Taste beendet werden.
-
- Die angegebenen Voreinstellungen beziehen sich alle auf eine
- Original-Version von MDEBUG. (siehe Parameter 'MAKE')
-
- Eine über den Parameter 'MAKE' angepasste Version von MDEBUG gibt
- zusätzlich bei jedem Aufruf die Meldung
-
- Version angepasst.
-
- auf die Standard-Ausgabe aus.
-
-
- Parameter für MDEBUG
-
-
- INT=[0|{nn}{,N}]
-
- 'nn' ist die Nummer des zusätzlich zu installierenden Interrupts.
- (= User-Int, hex., Intervall: 60h .. 67h oder 0h, Voreinst.: 60h)
-
- Der angegebene Interrupt darf noch nicht belegt sein (d.h. Segment
- und Offset in der Interrupt-Tabelle müssen 0 sein!).
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 11
-
-
-
- Die explizite Angabe von 0h als Interrupt-Nummer unterdrückt die
- Installation eines zusätzlichen Interrupts.
- Da die Routinen für den User-Int aber trotzdem resident gehalten
- werden, kann später ein User-Int über den Aufruf mit dem Parameter
- 'SET' eingerichtet werden.
-
- Der Zusatz ',N' verhindert die Überprüfung ob der angegebene Inter-
- rupt schon belegt ist.
-
-
- CoM=nn
-
- 'nn' ist das Farb-Attribut des Monitors
- (hex., Intervall: 0..0FFh, Voreinst.: 70h)
-
- Aufbau des Farb-Attributes:
- ┌────────┬────────────────────────────────────────┐
- │ Bit(s) │ Bedeutung │
- ╞════════╪════════════════════════════════════════╡
- │ 0..3 │ Binärcodierung der Vordergrund-Farbe │
- │ │ Intervall: 0..0Fh │
- │ 4..6 │ Binärcodierung der Hintergrund-Farbe │
- │ │ Intervall: 0..07h │
- │ 7 │ 1 = Blinken, 0 = kein Blinken │
- │ │ oder (je nach Modus der Graphik-Karte) │
- │ │ 1 = Hell, 0 = normal │
- └────────┴────────────────────────────────────────┘
-
-
- CoD=nn
-
- 'nn' ist das Farb-Attribut des Interpreters
- (hex., Intervall: 0..0FFh, Voreinst.: 70h)
- Aufbau des Attributes: siehe Parameter 'CoM'
-
-
- CoHm=nn
-
- 'nn' ist das Farb-Attribut für die Hilfsfarbe m
- (m gleich 1, 2 oder 3).
- ('nn': hex., Invervall: 0..0FFh, Voreinstellungen:
- 'm' = 1 -> 07h 'm' = 2 -> 0Fh 'm' = 3 -> 70h)
- Aufbau des Attributes: siehe Parameter 'CoM'
-
- Der Parameter wird ignoriert, falls die Online-Hilfe nicht geladen
- ist.
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 12
-
-
-
- RoM=nn
-
- 'nn' ist die erste Zeile für die Anzeige des Monitors
- (hex., Intervall: 01h..0Eh, Voreinst.:02h)
-
-
- RoD=nn
-
- 'nn' ist die erste Zeile für die Anzeige des Interpreters
- (hex., Intervall: 01h..0Ch, Voreinst.: 0Ch)
-
-
- RoH=nn
-
- 'nn' ist die erste Zeile für das Window der Online-Hilfe
- (hex., Intervall: 01..0Eh, Voreinst.: 01h);
-
- Der Parameter hat keine Wirkung, falls die Online-Hilfe nicht
- geladen ist.
-
-
- SEG=[nnnn|reg]
-
- 'nnnn' ist die Voreinstellung für den Wert des Registers SE.
- (hex., Intervall: 0000h..FFFFh, Voreinst.: FE00h)
-
- 'reg' ist der Name des Registers aus dem das Segment der Monitor-
- Start-Adresse ermittelt wird. 'reg' muß ein Wort-Register sein.
-
-
- OFF=[nnnn|reg]
-
- 'nnnn' ist die Voreinstellung für den Wert des Registers OF.
- (hex., Intervall: 0000h..FFFFh, Voreinst.: 0000h)
-
- 'reg' ist der Name des Registers aus dem der Offset der Monitor-
- Start-Adresse ermittelt wird. 'reg' muß ein Wort-Register sein.
-
-
- STD
-
- Start beim Aufruf sofort im Interpreter
-
-
- STM
-
- Start beim Aufruf im Monitor (Voreinstellung)
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 13
-
-
-
- STH
-
- Start beim Aufruf sofort in der Online-Hilfe
- Der Parameter hat keine Wirkung, falls die Online-Hilfe nicht
- geladen ist.
-
-
- KEY=X{n}
-
- 'X' ist die Hotkey-Taste von MDEBUG
- (Zeichen, Intervall: 'A'..'Z', Voreinstellung: 'Y')
- Der SCAN-Code wird von MDEBUG selbstständig ermittelt.
- 'n' ist die Codierung der Umschalttasten bei Aufruf von MDEBUG
- über den Hotkey als hexadezimaler Wert.
- (hex., Intervall: 01..0Fh; Voreinstellung: 0Ch (=8+4) = <CTRL-ALT>)
-
- Für die Codierung der Umschalttasten gelten folgende Werte:
-
- ┌─────────────────┬────────┐
- │ Taste │ Wert │ Kombinationen der Umschalttasten
- ╞═════════════════╪════════╡ können durch Addition erreicht
- │ SHIFT rechts │ 01 │ werden. Der Status der Umschalt-
- │ SHIFT links │ 02 │ tasten <SCROLLLOCK>, <CAPSLOCK>,
- │ CTRL-Taste │ 04 │ <NUMLOCK> und <INSERT> ist nicht
- │ ALT-Taste │ 08 │ abfragbar.
- └─────────────────┴────────┘
-
-
- SET
-
- Die explizit angegebenen Parameter werden an eine schon residente
- Version weitergegeben, MDEBUG installiert sich nicht zum zweiten-
- mal. Zur Änderung der Werte einer residenten Version MUSS der
- Parameter angegeben werden (auch für die Parameter HELP, *name und
- &name, s.u.).
-
- Falls die residente Version mit einem aktiven Passwort versehen
- ist, muß das Passwort des residenten MDEBUG mit dem Passwort des
- transienten MDEBUG übereinstimmen.
-
- Das Aktiv-Flag von MDEBUG und das Warte-Flag für den automatischen
- Aufruf falls DOS nicht aktiv ist (s.u.) werden auch bei falschem
- Passwort zurückgesetzt.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 14
-
-
-
- Der Aufruf zur Änderung von Variablen einer residenten Version kann
- auch aus der DOS-Shell eines Programms erfolgen, da sich MDEBUG nur
- einmal installieren lässt.
-
- Ist noch keine Version installiert, wird der Parameter ignoriert
- und MDEBUG wird mit den angegebenen Parametern installiert.
-
- Für die Übergabe von Parametern an eine schon installierte Version
- gilt:
-
- Falls ein neuer User-Int erfolgreich installiert wurde, wird der
- Eintrag in der Interrupt-Tabelle für den alten User-Interrupt auf 0
- zurückgesetzt. Falls der als Nummer für den User-Int 0 angegeben
- wird, wird der User-Int temporär deaktiviert.
-
- Nicht berücksichtigt werden die Parameter
-
- 'STD', 'STM', 'STH',
- 'BUF', 'NOHELP',
- 'SEG=reg', 'OFF=reg'.
-
- Alle anderen Parameter werden wie bei der Erst-Installation behan-
- delt und an die residente Version übergeben.
- Der Parameter 'SET' arbeitet unabhängig davon, ob ein User-Int
- installiert ist oder nicht.
-
-
- EXIT
-
- Entfernen von MDEBUG aus dem Speicher
-
- Vorraussetzung für das Entfernen von MDEBUG aus dem Speicher ist,
- daß MDEBUG das letzte Programm in den Interrupt-Ketten für den
- Interrupt 08h und dem Interrupt 09h ist. Ist dies nicht der Fall,
- gibt MDEBUG eine Fehlermeldung aus und bleibt resident und an-
- sprechbar.
-
- Der Parameter wird bei der Erstinstallation ignoriert, ansonsten
- hat er Vorrang vor allen anderen Parametern. Eventuell zusätzlich
- angegebene Parameter werden nur auf die Syntax geprüft, aber nicht
- ausgeführt.
- Vor dem Entfernen von MDEBUG werden die Interrupts 09h und 08h
- wieder auf die alte Routine gelenkt und die Adresse eines instal-
- lierten User-Ints in der Interrupt-Tabelle wird auf die Adresse 0:0
- zurückgesetzt.
-
- Falls ein Passwort installiert ist, gilt dasselbe wie für den Para-
- meter 'SET'.
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 15
-
-
-
- &name{,{nnnn}}{,{mmmm}}{,N}
-
- Einlesen einer Datei in das PSP von MDEBUG.
-
- 'name' ist der Name (evtl. inclusive Pfad) der zu lesenden Datei.
- Hinter dem '&' und vor und hinter den Kommata dürfen keine Leer-
- zeichen stehen.
-
- Die Datei wird beim Lesen folgendermaßen konvertiert:
-
- LineFeeds (LF, ASCII-Code 0Ah) werden überlesen, CarriageReturns
- (CR, ASCII-Code 0Dh) werden in Null-Bytes umgewandelt und hinter
- dem letzten gelesenen Zeichen fügt MDEBUG ein Null-Wort an.
- Das Zeichen '@' gilt als Kommentar-Einleitung, d.h. alle Zeichen
- hinter einem '@' bis zum nächsten CR (= Zeilenende) in der Eingabe-
- datei werden überlesen. Zeilen die nur aus einem Kommentar bestehen
- werden vollständig überlesen, wobei auch das abschließende CR nicht
- übernommen wird. Falls das Zeichen '@' ins PSP übernommen werden
- soll, muß es als '@@' angegeben werden.
-
- Beispiel für eine Eingabe-Datei für den Parameter '&name':
-
- 0 1 2 3
- Spalte 123456789012345678901234567890...
- ─────────────────────────────────
- @ Kommentarzeile (wird nicht übernommen!)
- 1. Zeile
- 2. Zeile @ Kommentar (wird nicht übernommen)
- 3. Zeile
- 4. Zeile @@ kein Kommentar, wird übernommen
- 5. Zeile @ weiterer Kommentar
- 6. Zeile
- @ weitere Kommentarzeile
- @ weitere Kommentarzeile
- 7. Zeile
- ...
-
- Bei der Erstinstallation wird durch diesen Parameter zusätzlich das
- Register SE mit dem PSP-Segment von MDEBUG und das Register OF mit
- dem Wert 'nnnn' geladen.
- Falls der Parameter 'SE=nnnn' bzw. 'OF=nnnn' angegeben ist, wird
- das entsprechende Register allerdings nicht überschrieben.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 16
-
-
-
- 'nnnn' ist der Offset im PSP ab dem die Datei gelesen werden soll.
- (hex., Voreinstellung bei der Erstinstallation: 80h, bei Aufrufen
- zur Änderung einer installierten Version: 00h; Intervall bei der
- Erstinstallation: 80h..0FDh, bei Aufrufen zur Änderung einer in-
- stallierten Version: 00h..0FDh)
-
- 'mmmm' ist die Anzahl zu lesender Bytes.
- (dez., Voreinstellung: 256-nnnn, Intervall: 0..(256-nnnn))
-
- Der Zusatz ,N unterdrückt die Interpretierung der Zeichen der Datei
- (keine Kommentare, keine Umwandlung von CR/LFs, kein zusätzliches
- Null-Wort als Endekennung).
-
- Falls ein Schalter nicht angegeben werden soll, ein folgender aber
- doch, muß der weggelassene Schalter durch ein Komma angegeben
- werden.
-
- Beispiel: &psp.inp,,,n
-
- Es werden nur die ersten 1024 Bytes der Datei berücksichtigt.
-
- Die Zeilenlänge der Datei ist beliebig. Leerzeilen in der Eingabe-
- Datei für '&name' führen zu einem Null-Wort im Speicher das bei der
- Sicherung über den Parameter '*name' ohne den Schalter ',N' als
- Ende-Kennung des zu sichernden Speicherbereichs genommen wird.
-
- Falls der Parameter '&name' erfolgreich ausgeführt werden konnte,
- wird folgende Meldung auf die Standard-Ausgabe ausgegeben:
-
- xxxxx Bytes aus der Datei <name>
- nach nnnnh:mmmmh eingelesen
-
- Hierbei wird nnnn durch das PSP-Segment der veränderten MDEBUG-
- Version und mmmm durch den Offset ab dem die Datei eingelesen wurde
- ersetzt. xxxx ist die Anzahl der übernommen Bytes, also nicht unbe-
- dingt die Anzahl der gelesenen Bytes da CR und LF hier als ein
- Zeichen gelten (falls der Schalter ',N' nicht angegeben ist).
-
- Falls der Parameter 'SET' angegeben ist, wird das PSP der residen-
- ten Version als Zielbereich genommen (falls vorhanden).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 17
-
-
-
- *name{,{nnnn}}{,{mmmm}}{,N}
-
- Sichern des PSP einer residenten Version von MDEBUG in einer Datei.
-
- 'name' ist der Name (evtl. inclusive Pfad) der zu erstellenden
- Datei. Hinter dem '*' und vor und hinter den Kommata dürfen keine
- Leerzeichen stehen.
-
- Die Bytes im PSP ab dem Offset 'nnnn' bis zum ersten Null-Wort bzw.
- bis zum Offset 'nnnn+mmmm' werden in die Datei 'name' geschrieben.
- Dabei werden einzelne Null-Bytes in CR/LF-Sequenzen umgesetzt.
-
- 'nnnn' ist der Offset im PSP ab dem die Byte geschrieben werden
- sollen. (hex., Voreinstellung: 0h, Intervall: 0..0FFh)
-
- 'mmmm' ist die Anzahl der Bytes die maximal geschrieben werden
- sollen. (dez., Voreinstellung: 256-nnnn, Intervall: 0..(256-nnnn))
-
- Der Zusatz ',N' unterdrückt die Umwandlung von Null-Bytes in CR/LF-
- Sequenzen und die Interpretierung von Null-Worten als Endekennung.
-
- Falls ein Schalter nicht angegeben werden soll, ein folgender aber
- doch, muß der weggelassene Schalter durch ein Komma angegeben
- werden.
-
- Falls die Datei schon existiert, wird sie überschrieben.
-
- Falls der Parameter '*name' erfolgreich ausgeführt werden konnte,
- wird folgende Meldung auf die Standard-Ausgabe ausgegeben:
-
- xxxxx Bytes aus dem PSP ab nnnnh:mmmmh in die Datei
- <name> gespeichert.
-
- Hierbei wird nnnn durch das PSP-Segment der benutzten MDEBUG-
- Version, mmmm durch den Offset ab dem die Bytes geschrieben wurden
- und xxxx durch die Anzahl der geschriebenen Bytes ersetzt. xxxx
- ist die Größe der Datei die größer als der Parameter mmmm sein
- kann, da hier CRs und LFs als jeweils ein Zeichen gezählt werden
- (falls der Parameter ',N' nicht angegeben wurde).
-
- Der Parameter ist nur wirksam bei Aufrufen zur Änderung einer schon
- installierten Version von MDEBUG. Falls die Parameter '&name' und
- '*name' gleichzeitig angegeben sind, wird, falls möglich, zuerst
- der Parameter '*name' ausgeführt. Sollte in diesem Fall ein Fehler
- beim Ausführen des Parameters '*name' auftreten, wird der Parameter
- '&name' auch nicht mehr ausgeführt.
- Die Dateinamen für '&name' und '*name' können identisch sein.
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 18
-
-
-
- HELP{={pfad}{name}}
-
- Online-Hilfe installieren
-
- 'name' ist der Name (inclusive Pfad) oder nur der Pfad (abgeschlos-
- sen mit '/', '\' oder ':') einer Hilfstextdatei. Vor und hinter dem
- Zeichen '=' darf kein Leerzeichen stehen.
-
- Voreinstellung für 'name' ist 'MDEBUG.HLP'.
- Diese wird im aktuellen Verzeichnis und, falls sie dort nicht
- gefunden wird, im Verzeichnis in dem die Datei 'MDEBUG.COM' steht
- gesucht.
- Der Inhalt der gelesenen Datei kann in MDEBUG über die Taste <F1>
- in einem separatem Fenster angezeigt werden.
-
- Nach der Installation von MDEBUG wird die Datei nicht mehr benö-
- tigt. Die Datei kann maximal 20480 Byte groß sein, bei größeren
- Dateien werden nur die ersten 20480 Bytes gelesen und es wird eine
- Warnung ausgegeben. Der Speicherbedarf von MDEBUG steigt bei
- geladener Online-Hilfe um ca. 3000 Byte plus die Anzahl Byte für
- den Puffer für den Hilfstext.
-
- Falls schon eine Version von MDEBUG installiert ist, kann über den
- Parameter 'HELP' eine neue Hilfstextdatei in die residente Version
- eingelesen werden. In die residente Version werden nur soviele
- Zeilen übernommen, wie in deren Puffer passen. Der Inhalt des
- Puffers der residenten Version wird dabei überschrieben.
-
-
- NOHELP
-
- Online-Hilfe nicht laden. (Voreinstellung)
- 'NOHELP' setzt den Parameter 'BUF' nicht außer Kraft.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 19
-
-
-
- BUF=nnnn
-
- Routinen für die Online-Hilfe und einen Puffer für den Hilfstext
- resident halten.
-
- 'nnnn' ist die Größe des Puffers für den Hilfstext.
- (dez, Intervall: 256..20480 oder 0)
-
- Eine Hilfstextdatei wird durch diesen Parameter nicht geladen, d.h.
- die Online-Hilfe ist in MDEBUG nicht verfügbar, solange nicht ein
- Aufruf mit dem Parameter 'HELP' erfolgt. Wird als Puffergröße 0
- angegeben, so wird, falls der Parameter 'HELP' nicht angegeben ist,
- die Online-Hilfe nicht geladen.
-
- Falls der Parameter 'HELP' angegeben ist, und die durch diesen
- geladene Hilfstextdatei größer als die Angabe für den Puffer ist,
- wird der Parameter 'BUF' ignoriert. Falls der angegebene Wert
- größer als die geladene Hilfstextdatei ist, wird ein dem bei 'BUF'
- angegebenen Wert entsprechender Puffer eingerichtet, so daß später
- auch noch größere Hilfstextdateien eingelesen werden können.
-
- Der Parameter 'BUF' überschreibt den Parameter 'NOHELP'.
-
-
- TEXT{=nnnn}{,m}
-
- Keine Überprüfung ob der Bildschirm im Graphikmodus ist beim Aufruf
- über den Hotkey bzw. User-Int.
-
- 'nnnn' ist das Segment des Bildschirmspeicher (hex, vierstellig).
- Falls 'nnnn' angegeben ist, geht MDEBUG immer davon aus, daß der
- Bildschirmspeicher bei 'nnnn:0000' beginnt. Die Voreinstellung für
- 'nnnn' ist im Videomodus 7 (= HGC-Karte) B000h und sonst B800h.
-
- 'm' ist die zu benutzende Bildschirmseite. (dez., Intervall: 0..9,)
- Falls 'm' nicht angegeben ist, wird die Bildschirmseite bei jedem
- Aufruf neu ermittelt.
-
- Falls die zu benutzende Bildschirmseite explizit angegeben ist,
- geht MDEBUG immer davon aus, daß eine Bildschirmseite 4096 Bytes
- lang ist, d.h. der Bildschirm in einem Modus mit 80 x 25 Zeichen
- ist. Falls die Bildschirmseite 2 angegeben ist und das Segment für
- den Bildschirmspeicher mit B800h angegeben ist, beginnt die von
- MDEBUG zu benutzende Bildschirmseite bei B800h + 200h = BA00h.
-
- Über den Parameter 'TEXT' können die Ausgaben von MDEBUG auch auf
- einen zweiten Bildschirm umgeleitet werden.
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 20
-
-
-
- GRAPH
-
- Überprüfung des Bildschirm- und Graphikmodus und Ermittlung der
- aktuellen Bildschirmseite bei jedem Aufruf über den Hotkey oder
- den User-Int. Falls der Parameter 'GRAPH' nach dem Parameter 'TEXT'
- angegeben wird, werden alle durch den Parameter 'TEXT' gesetzten
- Werte zurückgesetzt. ('GRAPH' ist Voreinstellung)
-
-
- PRO=nn
-
- Festlegen der Prozessnummern, über die MDEBUG mit externen Treibern
- kommuniziert. 'nn' ist die Prozessnummer für die Kommunikation mit
- dem Bildschirmtreiber. (hex., Intervall: C0h..FFh, Voreinst.: D0h)
- nn+1 ist die Prozessnummer für die Kommunikation mit den Kommando-
- treibern.
-
- Hinweis:
-
- Die von MDEBUG zu benutzenden Prozessnummern dürfen nicht von ande-
- ren Programmen oder Prozessen belegt sein!
- (siehe 'Aufruf von MDEBUG im Graphikmodus'
- und 'Erweiterungen von MDEBUG')
-
-
- ?
-
- Nur Ausgabe der Syntaxhilfe, alle weiteren Parameter werden nicht
- weiter berücksichtigt. Da die Syntaxhilfe nicht auf eine Bild-
- schirmseite passt, sollte er über die Ausgabe-Umleitung mittels '>'
- in eine Datei gelenkt werden.
-
- Die eventuell zusätzlich angegebenen Parameter werden nur auf die
- Syntax geprüft und die Voreinstellungen in der Syntaxhilfe werden
- durch sie überschrieben.
- Die Parameter werden aber NICHT weiter bearbeitet.
- In einer geclonten Version von MDEBUG (siehe Parameter 'MAKE')
- werden natürlich die veränderten Voreinstellungen angezeigt.
-
-
- DEF
-
- Der Parameter 'DEF' bewirkt die Ausgabe der aktuellen Voreinstel-
- lungen für die Parameter auf die Standard-Ausgabe. Die Aufrufsyntax
- von MDEBUG wird aber nicht ausgegeben.
- Die eventuell zusätzlich angegebenen Parameter werden nur auf die
- Syntax geprüft und die Voreinstellungen in der Syntaxhilfe werden
- durch sie überschrieben.
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 21
-
-
-
- #
-
- Der Parameter '#' veranlasst MDEBUG zur Ausgabe mehrerer interner
- Tabellen. Nach der Ausgabe dieser wird das Programm sofort beendet.
- Alle anderen Parameter werden nicht ausgeführt.
- (siehe 'Ändern der Tastenbelegung von MDEBUG')
-
-
- MAKE
-
- Erstellen einer neuen Version von MDEBUG.COM
-
- Mit dem Parameter 'MAKE' kann eine neue Version von MDEBUG.COM
- erstellt werden. In dieser sind dann die Voreinstellungen durch die
- zusätzlich zum Parameter 'MAKE' angegebenen Parameter ersetzt.
-
- Die Voreinstellungen für folgende Parameter können überschrieben
- werden:
-
- 'INT', 'KEY', 'STD', 'STM',
- 'CoM', 'CoD', 'CoHm',
- 'RoM', 'RoD', 'RoH',
- 'SEG=nnnn', 'SEG=reg', 'OFF=nnnn', 'OFF=reg',
- 'TEXT', 'GRAPH', 'PRO',
- 'HELP', 'NOHELP', 'BUF'
-
- Die Parameter
-
- 'STH', 'SET', 'EXIT','&name','*name', '#',
- 'DEF' und '?'
-
- können nicht zusammen mit dem Parameter 'MAKE' angegeben werden.
- (siehe 'Installieren von MDEBUG')
-
- Die neue Version von 'MDEBUG.COM' wird in das aktuelle Directory
- geschrieben. Eine dort schon existierende Kopie von 'MDEBUG.COM'
- wird in 'MDEBUG.BAK' umbenannt; eine schon bestehende Datei mit dem
- Namen 'MDEBUG.BAK' wird in jedem Fall gelöscht. Nach der Erstellung
- der neuen Version von MDEBUG.COM wird das Programm beendet.
-
- Der Parameter 'MAKE' ist nur in der Vollversion von MDEBUG möglich!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 22
-
-
-
- MF2
-
- veraltet, wird ignoriert (wg. Aufwärtskompabilität)
-
- NoMF2
-
- veraltet, wird ignoriert (wg. Aufwärtskompabilität)
-
-
- @
-
- Rest der Parameter ignorieren.
-
-
- Die Schreibweise (groß/klein) und die Reihenfolge der Parameter
- sind beliebig. Die Reihenfolge der Operanden und Schalter der
- Parameter muß eingehalten werden. Leerzeichen in einem Parameter
- sind nicht erlaubt; Leerzeichen und Tabulatoren zwischen den Para-
- metern sind erlaubt aber nur hinter Zahlenwerten notwendig.
- Falsche Parameter führen zum Programmabbruch; bei mehrmaliger
- Angabe eines Parameters, bzw. sich ausschließender Parameter, gilt
- die letzte korrekte Angabe.
- Eckige Klammern '[..]' kennzeichnen eine Auswahl, also entweder
- den Teil vor dem Zeichen '|' oder den Teil danach. Geschweifte
- Klammern '{..}' zeigen an, daß der Parameter(-Teil) optional ist.
- Hexadezimale Werte können mit oder ohne abschliessendem 'H' (bzw.
- 'h') eingegegeben werden. Bei dezimalen Werten können Punkte zur
- Formatierung des Wertes benutzt werden.
-
- Fehlerfrei angegebene Parameter, die bei der Erstinstallation
- keine Bedeutung haben, führen nur zur Ausgabe einer Warnung (ohne
- Abbruch des Programms. Das Gleiche gilt für Parameter, die bei
- Aufrufen zur Änderung einer installierten Version keine Bedeutung
- haben.
-
- Eine mehrfache Installation von MDEBUG ist nicht möglich, falls
- die Kette der MCBs fehlerfrei ist und die schon installierte
- Version darüber auffindbar ist.
-
- Bei jedem Aufruf gibt MDEBUG den Hotkey, die Nummer des User-Ints
- (falls installiert), die Größe des Puffers für den Hilfstext
- (falls installiert) und die Prozessnummern für den Interrupt 2Fh
- auf die Standard-Ausgabe aus.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 23
-
-
-
- Errorlevel
- ──────────
-
- MDEBUG gibt beim Programm-Ende einen Errorlevel größer als 80 zu-
- rück, falls ein Fehler auftrat.
-
-
-
- Voreinstellungen
- ────────────────
-
- Folgende Register und Speicherstellen von MDEBUG werden bei der
- Installation mit einer Voreinstellung belegt:
-
- Im Register R1 wird von MDEBUG der Wert 80h und im Register R2
- die PSP-Adresse von MDEBUG gespeichert.
- Die internen Speicherstellen, die über die Tasten <F6>, <SHFIT-F6>
- und <CTRL-F6> angesprochen werden (s.u.), werden ebenfalls mit der
- Adresse PSP-Segment:0080h geladen.
-
- Im LowByte des Registers R3 (Register 3L) wird die Nummer des User-
- Ints von MDEBUG gespeichert und im Highbyte des Registers R3
- (Register 3H) wird die Basis-Prozessnummer - das ist die Prozess-
- nummer für den Bildschirmtreiber - gespeichert.
-
- Die restlichen Hilfsregister werden auf 0 gesetzt.
-
- Die Register SE und OF werden mit der Adresse FE00:0000 belegt.
- (falls die Werte für diese Register nicht durch einen Parameter an-
- gegeben sind)
-
- Die Register FS und FO werden mit der Adresse FE00:0000 belegt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 24
-
-
-
- Aufruf über den Hotkey
- ──────────────────────
-
- Nach der Installation kann MDEBUG jederzeit über den einge-
- richteten Hotkey aufgerufen werden. (siehe auch 'Vorbereitungen
- vor dem Start' und 'Hinweise zur Benutzung')
-
- MDEBUG schaltet beim Aufruf über den Hotkey sofort (noch vor der
- Passwort-Abfrage) auf einen eigenen Stack um; somit ist die
- Belastung des Stacks des unterbrochenen Prozesses minimal.
-
- Ein Aufruf im Graphikmodus ist nicht möglich. Getestet wird der
- Bildschirmmodus nur für CGA- und HGC-Karten, d.h. ein Aufruf ist
- nur möglich falls einer der Bildschirmmodi 2, 3 (CGA) oder 7 (HGC,
- Textmodus) eingestellt ist.
-
- Falls der Aufruf nicht erlaubt ist, weil sich der Bildschirm im
- Graphik-Modus befindet oder aber MDEBUG noch aktiv ist, wird er
- unterdrückt. Beim Aufruf im Graphikmodus ertönt zusätzlich ein
- Fehlerton.
-
- Wenn der aktuelle Bildschirm-Modus von MDEBUG nicht korrekt
- erkannt wird, muß der Parameter 'TEXT' beim Aufruf angegeben
- werden. (s.o., oder ein Bildschirmtreiber geladen werden, s.u.)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 25
-
-
-
-
- Beschreibung des Monitors
- ─────────────────────────
-
-
- Aufbau des Monitor-Fensters
- ───────────────────────────
-
- ┌──> oberes Window des Monitors
- │
- │┌──> 'Offset: 1CB3' ->> Offset der akt. Cursorposition (= Konstante CU, s.u.)
- ││ [...] = Wert des akt. Bytes in verschiedenen Formaten
- ││ ┌─> Monitor-Schalter
- ││ │
- ││╔═══════════════════════════════ MDEBUG V2.00 ═══════[b*]════════════════════╗
- ││║ SE:OF Adr.: B000:1CA0 SE: B000 OF: 1CA0 Suchen: ║
- │└╟──────┬─ Offset: 1CB3 [= 20h = #032 = ' ']───────────────┬──────────────────╢
- ├─║ 1CA0 │ 70 BA 70 BA 70 36 70 B3 70 20 70 30 70 30 70 30 │ p║p║p6p│p p0p0p0 ║
- │ ║ 1CB0 │ 70 30 70 20 70 B3 70 20 70 BA 70 20 70 42 70 75 │ p0p p│p p║p pBpu ║
- │ ║ 1CC0 │ 70 73 70 79 70 2D 70 46 70 6C 70 61 70 67 70 20 │ pspyp-pFplpapgp ║
- └─║ 1CD0 │ 70 3D 70 20 70 30 70 30 70 20 70 20 70 44 70 49 │ p=p p0p0p p pDpI ║
- ┌─║ │ ── FS:FO => 3000:1A10 ────────────────────────── │ ║
- │┌╢ 1A10 │ 70 4D 70 20 70 20 70 BA 70 20 70 38 70 20 70 30 │ pMp p p║p p8p p0 ║
- ││║ 1A20 │ 70 42 70 20 70 3D 70 20 70 30 70 32 70 36 70 31 │ pBp p=p p0p2p6p1 ║
- │├║ 1A30 │ 70 3A 70 30 70 30 70 31 70 45 70 20 70 20 70 4D │ p:p0p0p1pEp p pM ║
- ││╚══════╧══════════════[ (c) Bernd Schemmer 1988 - 1992 ]══╧══════════════════╝
- ││ ├──┘ ├──────────────────────────────────────────────┘ ├──────────────┘
- ││ │ │ │
- ││ │ └──> Speicherinhalt in hexadezimalem Format └──> Speicherinhalt
- ││ │ als ASCII-Codes
- ││ └──> Offset des Speicherbereichs in der Zeile
- ││
- │└──> unteres Window des Monitors
- │
- └───> Statuszeile des unteren Windows des Monitors inclusive
- der Anzeige der Inhalte der Register FS und FO
-
- Hinweis:
-
- Mit 'Fenster' ist immer der gesamte Monitor gemeint, mit 'Window'
- immer die 'Teilfenster' zur Anzeige von jeweils einem Speicher-
- bereich im Monitor.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 26
-
-
-
- Der Inhalt des Monitor-Fensters, wird fortlaufend aktualisiert -
- auch wenn der Interpreter aktiv ist.
-
- Ausnahme:
-
- Nach Eingabe des Prefixzeichens <CTRL-P> im Interpreter bzw. in der
- 3. Spalte des Monitors ist die Aktualisierung des Monitor-Inhaltes
- bis zur Eingabe der nächsten Taste blockiert.
- Bei der Eingabe eines Suchstrings, während der Suche eines Strings
- im Monitor, während der Bearbeitung eines oder mehrerer Inter-
- preter-Befehl(e) und während des Aufrufs der Online-Hilfe wird
- die Anzeige des Monitors ebenfalls nicht aktualisiert.
-
-
- Auf den oberen Rahmen werden die akutellen Werte der Schalter des
- Monitors angezeigt ([...]):
-
- ┌──────────┬───────┬──────────────────────────────────┬───────────┐
- │ 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 │ │ aktualisiert │ │
- │ │ - │ Monitor-Inhalt wird nur nach │ │
- │ │ │ einem Tastendruck aktualisiert │ │
- └──────────┴───────┴──────────────────────────────────┴───────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 27
-
-
-
- ■ Aufbau der ersten Statuszeile
-
- ┌─> Inhalt des Registers SE (hex.)
- │ ┌─> Inhalt des Registers OF
- │ │ (hex.)
- ╔════════════════════════════│════════│═════════════════...════════╗
- ║ SE:OF Adr.: B000:1CA0 SE:│B000 OF:│1CA0 Suchen: ║
- ╟ ┌─── ┌──────── └──── └──── ┌────────... ╢
- │ │ └─> Puffer für die
- │ │ Eingabe eines
- │ │ Suchstrings
- │ └─> Adresse des Speicherbereichs der im oberen Window
- │ angezeigt wird (Segment-Feld : Offset-Feld)
- │
- └─> Namen der Register, aus denen die Start-Adresse des Monitors
- ermittelt wird. Die hier stehende Register-Kombination wird im
- weiteren als Monitor-Start-Adresse bezeichnet.
-
-
- ■ Aufbau der zweiten Statuszeile
-
- ║ ── FS:FO => 3000:1A10 ────────────────────────── ... ║
- ┌─── ┌───
- │ └─> Inhalt des Registers FO (hex.)
- └─> Inhalt des Registers FS (hex.)
-
- Die Register FS und FO bilden die Startadresse für das untere
- Monitor-Window.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 28
-
-
-
- Tastenbelegung im Monitor
- ─────────────────────────
-
-
- Die folgenden Tasten sind in allen Spalten und bei der direkten
- Eingabe des Segments und des Offsets verfügbar:
-
-
- ■ <F1>
-
- Aufruf der Online-Hilfe, falls sie geladen ist.
- Ansonsten hat die Taste keine Wirkung.
-
-
- ■ <CTRL-F1>
-
- Anzeige des DOS-Bildschirms und Warten auf einen Tastendruck. Nach
- der Eingabe einer Taste fährt MDEBUG fort. Die gedrückte Taste wird
- ignoriert.
-
-
- ■ <CTRL-PgUp>, <CTRL-PgDn>
-
- Verschieben des Monitor-Fensters um 1 Zeile nach oben bzw. unten.
- Die neuen Fensterkoordinaten des Monitors sind bis zur nächsten
- Änderung gültig.
-
-
- ■ <F9>
-
- Laufende Aktualisierung der Monitor-Anzeige ein- oder ausschalten.
- Falls die laufende Monitor-Aktualisierung ausgeschaltet ist, wird
- die Anzeige des Monitors nur nach jedem Tastendruck aktualisiert.
- Der aktuelle Modus wird immer auf dem oberen Rahmen des Monitors
- angezeigt ('*' -> ein, '-' -> aus)
-
-
- ■ <ALT-F9>
-
- Bildschirmdaten neu ermitteln und das Fenster neu aufbauen. Stellt
- MDEBUG bei der Ermittlung der Bildschirmdaten einen falschen Bild-
- schirmmodus fest, so wird der Aufruf beendet. In diesem Fall ist
- die Fensterstruktur von MDEBUG sehr wahrscheinlich zerstört und
- muß beim nächsten Aufruf von MDEBUG in einem korrektem Bildschirm-
- modus über die Taste <ALT-F9> wieder restauriert werden.
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 29
-
-
-
- ■ <F2>
-
- Editieren eines Suchstrings der im Speicher gesucht werden soll.
- Der Suchstring kann maximal 21 Zeichen lang sein.
-
- Gesucht wird ab dem zweiten im ersten Window des Monitors angezeig-
- ten Byte bis zum Ende des ersten Megabytes des Speichers. Falls
- der Suchstring gefunden wird, wird die Monitor-Start-Adresse mit
- der Adresse des Suchstrings geladen und ein Ton ausgegeben.
- Die gefundene Adresse wird dabei folgendermaßen konvertiert:
-
- Falls die Adresse VOR dem ersten MCB oder HINTER dem letzten MCB
- liegt, wird sie in die Form 'nn00:nnnn' (n <= 0 <= F) konvertiert.
-
- Liegt die Adresse in den ersten 65.535 Byte eines Speicherblocks
- der über die MCB-Kette verwaltet wird, so wird sie in die Form
- 'seg:nnnn' konvertiert, wobei seg das Segment des Speicherblocks,
- in dem die Adresse liegt, ist. Sollte diese Form für die Adresse
- nicht möglich sein, so wird sie in der Form 'nn00:nnnn' ausgegeben.
-
- Hinweis:
-
- Die für die Suche benötigte Zeit wird bestimmt durch die Häufigkeit
- des ersten direkt angegebenen Zeichens im Suchstring.
-
- Die Suche kann über die BREAK-Taste abgebrochen werden. (siehe
- Beschreibung des Interpreters)
-
-
- ■ <SHIFT-F2>
-
- Suche des Suchstrings ab dem zweiten Byte in dem im ersten Window
- angezeigten Speicherbereich fortsetzen. Falls der Suchstring
- gefunden wird, wird die Monitor-Start-Adresse auf die gefundene
- Speicherstelle gesetzt. Ansonsten wird die Anzeige nicht verändert.
-
- Die Suche kann über die BREAK-Taste abgebrochen werden. (siehe
- Beschreibung des Interpreters)
-
-
- ■ <F4>
-
- Aufruf des Interpreters
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 30
-
-
-
- ■ <SHIFT-F6>
-
- Speichern der aktuellen Monitor-Start-Adresse.
- Eine Schachtelung ist nicht möglich.
-
-
- ■ <F6>
-
- Restaurieren der Monitor-Start-Adresse mit der durch <SHIFT-F6>
- gespeicherten Adresse.
-
-
- ■ <CTRL-F6>
-
- Vertauschen der aktuellen Monitor-Start-Adresse mit der durch die
- Taste <SHIFT-F6> gespeicherten Adresse.
-
-
- ■ <ALT-CursorUp>, <ALT-CursorDown>
-
- Zeilenweises Scrollen des unteren Windows des Monitors.
-
-
- ■ <ALT-PgUp>, <ALT-PgDn>
-
- Seitenweises Scrollen des unteren Windows des Monitors.
-
-
- ■ <CTRL-CursorDown>, <CTRL-CursorUp>
-
- Verkleinern bzw. Vergrößern des unteren Windows
-
-
- ■ <ESC>
-
- Verlassen von MDEBUG
- Der durch den Aufruf von MDEBUG unterbrochene Prozess wird fort-
- gesetzt. Ein Neuaufruf von MDEBUG startet im Monitor.
-
-
- ■ <F10>
-
- Verlassen von MDEBUG, ein Neuaufruf von MDEBUG startet im Inter-
- preter.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 31
-
-
-
- Zusätzliche Tastenbelegung in der 2. und 3. Spalte:
-
-
- ■ Cursor-Tasten
-
- Verändern des Offsets des im oberen Windows angezeigten Speicher-
- ausschnittes. (nach 0FFFFh folgt 0h - ohne Veränderung des Segments
- im Segment-Register, das obere Window wird also gescrollt) Beim
- Scrollen des Windows wird der Wert des Registers, aus dem der
- Offset für das Window ermittelt wird, verändert.
-
- Zur Positionierung des Cursors und zum Scrollen des Windows können
- folgende Tasten verwendet werden:
-
- ■ <CursorRight>, <CursorLeft>, <CursorDown>, <CursorUp>
- <Blank>, <BackSpace>, <PgDn>, <PgUp>, <Home>, <End>
-
- In der 2. Spalte können zusätzlich die Tasten <Tab> (Sprung zum
- Zeilenende) und <SHIFT-Tab> (Sprung zum Zeilenanfang) verwendet
- werden.
- Zur Änderung des Segments muß dieses explizit geändert werden.
-
-
- ■ <F8>
-
- Teilen des Monitors ab der Zeile über dem Cursor. Im unteren Window
- wird der Speicherbereich ab der Adresse auf der der Cursor steht
- angezeigt. D.h. die Register FS und FO werden mit dieser Adresse
- geladen.
- Falls schon eine Teilung in Kraft ist, wird sie gelöscht. Die Taste
- <F8> ist in der ersten Zeile des Fensters gesperrt.
-
-
- ■ <SHIFT-F8>
-
- Schließen des unteren Windows
-
-
- ■ <CTRL-F8>
-
- Vertauschen der Adressen der Windows.
-
-
- ■ <F3>
-
- Wechseln zwischen der Spalte 2 (editieren der Hex-Darstellung) und
- der Spalte 3 (editieren der ASCII-Anzeige) des Monitors.
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 32
-
-
-
- In der Spalte 2 können folgende Tasten benutzt werden:
-
- ■ <+>, <->
-
- Erhöhen bzw. Vermindern des Offsets der Monitor-Start-Adresse um 1.
-
- ■ <0>..<9>, <A>..<F>, <a>..<f>
-
- Direkte und SOFORTIGE Änderung der aktuellen Speicherstelle falls
- der angezeigte Speicherbereich im RAM liegt. (jeweils ein Nibble,
- d.h. ein Halbbyte)
- Im ROM oder in unbelegten Speicherbereichen kann keine Veränderung
- vorgenommen werden. Ein Byte wird jeweils mit 2 Zeichen angezeigt -
- für jedes Nibble eins.
-
-
- ■ <O>
-
- Direkte Veränderung des Offset des anzuzeigenden Speicherbereichs
- im Offset-Feld.
-
-
- ■ <S>
-
- Direkte Veränderung des Segments des anzuzeigenden Speicherbereichs
- im Segment-Feld.
-
-
- ■ <Z>
-
- Wort an der aktuellen Cursorposition als neuen Offset für die
- Anzeige des oberen Windows nehmen. Geeignet zum Durchlaufen von
- mit NEAR-Zeigern verketteten Speicherstrukturen.
-
-
- ■ <W>
-
- Wort an der aktuellen Cursorposition als neues Segment für die
- Anzeige des oberen Windows nehmen.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 33
-
-
-
- ■ <P>
-
- Doppelwort an der aktuellen Cursorposition als neue Adresse für die
- Anzeige des oberen Windows nehmen. Geeignet zum Durchlaufen von
- mit FAR-Zeigern verketteten Speicherstrukturen.
-
-
- ■ <M>
-
- Falls das Byte an der aktuellen Cursorposition den ASCII-Code 'M'
- enthält, wird das Wort an der Stelle 'Cursor-Position + 3' auf das
- Segment der Monitor-Start-Adresse addiert und diese inkrementiert.
- Der Offset der Monitor-Start-Adresse wird auf 0 gesetzt.
- Falls sich also der Cursor auf dem Kennbyte eines MCBs befindet,
- kann mit der Taste <M> die Adresse des nächsten MCB geladen werden.
- Enthält das Byte an der Monitor-Start-Adresse nicht den ASCII-Code
- 'M', so wird die Monitor-Start-Adresse mit der Adresse des ersten
- MCBs geladen.
-
-
- ■ <Y>
-
- Ermittelt den nächsten MCB analog zur Taste <M> aber ohne Über-
- prüfung, ob der Cursor auf dem Kennzeichen eines MCBs steht.
-
-
- ■ <L>
-
- Setzt die Monitor-Start-Adresse auf den letzten MCB.
- (max. werden 255 MCBs durchlaufen)
-
-
- ■ <T>
-
- Übernimmt die Adresse des Bytes, auf dem der Cursor steht als neue
- Monitor-Start-Adresse.
-
-
- ■ <X>
-
- Restaurieren der letzten Start-Adresse des Monitors. MDEBUG sichert
- die Start-Adresse des Monitors vor der Ausführung der Tasten <M>,
- <P>, <Z>, <L>, <T> und <W>.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 34
-
-
-
- ■ <CTRL-B>
-
- Erlaubt oder unterbindet direkte Änderungen im Monitor. Der aktu-
- elle Modus wird auf dem oberen Rahmen des Fensters des Monitors
- ausgegeben und ist an der Cursorform erkennbar (Unterstrich ->>
- Änderungen erlaubt, Block ->> Änderungen nicht erlaubt).
-
-
- In der Spalte 3 gilt folgende Tastenbelegung:
-
-
- ■ <CTRL-P>
-
- Prefixzeichen, d.h. die nach <CTRL-P> eingegebene Taste wird nicht
- interpretiert sondern so übernommen.
-
-
- ■ <ESC>
-
- Verlassen von MDEBUG
-
-
- ■ Alle anderen Tasten verändern SOFORT die aktuelle Speicherstelle
- (auch Steuerzeichen wie <Tab>, <RETURN>, usw.)
-
-
- Die Tastenbelegung bei der Eingabe von Segment oder Offset ist fol-
- gendermaßen:
-
-
- ■ <0>..<9>, <A>..<F>, <a>..<f>
-
- Hexadezimale Eingabe des neuen Wertes des aktuellen des Register-
- Wertes. Die Anzeige wird nach jeder Änderung eines Nibbles sofort
- angepasst.
-
-
- ■ <CursorLeft>, <CursorRight>, <End>, <Home>
-
- Cursor-Positionierung, durch die Eingabe von <CursorLeft> am
- Anfang des Offset-Feldes kann in das Segment-Feld und durch die
- Eingabe von <CursorRight> am Ende des Segment-Feldes kann in das
- Offset-Feld gewechselt werden.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 35
-
-
-
- ■ <O>
-
- Eingabe eines neuen Offsets für das obere Window im Offset-Feld.
-
-
- ■ <S>
-
- Eingabe eines neuen Segments für das obere Window im Segment-Feld.
-
-
- ■ <RETURN>
-
- Rückkehr in die Spalte 2 bzw. 3.
-
-
- Die Tastenbelegnung bei der Eingabe des Suchstrings ist:
-
- ■ Erlaubt sind alle Zeichen. Zeichen mit einem ASCII-Code kleiner
- als 32 (dez.) müssen über <ALT-ASCIINummer> eingegeben werden.
- Die Zeichen mit den ASCII-Codes 13 (<RETURN>), 27 (<ESC>) und
- 8 (<BackSpace>) müssen nach dem Prefix-Zeichen <CTRL-P> einge-
- geben werden. Funktionstasten ohne Bedeutung werden ignoriert.
- Leerzeichen im Suchstring sind erlaubt, der Suchstring kann aber
- nicht mit einem Leerzeichen enden. Das Zeichen ■ (ASCII-Code 254)
- gilt als Joker im Suchstring.
-
-
- ■ <F1>
-
- Aufruf der Online-Hilfe, falls sie geladen ist.
- Ansonsten hat die Taste keine Wirkung. (s.o.)
-
-
- ■ Die Tasten
-
- <CursorRight>, <CursorLeft>, <Home>, <End>, <Delete>,
- <BackSpace>
-
- können bei der Eingabe zum Positionieren des Cursor im Suchstring
- benutzt werden. Die Eingabe erfolgt immer im INSERT-Modus.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 36
-
-
-
- ■ <CTRL-End>
-
- Löschen des Eingabepuffers für den Suchstring ab der Cursorposition
- bis zum Schluß.
-
-
- ■ <ESC>
-
- Editieren des Suchstrings abbrechen, der Suchstring wird aber nicht
- gelöscht.
-
-
- ■ <RETURN>
-
- Editieren des Suchstrings beenden und Suchvorgang starten.
-
-
- Hinweis:
-
- Falls im Monitor der Inhalt des Registers FS bzw. FO verändert
- werden soll, muß mensch folgendermaßen vorgehen:
-
- Zuerst die Windows des Monitors durch <CTRL-F8> vertauschen. Nun
- über die Taste <O> bzw. <S> ins Segment- bzw. Offset-Feld springen
- und den Wert ändern. Und zum Schluß über die Taste <CTRL-F8> die
- Windows wieder tauschen.
-
- Analog muß vorgegangen werden, falls direkte Änderungen in dem im
- unteren Fenster angezeigten Speicherbereich vorgenommen werden
- sollen.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 37
-
-
-
- Beschreibung der Online-Hilfe
- ─────────────────────────────
-
-
- Aufbau des Fensters der Online-Hilfe
- ────────────────────────────────────
-
- ┌────────────── Text der Online-Hilfe (akt. Ausschnitt)
- │ ┌────────── Überschrift der Online-Hilfe (wird immer angezeigt)
- │ │
- │ │ ┌─ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ─┐
- │ └─>. *** Hilfstext für MDEBUG *** .
- ├───>. Tastenbelegung im Monitor .
- │ . .
- │ . CTRL-PgUp - Fenster nach oben CTRL-PgDn - Fenster nach unten .
- │ . CTRL-F1 - Programm-Pause ALT-F9 - Fenster neu aufbauen .
- │ . F2 - Suchen eines Strings SHIFT-F2 - Suche wiederholen .
- │ . F3 - Wechsel der akt. Spalte F4 - Interpreter aufrufen .
- │ . F9 - lfd. Akt. ein/aus F6 - akt. Adr. rest. .
- │ . SHIFT-F6 - akt. Adresse speichern CTRL-F6 - akt. Adr. tauschen .
- │ . F8 - Monitor-Fenster an der akt. Stelle teilen .
- └───>. SHIFT-F8 - unteres Monitor-Fenster schliessen .
- ┌───>.░░░9░^░░░░░2░░░░░3░░░░░░4░░░░░░░5░░░░░░░░░░░░░░░░░░░░░6░░░░░░7░░░░8░░░░░░░░░░░░░.
- │ ┌─> , , PgDn, PgUp, Home, End -> Scrollen <n>/<ALT-n> [Marker] F10, ESC -> exit
- │ │ └─ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ─┘
- │ │
- │ └────────── Tastenbelegung in der Online-Hilfe
- └────────────── Scrollbar der Online-Hilfe
-
-
- Die aktuelle Position im Hilfstext wird im Scrollbar durch einen
- einfachen oder doppelten Pfeil (je nach aktueller Position) ange-
- zeigt (in der obigen Abbildung wird der Pfeil durch das Zeichen ^
- repräsentiert), die Positionen der Marker werden durch die ent-
- sprechende Nummer im Scrollbar angezeigt. Falls mehrere Marker auf
- einer Position stehen, wird immer nur der Marker mit der kleinsten
- Nummer im Scrollbar angezeigt.
-
- Ein Rahmen um das Fenster der Online-Hilfe wird nicht ausgegeben.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 38
-
-
-
- Tastenbelegung in der Online-Hilfe
- ──────────────────────────────────
-
-
- Während eines Aufrufes der Online-Hilfe gelten folgende Tasten-
- belegungen:
-
-
- ■ <CursorUp>, <CursorDown>, <PgDn>, <PgUp>
-
- - Zeilen- bzw. Seitenweises Scrollen des Hilfstextes
-
-
- ■ <Home>, <End>
-
- - Sprung zur ersten bzw. letzten Zeile des Hilfstextes
-
-
- ■ 0 - Anzeige der zuletzt angezeigten Seite
-
-
- ■ <ALT-1> .. <ALT-9>
-
- - Setzen des Markers # (1...9) auf die erste Zeile im
- Window
-
-
- ■ <1> .. <9>
-
- - Sprung zum Marker # (1 .. 9).
-
-
- ■ <CTRL-PgUp>, <CTRL-PgDn>
-
- - Verschieben des Fensters für die Online-Hilfe um
- jeweils eine Zeile nach oben bzw. unten.
-
-
- ■ <ESC> - Verlassen der Online-Hilfe
-
-
- ■ <F10> - Verlassen von MDEBUG, Neustart in der Online-Hilfe
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 39
-
-
-
-
- Beschreibung des Interpreters
- ─────────────────────────────
-
- Aufbau des Interpreter-Fensters
- ───────────────────────────────
-
- ┌─────────> Inhalt der Hilfsregister R1 bis R7
- │┌──────> PSP- und Code-Segment von MDEBUG (= Wert der Konstanten CS)
- ││┌───> Puffer für die Eingabe von Befehlen (max. 66 Zeichen)
- ││└────────────────┐ ┌─> Interpreter-Schalter
- ││ ┌─────┴─────────────────────────────────────│────────────────────────┐
- ││ ╔══════════════════════════════════ MDEBUG V2.00 ════[UQI]═════════════════════╗
- ││ ║ Befehl: ║
- ││ ╟────────┬──────────────────────────────────────────────────M──────────────────╢
- │└──║CS: 2390│ ╓─────────── Register ─────────────────────────╖ 1 0DC9:0000 LASTBUF║
- │ ║R┬──────┤ ║ AX = 0100 BX = 0324 CX = 0001 DX = 022C ║ 2 0974:0000 1. MCB ║
- ├───║1│ 0080 │ ║ SI = 001C DI = 035E DS = 09E6 ES = 022C ║ 3 022C:7420 1. DPB ║
- ├───║2│ 2390 │ ║ BP = 2DB2 SS = 022C SP = 09CC ║ 4 022C:0098 SDL ║
- ├───║3│ D061 │ ║ Flags = ....__I__Z___E._ ║ 5 0070:01A4 CLOCK ║
- ├───║4│ 0000 │ ║ R0 = $1000000001000101 = 8045 ║ 6 09E6:0000 CON ║
- ├───║5│ 0000 │ ║ R8 = #34150 (-#31386) = 8566 = 'áf' ║ 7 0D24:0000 BUF ║
- ├───║6│ 0000 │ ║ Ruecksprung-Adresse = F000:E830 ║ 8 0F76:0000 PRet ║
- └───║7│ 0000 │ ║ Busy-Flag = 01 DIB = 022C:001E ║ 9 0A6B:0000 PFileT ║
- ╚═╧══════╧═╩═══════════[ (c) Bernd Schemmer 1988 - 1992 ]═╩═╩══════════════════╝
- └─────────────────────┬─────────────────────┘ └──────┬──────────┘
- ┌──────────────────────────────────────┘ ┌──────┘
- └─> AX .. SP : Inhalt der Prozessorregister └─> wichtige Adressen
- Flags : Inhalt des Flagregisters aus dem DIB
- R0 : Inhalt des Hilfsregisters R0 (binär und hex.) (= Memory-Speicher
- R8 : Inhalt des Hilfsregisters R8 (dezimal mit und 1 bis 9)
- ohne Voreichen, hexadezimal und als ASCII-Codes)
- Ruecksprung-
- Adresse : Adresse, an der der aktuelle Prozess nach dem Ende
- des Aufrufs von MDEBUG fortgesetzt wird. Der Wert
- vor dem Doppelpunkt kann über die Konstante RS,
- der Wert hinter dem Doppelpunkt über die Konstante
- RO benutzt werden.
- Busy-Flag: = 0 -> DOS-Aufrufe sind erlaubt
- <> 0 -> DOS-Aufrufe sind nicht erlaubt
- Das Busy-Flag (= Konstante DO) ist der Wert des
- DOS-Busy-Flags verODERt mit dem Wert des Critical-
- Error-Flags.
- DIB : Adresse des DOS-Info-Blocks (DIB, = Memory-Speicher 0)
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 40
-
-
-
- Die Bedeutungen der angezeigten Adressen aus dem DIB sind wie folgt:
- (ab DOS 3.3, DIB = DOS-Info-Block oder auch 'List of Lists')
-
- ┌─┬────────┬─────────────────────────────────────────────┐
- │M│ Name │ Bedeutung │
- ╞═╪════════╪═════════════════════════════════════════════╡
- │1│LASTBUF │ Adresse des letzten (= aktuellen) Puffers │
- │2│1. MCB │ Adresse des ersten Memory-Control-Blocks │
- │3│1. DPB │ Adresse des ersten Disk-Parameter-Blocks │
- │4│SDL │ Adresse der System-Dateienliste │
- │5│CLOCK │ Adresse des CLOCK-Device-Headers │
- │6│CON │ Adresse des CON-Device-Headers │
- │7│BUF │ Adresse des ersten Puffers │
- │ │ │ (DOS 4+: Adresse des Puffer-Info-Blocks) │
- │8│PRet │ Adresse der Laufwerks-Tabelle │
- │9│PFileT │ Adresse der FCB-Liste │
- └─┴────────┴─────────────────────────────────────────────┘
-
-
- Für die Anzeige der Flags werden folgende Zeichen verwendet:
-
- ┌──────────┬────────────────────────┐ Falls ein Flag gesetzt ist,
- │Buchstabe │ gesetztes Flag │ wird der entsprechende Buch-
- ╞══════════╪════════════════════════╡ stabe, bzw. ein Punkt falls
- │ O │ Overflow-Flag │ das Flag ohne Bedeutung ist,
- │ D │ Direction-Flag │ angezeigt. Nicht gesetzte
- │ I │ Interrupt-Enable-Flag │ Flags werden durch einen
- │ T │ Trap-Flag │ Unterstrich angezeigt.
- │ S │ Sign-Flag │
- │ Z │ Zero-Flag │ Hinweis für 80286er/80386er:
- │ A │ Auxiliary-Flag │
- │ E │ Parity-Even-Flag │ Es werden nur die Flags, die
- │ C │ Carry-Flag │ auch dem 8086 bekannt sind
- └──────────┴────────────────────────┘ angezeigt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 41
-
-
-
- Alle expliziten Werte ohne Formatkennzeichen ('#','$') sind hexa-
- dezimal. Falls ein Passwort installiert ist wird der Status des
- Passwortes ('ON' oder 'OFF') auf dem oberen Rand (über 'Befehl: ')
- ausgegeben. Alle Meldungen von MDEBUG werden ebenfalls auf den
- oberen Rand des Fensters des Interpreters angezeigt. Sie müssen
- durch eine Taste quittiert werden. Vor der Ausgabe einer Fehler-
- meldung wird der Tastaturpuffer gelöscht.
-
- Die aktuellen Werte verschiedener Schalter von MDEBUG werden eben-
- falls auf den oberen Rand des Fensters ausgegeben ([...]):
-
- ┌──────────┬───────┬──────────────────────────────────┬───────────┐
- │ 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 ein- │ │
- │ │ │ geschaltet │ │
- ├──────────┼───────┼──────────────────────────────────┼───────────┤
- │ Input- │ I │ Eingaben erfolgen im INSERT- │ <INSERT> │
- │ Mode │ │ Modus │ │
- │ │ i │ Eingaben erfolgen im OVERWRITE- │ │
- │ │ │ Modus │ │
- └──────────┴───────┴──────────────────────────────────┴───────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 42
-
-
-
- Tasten-Belegung im Interpreter
- ──────────────────────────────
-
- ■ BREAK-Taste
-
- Die BREAK-Taste dient zum Abbrechen von verschiedenen Befehlen
- des Interpreters und des Monitors von MDEBUG. Die BREAK-Taste ist
- in MDEBUG die Tastenkombination <CTRL-ScrollLock>.
-
-
- ■ <F1>
-
- Aufruf der Online-Hilfe, falls sie geladen ist.
- Ansonsten hat die Taste keine Wirkung.
-
-
- ■ <CTRL-F1>
-
- Anzeige des DOS-Bildschirms und Warten auf einen Tastendruck. Die
- gedrückte Taste wird nicht weiter bearbeitet.
-
-
- ■ <CTRL-PgUp>, <CTRL-PgDn>
-
- Fenster eine Zeile nach oben/unten verschieben
-
- Die neuen Fensterkoordinaten sind bis zur nächsten Änderung gültig.
-
-
- ■ <CursorDown>, <CursorUp>, <PgDn>, <PgUp>
-
- Scrollen des oberen Windows des Monitors.
-
-
- ■ <GREY->, <GREY+> (aus den Nummernblock)
-
- Erhöhen bzw. Vermindern des Offsets der Monitor-Start-Adresse um 1.
-
-
- ■ <F9>
-
- Laufende Aktualisierung des Monitors ein- oder ausschalten.
- Der aktuelle Modus wird immer auf dem oberen Rahmen des Monitors
- angezeigt ('*' -> ein, '-' -> aus)
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 43
-
-
-
- ■ <ALT-F9>
-
- Bildschirmdaten neu ermitteln und beide Fenster neu aufbauen.
- Stellt MDEBUG hierbei einen falschen Bildschirmmodus fest, so wird
- der Aufruf beendet. In diesem Fall ist die Fensterstruktur beider
- Fenster sehr wahrscheinlich zerstört und muß beim nächsten Aufruf
- von MDEBUG im richtigen Bildschirmmodus über die Taste <ALT-F9>
- jeweils restauriert werden. Durch die Taste <ALT-F9> wird der
- Eingabe-Puffer des Interpreters und der Puffer für den Suchstring
- im Monitor gelöscht.
-
-
- ■ <F3> - Passwort-Abfrage einschalten
-
- ■ <F4> - Passwort-Abfrage ausschalten
-
- Falls ein Passwort installiert ist, kann es mit diesen beiden
- Tasten ein- oder ausgeschaltet werden. Ist kein Passwort instal-
- liert, haben die Tasten keine Bedeutung.
-
-
- ■ <F2>
-
- Die Werte der aktuellen Register-Kombination für die Monitor-
- Start-Adresse werden in die Register SE und OF übernommen. Als neue
- Register-Kombination für die Monitor-Start-Adresse wird das Regis-
- terpaar SE:OF genommen.
-
-
- ■ <SHIFT-F2>
-
- Die Register SE und OF werden als Monitor-Start-Adresse genommen.
- (Short-Cut für den Befehl 'V SE,OF', siehe unten)
-
-
- ■ <SHIFT-F6>
-
- Speichern der aktuellen Monitor-Start-Adresse.
- Eine Schachtelung ist nicht möglich.
-
-
- ■ <F6>
-
- Restaurieren der Monitor-Start-Adresse mit der durch <SHIFT-F6>
- gespeicherten Adresse.
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 44
-
-
-
- ■ <CTRL-F6>
-
- Vertauschen der aktuellen Monitor-Start-Adresse mit der durch die
- Taste <SHIFT-F6> gespeicherten Adresse.
-
-
- ■ <F7>
-
- Hilfsregister R1 bis R8 löschen, d.h. auf 0 setzen.
-
-
- ■ <F8>
-
- Prozessor-Register auf die Werte beim Aufruf von MDEBUG setzen.
-
-
- ■ <SHIFT-F8>
-
- Prozessor-Register auf die Werte vor dem Beenden des letzten Auf-
- rufs von MDEBUG setzen.
-
- MDEBUG sichert vor jedem Beenden eines Aufrufes die Werte der
- Prozessor-Register. Diese können über die Taste <SHIFT-F8> beim
- nächsten Aufruf wieder geladen werden.
-
-
- ■ <CTRL-F8>
-
- Vertauschen der Adressen der beiden Monitor-Windows.
-
-
- ■ <ALT-CursorUp>, <ALT-CursorDown>
-
- Mit diesen beiden Tasten kann das untere Window des Monitors
- zeilenweise gescrollt werden. Der Inhalt des Registers FO wird ver-
- ändert.
-
-
- ■ <ALT-PgUp>, <ALT-PgDn>
-
- Seitenweises Scrollen des unteren Windows. Der Inhalt des Registers
- FO wird verändert.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 45
-
-
-
- ■ <CTRL-CursorDown>, <CTRL-CursorUp>
-
- Mit diesen beiden Tasten kann das untere Window jeweils um eine
- Zeile verkleinert bzw. vergrößert werden.
-
-
- ■ Cursor-Tasten
-
- Zur Steuerung des Cursors bei der Eingabe der Befehle können fol-
- gende Tasten verwendet werden:
-
- <CursorRight>, <CursorLeft>,
- <Home>, <End>,
- <CTRL-CursorRight>, <CTRL-CursorLeft>,
- <Delete>, <BackSpace>
-
-
- ■ <Insert>
-
- Umschalten zwischen Insert- und Overwrite-Modus. Der aktuelle Modus
- ist an der Cursorform erkenntlich (Unterstrich-Cursor -> Insert-
- Modus, Block-Cursor -> Overwrite-Modus). Zudem wird der aktuelle
- Modus auf dem oberen Rahmen des Interpreter-Fensters angezeigt.
-
-
- ■ <CTRL-U>
-
- Konvertierung der Zeichen in Großbuchstaben ein- oder ausschalten.
- Der aktuelle Modus wird auf dem oberen Rahmen des Interpreter-
- Fensters angezeigt.
-
-
- ■ <CTRL-Q>
-
- Ein- oder ausschalten der akustischen Ausgabe von MDEBUG.
- Der aktuelle Modus wird auf dem oberen Rahmen des Interpreter-
- Fensters angezeigt.
-
-
- ■ <CTRL-End>
-
- Löschen der Eingabe ab der Cursor-Position bis zum Ende des Puffers.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 46
-
-
-
- ■ <CTRL-Home>
-
- Löschen der gesamten Eingabe.
-
-
- ■ <CTRL-RETURN>
-
- Letzte Eingabe nochmal bearbeiten (ohne Editiermöglichkeit).
-
-
- ■ <SHIFT-RETURN>
-
- Letzte Eingabe wieder zum Editieren freigeben.
-
-
- ■ <RETURN>
-
- Eingabe bearbeiten
-
-
- ■ <ALT-RETURN>
-
- Eingabe bearbeiten, aber nicht in den internen Puffer übernehmen,
- d.h. die 'letzte Eingabe' für <SHIFT-RETURN> und <CTRL-RETURN>
- wird nicht verändert.
-
- Hinweis: Diese Tastenkombination funktioniert nicht auf allen PCs
- korrekt.
-
-
- ■ <ALT-F5>
-
- Verlassen von MDEBUG mit automatischem Neuaufruf von MDEBUG sobald
- DOS nicht aktiv ist. Falls ein aktives Passwort installiert ist,
- wird vor dem neuem Aufruf von MDEBUG das Passwort abgefragt.
-
- Ein erneuter Versuch MDEBUG über den Hotkey aufzurufen setzt den
- Wartezustand wieder zurück.
- Der Wartezustand wird auch zurückgesetzt, falls ein Aufruf der
- Funktionen 3, 4 oder 5 des User-Ints erfolgreich war.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 47
-
-
-
- ■ <F10>
-
- Verlassen von MDEBUG, ein Neuaufruf von MDEBUG startet im Inter-
- preter.
-
-
- ■ <ESC>
-
- Interpreter verlassen, Rückkehr in den Monitor
-
-
- ■ <ALT-F10>
-
- MDEBUG verlassen mit geänderten Register-Werten, d.h. mit den der-
- zeit angezeigten Register-Werten. Ein Neuaufaufruf von MDEBUG star-
- tet im Interpreter.
-
- Normalerweise werden die Register vor dem Verlassen von MDEBUG auf
- die Werte beim Start des Aufrufs gesetzt.
-
- Warnung: Diese Taste sollte nur mit großer Vorsicht eingesetzt
- werden!
-
-
- ■ <CTRL-F10>
-
- Abbrechen des beim Aufruf unterbrochenen Prozesses. MDEBUG führt
- hierzu die Funktion 4Ch des DOS-Interrupts 21h aus.
- Dabei wird ausgenutzt, daß DOS immer noch davon ausgeht, daß es
- sich im unterbrochenen Prozess befindet und somit der Interrupt
- sich auf diesen Prozess bezieht.
- Als Fehlercode (Errorlevel) wird der aktuelle Wert aus dem Register
- AL zurückgegeben. Die Funktion dient u.a. dazu, Endlosschleifen zu
- beenden.
- Sie sollte nur angewendet werden, wenn DOS nicht aktiv ist. (siehe
- auch 'Stack-Überlauf') Falls der unterbrochene Prozess die oberste
- Shell-Ebene des COMMAND.COM ist, ist die Funktion nicht möglich.
- (siehe auch 'Programm-Interna')
-
-
- ■ <ALT-End>
-
- Löschen des Original-Tastaturpuffers.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 48
-
-
-
- Tastenumbelegungen im Interpreter
- ─────────────────────────────────
-
-
- Hinweis:
-
- Mit der Angabe '#nn' ist jeweils das Zeichen mit dem ASCII-Code
- nn (dezimal) gemeint. Die so dargestellten Zeichen gelten normaler-
- weise als Drucker- bzw. Datei-Steuerzeichen und stören somit den
- Ausdruck der Dokumentation.
-
-
- ┌──────────────────┐
- Folgende Tasten sind im Interpreter umbelegt: │ Belegung │
- ───────────────────────────────────────────── │ alt neu │
- ╞══════════╤═══════╡
- Falls die Original-Belegung erwünscht ist, muß │ <CTRL-O> │ <|> │
- vor der Eingabe der Taste das Prefixzeichen │ <ä> │ <«> │
- <CTRL-P> eingegeben werden. │ <Ä> │ <»> │
- Das Zeichen <CTRL-P> muß über <CTRL-P><CTRL-P> │ <ö> │ <[> │
- eingegeben werden. │ <Ö> │ <]> │
- │ <ü> │ <#27> │
- Die Umbelegungen sind nur verfügbar, falls ein │ <Ü> │ <#26> │
- deutscher Tastaturtreiber geladen ist. │ <ß> │ <¿> │
- │ <_> │ <¬> │
- └──────────┴───────┘
-
-
- Befehle des Interpreters
- ────────────────────────
-
- Hinweis:
-
- Das Flag-Register ist ein impliziter Operand aller logischen und
- arithmetischen Befehle. D.h. MDEBUG benutzt das Flag-Register
- analog zur CPU. Direkte Operationen auf das Flag-Register sollten
- daher im Normalfall über den MOV-Befehl erfolgen.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 49
-
-
-
- ?{...}
- ───────────────────────────────────────────────────────────────────
-
- Ausgabe der Nummer des User-Ints (oder 0 falls kein User-int
- installiert ist) im Register AL und des Aufruf-Modus im Register
- AH. Für den Aufruf-Modus gilt:
-
- AH = 1 ->> Der Aufruf erfolgte über den Hotkey
- AH = 2 ->> Der Aufruf erfolgte über den User-Int
- AH = 3 ->> Der Aufruf erfolgte über den automatischen
- Aufruf (Taste <ALT-F5>)
- AH = 4 ->> Der Aufruf erfolgte über einen zusätzlichen
- Interrupt (über den Einsprung-Offset)
-
- im Register BX wird der Einsprung-Offset von MDEBUG zurück-
- gegeben. Die aus diesem Wert als Offset und dem Codesegment von
- MDEBUG als Segment gebildetete Adresse muß aufgerufen werden
- (per Interrupt-Aufruf), falls der Aufruf von MDEBUG über einen
- zusätzlichen Interrupt erfolgen soll. Vor dem Aufruf muß die
- aufrufende Routine schon, falls nötig, den Interrupt bestätigt
- haben. Eine Überprüfung, ob MDEBUG schon aktiv ist, ist nicht
- erforderlich da diese durch MDEBUG selbst erfolgt.
-
- MDEBUG verhält sich nach einem Aufruf über den Einsprung-Offset,
- analog zu einen Aufruf über den Hotkey. (inclusive Bildschirm-
- modus- und Passwortüberprüfung)
-
- Beispiel:
-
- Aufruf von MDEBUG auch über den Hardware-Interrupt 0Ch (COM1):
-
- ; diese Routine muß über einen Int-Befehl aufgerufen werden!
- Int0ChRoutine:
-
- ; Aufruf der alten Int-Routine per simulierten Int-Aufruf
- pushf
- cli
- call OldIntSegment:OldIntOffset
-
- ; Die durch den eigentlichen Int-Befehl auf den Stack gebrachte
- ; Rückkehr-Adresse und Flags stehen immer noch dort und werden
- ; von MDEBUG als Rückkehradresse und gesicherte Flags verwendet
- ; Der Segment-Wert für den JMP-Befehl kann z.B. über den User-
- ; Int ermittelt werden.
- ; Auf dem Stack darf nur noch die Rückkehr-Adresse für den IRET-
- ; Befehl stehen!
- jmp CS:EinsprungOffset
-
- ; hier kommt die Routine niemals hin!
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 50
-
-
-
- weiteres Beispiel:
-
- Aufruf von MDEBUG auch über den Software-Interrupt 7Eh:
-
- ; Hierzu reicht es aus, die Adresse für den Interrupt 7Eh in
- ; der Interrupt-Tabelle bei 0:0 zu ändern, z.B.
-
- mov dx,EinsprungOffset
- mov ds,CS_of_MDEBUG ; DS:DX = neue Adresse für den Interrupt
- mov ax,0257Eh ; Interrupt über DOS umsetzen
- int 021h
-
-
- V{...} {reg1}{,}{reg2}
- ───────────────────────────────────────────────────────────────────
-
- Setzt das Register reg1 als Segment-Register für das obere
- Fenster des Monitors und, falls angegeben, das Register reg2 als
- Offset-Register.
- reg1 und reg2 müssen Wort-Register sein.
-
- Falls der Operand reg1 korrekt erkannt wird, der Operand reg2
- aber nicht, wird nur das Segment-Register des Monitors geändert.
-
-
- #26{...} {seg1:}[reg1|wert1] {...}{#26}
- ───────────────────────────────────────────────────────────────────
-
- Sichern der Befehlszeile ab dem ersten Zeichen hinter dem ersten
- Operanden das kein Leerzeichen ist.Gesichert werden alle Zeichen
- bis zum nächsten '#26'-Zeichen oder bis zum Ende des Eingabe-
- Puffers (nicht der Eingabe). Hinter der gesicherten Zeichenkette
- wird von MDEBUG noch ein Null-Byte als Endekennung gesetzt.
- Die gesicherte Zeichenkette belegt max. 67 Zeichen; das '#26'-
- Zeichen wird nicht mitgesichert.
-
- Der Zielbereich für die Sicherung befindet sich im Speicher ab
- der durch den ersten Operanden angegebenen Adresse. Der erste
- Operand muß mit mindestens einem Leerzeichen enden. Die gesich-
- erten Zeichen werden nicht weiter bearbeitet. Sie können mit dem
- Befehl '#27' oder '#27'H (s.u.) neu in den Eingabepuffer über-
- nommen werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 51
-
-
-
- Beispiel:
-
- Die Eingabe
-
- M OF,80 ^ #26 OF+2 M R7,BX ^ ? #26 ^ M CX,0
-
- wird folgendermaßen bearbeitet:
-
- 1. Das Register OF wird auf den Wert 80h gesetzt.
-
- 2. Als Offset für den Befehl zum Sichern der Eingabezeile wird
- 82h ermittelt, als Segment wird das Segment des Monitors
- genommen. Die Leerzeichen hinter dem ersten Operanden des
- '#26'-Befehls ('OF+2') werden überlesen.
-
- 3. Die Teileingabe
-
- 'M R7,BX ^ ? '
-
- wird in den Speicher ab der Adresse MonitorSegment:0082h, mit
- einem Null-Byte als Endekennung versehen, übertragen. Die
- Teil-Eingabe wird nicht weiter bearbeitet.
-
- 4. Das Register CX wird auf 0 gesetzt.
-
- Das Zeichen '#26' liegt im Interpreter auf der Taste <Ü>.
-
-
- #27{...} {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Restaurieren des Eingabe-Puffers aus dem Null-String ab der
- Speicherstelle die der Operand bezeichnet.
-
- Falls der String zu lang ist, werden nur die ersten 66 Zeichen
- des Strings übernommen. Der gelesene String kann nach dem Befehl
- im Eingabepuffer editiert werden.
- Der Eingabe-Puffer wird vor der Übernahme gelöscht. Das Zeichen
- '#27' liegt im Interpreter auf der Taste <ü>. Der Befehlsname
- darf nicht mit einem 'H' enden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 52
-
-
-
- #27{...}H {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Der Befehl arbeitet äquivalent zum '#27'-Befehl, allerdings wird
- die geladene Befehlszeile sofort bearbeitet. Der Befehlsname
- muß mit einem 'H' enden.
- Falls eine Endlos-Schleife programmiert wurde, kann sie über
- die BREAK-Taste abgebrochen werden.
-
-
- D{UMP} Mn
- ───────────────────────────────────────────────────────────────────
-
- Der Inhalt des Memory-Speichers mit der Nummer n (0 <= n <= 9)
- wird als neue Monitor-Start-Adresse (Segment:Offset) genommen.
- Falls n gleich '0' ist, wird der Monitor auf die Adresse des DIB
- (DOS-Info-Block) gesetzt.
- Hinter dem 'M' darf kein Leerzeichen folgen.
-
-
- P{OINTER} {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Das Doppelwort, auf das der Operand zeigt wird als neue Monitor-
- Start-Adresse genommen. (INTEL-Format)
-
-
- A{DD} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- Addiert den Wert des 2. Operanden auf den Wert des 1. Operanden.
-
-
- S{UB} {seg1:}[reg1|wert1],{seg2}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- Subtrahiert den Wert des 2. Operanden vom Wert des 1. Operanden.
-
-
- a{dc} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- Addiert den Wert des 2. Operanden und den Wert des Carryflags
- auf den Wert des 1. Operanden. (entspricht ADC-Befehl)
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 53
-
-
-
- s{bb} {seg1:}[reg1|wert1],{seg2}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- Subtrahiert den Wert des 2. Operanden und den Wert des Carry-
- flags vom Wert des 1. Operanden. (entspricht SBB-Befehl)
-
-
- + {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Erhöht den Wert des Operanden um 1 (entspricht INC-Befehl)
-
-
- - {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Vermindert den Wert des Operanden um 1 (entspricht DEC-Befehl)
-
-
- > {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Wert des Operanden um 1 Bit nach rechts shiften (entspricht SHR-
- Befehl; Wirkung: op:= op DIV 2)
-
-
- < {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Wert des Operanden um 1 Bit nach links shiften (entspricht SHL-
- Befehl; Wirkung: op:= op MUL 2)
-
-
- » {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- Wert des 1. Operanden um n Bits nach rechts shiften wobei n der
- Wert des 2. Operanden ist (immer Byte). Falls n größer als 15
- ist, ist das Ergebnis immer 0. Das Zeichen '«' liegt im Inter-
- preter auf der Taste <Ä>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 54
-
-
-
- « {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- Wert des 1. Operanden um n Bits nach links shiften wobei n der
- Wert des 2. Operanden ist (immer Byte). Falls n größer als 15
- ist, ist das Ergebnis immer 0. Das Zeichen '«' liegt im Inter-
- preter auf der Taste <ä>.
-
-
- & {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- AND-Verknüpfung zwischen dem Wert des 1. und des 2. Operanden,
- der Wert des 1. Operanden wird geändert.
-
-
- | {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- OR-Verknüpfung zwischen dem Wert des 1. und des 2. Operanden,
- der Wert des 1. Operanden wird geändert. Das Zeichen '|' liegt
- im Interpreter auf der Taste <CTRL-O>.
-
-
- ! {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- XOR-Verknüpfung zwischen dem Wert des 1. und des 2. Operanden,
- der Wert des 1. Operanden wird geändert.
-
-
- T {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- AND-Verknüpfung zwischen dem Wert des 1. und des 2. Operanden
- ohne Änderung des Wertes des 1. Operanden. Es werden also nur
- die Flags gesetzt. (entspricht TEST-Befehl)
-
-
- N{EG} {seg1:}[reg1|wert1]
- ───────────────────────────────────────────────────────────────────
-
- Wert des Operanden negieren (Zweierkomplement)
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 55
-
-
-
- M{OV} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
- ───────────────────────────────────────────────────────────────────
-
- Kopiert den Wert des 2. Operanden in den 1. Operanden
-
-
- C{OP}Y
- ───────────────────────────────────────────────────────────────────
-
- Kopieren von CX Bytes von DS:SI nach ES:DI.
- Entspricht dem Befehl REP MOVSB.
-
- Vor dem Befehl werden alle Register geladen (auch das Flag-
- Register!) nach der Ausführung werden die Register-Werte korri-
- giert. Es finden keinerlei Überprüfungen statt, so daß z.B. die
- korrekte Richtung der Kopieraktion vom Benutzer ermittelt und
- über den Wert des Direction-Flags gesetzt werden muß.
-
-
- I{NT} [reg|wert]
- ───────────────────────────────────────────────────────────────────
-
- Führt den angegebenen Interrupt mit den angezeigten Register-
- Werten aus. Der Wert des Operanden muß zwischen 01h und FFh
- liegen. Die Angabe einer Speicheradresse ist nicht möglich.
-
- Beachtet werden muß hierbei, daß DOS immer noch davon ausgeht,
- im unterbrochenen Prozess zu sein, da die PSP-Adresse, die DTA-
- Adresse und ähnliches nicht umgesetzt werden.
-
- Der Interrupt 0h kann nur über den Befehl
-
- B CD,00
-
- aufgerufen werden.
-
- Die Funktionen 4Ch (Beende Prozess), 00h (Beende Programm) und
- 31h (Beende Prozess, aber behalte ihn im Speicher) des Interrupt
- 21h, der Interrupt 20h (Beende Programm), die Interrupts 22h,
- 23h, 24h und der Interrupt 27h (Beende Programm mit einge-
- schränkter Speicherfreigabe) sollten auf keinen Fall ausgeführt
- werden. In diesem Fall würde das AKTIV-Flag immer noch auf
- 'Aktiv' stehen und somit kein Neuaufruf von MDEBUG mehr möglich
- sein.
- Dieser Mißstand kann allerdings durch den erneuten Aufruf von
- MDEBUG mit dem Parameter 'SET' bzw. über den Aufruf der Funktion
- 05h des User-Ints geändert werden.
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 56
-
-
-
- B b1{{,}b2..{,}bn}
- ───────────────────────────────────────────────────────────────────
-
- Führt die angegebenen Maschinencodes mit den aktuellen Register-
- Werten aus. b1..bn müssen hexadezimale Werte zwischen 0 und 0FFh
- sein. (Register, Konstante und alle anderen Schreibweisen von
- Werten sind nicht erlaubt)
-
- Leerzeichen zwischen den Bytes sind nicht erlaubt (ein Leer-
- zeichen wird als Ende der Operanden gewertet!), als Trenner
- zwischen den Bytes darf ein Komma gesetzt werden; jedes Byte
- muß mit ZWEI hexadezimalen Zeichen angegeben werden - evtl.
- mit einer führenden Null.
-
- Die Maschinencodes werden in der angegebenen Reihenfolge byte-
- weise in das Codesegment von MDEBUG eingepatcht und, falls bei
- der Ermittlung der Maschinen-Codes kein Fehler auftrat, in EINEM
- Durchgang ausgeführt. Der Befehl kann nicht abgebrochen werden.
-
- Bei Ausführen eines Interrupts (über 'B CD,nn') sind die Ein-
- schränkungen wie beim I-Befehl zu beachten. Maximal können in
- einen Befehl 32 Byte Maschinencode eingegeben werden. Nach der
- Ausführung des B-Befehls wird die Anzeige des Monitors automa-
- tisch aktualisiert.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 57
-
-
-
- G{O} [reg|wert]
- ───────────────────────────────────────────────────────────────────
-
- Ausführen von Maschinen-Code.
- Der Wert des Operanden ist die explizite Länge des Maschinen-
- Codes in Byte. Das Maximum für die Länge des Maschinen-Codes
- ergibt sich aus der Formel
-
- (Monitor-Offset + Maschinencode-Länge + 5) <= 0FFFFh
-
- da der gesamte auszuführende Code in einem Segment liegen muß.
- (5 = Länge eines FAR-JMPs) Der auszuführende Maschinen-Code muß
- bei der Monitor-Start-Adresse beginnen.Der Maschinen-Code sollte
- im RAM sein, überprüft wird nur, ob der Rücksprung eingepatcht
- werden kann. MDEBUG arbeitet beim G-Befehl nur mit Sprungan-
- weisungen, d.h. die 'normalen' Debugger-Interrupts für diese
- Aufgabe werden nicht verwendet. Vor dem G-Befehl werden alle
- Register mit den angezeigten Werten geladen, nach der Ausführung
- werden die geänderten Registerwerte angezeigt und der angezeigte
- Speicherausschnitt im Monitor wird aktualisiert.
- Der Befehl ist nur mit äußerster Vorsicht zu benutzen. Der G-
- Befehl kann über die BREAK-Taste abgebrochen werden. Da der
- Abbruch aber einen STACK-Frame kostet, gilt hier das gleiche
- wie für den Prozess-Abbruch durch <CTRL-F10>. Vor der Ausführ-
- ung eines G-Befehls sollte das Interrupt-Flag gesetzt sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 58
-
-
-
- / hilfreg
- ───────────────────────────────────────────────────────────────────
-
- Speichern der Monitor-Start-Adresse in zwei Hilfsregistern wobei
- der Offset des Monitors im Register hilfreg und das Segment des
- Monitors im folgenden Hilfsregister gespeichert wird.
-
-
- \ hilfreg
- ───────────────────────────────────────────────────────────────────
-
- Restaurieren der Monitor-Start-Adresse aus zwei Hilfsregistern
- wobei der Offset aus dem Register hilfreg und das Segment aus
- dem folgenden Hilfsregister restauriert wird.
-
-
- # hilfreg
- ───────────────────────────────────────────────────────────────────
-
- Vertauschen der Monitor-Start-Adresse mit zwei Hilfsregistern
- wobei der Offset mit dem Wert des Register hilfreg und das Seg-
- ment mit dem Wert des folgenden Hilfsregisters getauscht werden.
-
-
- W{AIT}
- ───────────────────────────────────────────────────────────────────
-
- Aktualisieren der Registerwerte und des Monitors und warten auf
- einen Tastendruck bevor die Ausführung der Befehlszeile fortge-
- setzt wird. Auf dem oberen Rand des Fenster wird eine blinkende
- Wartemeldung angezeigt. Die eingegebene Taste wird folgender-
- maßen interpretiert:
-
- <ESC> - Abbruch der Ausführung
- <Backspace> - Bearbeitung der Befehlszeile ab dem Anfang
- andere Tasten - Bearbeitung der Befehlszeile fortsetzen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 59
-
-
-
- H{OME} {[reg|wert]}
- ───────────────────────────────────────────────────────────────────
-
- Nochmalige Ausführung der Befehlszeile ab dem ersten Zeichen.
- Vor der Fortsetzung der Bearbeitung der Befehlszeile werden der
- Monitor-Inhalt und die angezeigten Registerwerte aktualisiert.
- Der Wert des Operanden ist die Anzahl von Warteschleifen die
- vor dem H-Befehl ausgeführt werden sollen. (Voreinstellung: 0)
-
- Der H-Befehl sollte nur in Verbindung mit dem W-oder ¿-Befehl
- verwendet werden, da sonst eine Endlos-Schleife programmiert
- wird. Geschieht dies doch einmal, kann diese über die BREAK-
- Taste abgebrochen werden.
-
- Beispiel für den H-Befehl:
-
- MOV AH,0 ^ I 16 ^ ¿ (AL ¬ #27) ^ H
-
- Die Schleife wird durch Eingabe von <ESC> beendet.
-
- ADD SE,4 ^ H 2
-
- Die Schleife muß mit der BREAK-Taste abgebrochen werden.
-
- Der Befehlsname darf nicht mit einem 'N' enden.
-
-
- H{...}N {[reg|wert]}
- ───────────────────────────────────────────────────────────────────
-
- Der HN-Befehl arbeitet äquivalent zum H-Befehl.
- Der einzige Unterschied ist, daß beim HN-Befehl der Inhalt des
- Monitors vor der Ausführung des Befehls nicht upgedatet wird.
- Der Update des Monitors geschieht hier nur nach dem Beenden des
- Befehls bzw. nach dem Abbruch der Schleife. Der HN-Befehl ist
- deshalb entsprechend schneller als der H-Befehl. Da aber nur die
- im Interpreter angezeigten Register-Werte vor dem HN-Befehl
- jeweils aktualisiert werden, sollte möglichst zur optischen
- Kontrolle immer eines dieser Register z.B. als Zähler verändert
- werden. Der Befehlsname muß mit einem 'N' enden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 60
-
-
-
- ¿ [reg|wert]
- ───────────────────────────────────────────────────────────────────
-
- Bearbeitung der Befehlszeile fortsetzen, falls der Wert des
- Operanden ungleich 0 ist, ansonsten die Bearbeitung abbrechen.
- Das Zeichen '¿' liegt auf der Taste <ß>.
-
- Der Befehlsname darf nicht mit einem 'H' enden.
-
- Mit Hilfe des ¿-Befehls können auch kleine Schleifen mit beding-
- ter Ausführung programmiert werden.
-
- Beispiel:
-
- Füllen des Speicherbereichs bei DS:BX mit den ASCII-Codes von 0
- bis 255 (256 Byte):
-
- Vorbereitung: M AL,0
-
- Ausführung: M DS:[BX+AL],AL ^+ AL ^¿ AL ^H
-
- Bemerkung:
-
- Der H-Befehl wird nur ausgeführt, falls AL ungleich 0 ist. Da
- aber der Befehl '+ AL' das Register AL auf 0 setzt sobald AL
- gleich 255 ist, wird dadurch also die Ausführung beendet.
-
- Falls der Inhalt einer Speicherstelle geprüft werden soll, muß
- dieser zuerst in ein Register gebracht werden.
-
- Beispiel:
-
- Incrementieren von AX bis die Taste <CTRL> gedrückt wird:
-
- Ausführung: + AX ^ M BL,040:017 ^¿ ((BL & 04) ! 04) ^H
- oder
- + AX ^M BL,040:017 ^¿ (BL % 2)¬1 ^H
-
- Bemerkung:
-
- Hier wird vor dem ¿-Befehl erst der Inhalt der Speicherstelle
- 040h:017h in das Register BL geladen, damit dann im ¿-Befehl das
- Bit 2 dieser geprüft werden kann.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 61
-
-
-
- ¿H [reg|wert]
- ───────────────────────────────────────────────────────────────────
-
- Bearbeitung der Befehlszeile fortsetzen, falls der Wert des Ope-
- randen ungleich Null ist, ansonsten die Befehlszeile noch einmal
- von vorne bearbeiten. Das Zeichen '¿' liegt auf der Taste <ß>.
-
- Der Befehlsname muß mit einem 'H' enden.
-
-
- F {n}
- ───────────────────────────────────────────────────────────────────
-
- Verändern des unteren Windows des Monitors.
-
- Der Befehl arbeitet äquivalent zur Taste <F8> im Monitor, die
- Werte der Register FS und FO werden aber nicht verändert. n ist
- die Anzahl der Zeilen für das untere Window des Monitors.
- (1 <= n <= 6), fehlt n wird das untere Window geschlossen)
-
-
- FX
- ───────────────────────────────────────────────────────────────────
-
- Vertauschen der Adressen der Monitor-Windows.
-
-
- @ {...}
- ───────────────────────────────────────────────────────────────────
-
- Kommentarbefehl, d.h. die Parameter werden ignoriert.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 62
-
-
-
- Q{UIT}
- ───────────────────────────────────────────────────────────────────
-
- MDEBUG verlassen, Wirkung wie die Taste <F10>
-
- Der Befehlsname darf nicht mit einem 'R' oder 'L' enden.
-
-
- Q{UIT}R
- ───────────────────────────────────────────────────────────────────
-
- MDEBUG verlassen mit automatischen Neuaufruf von MDEBUG falls
- DOS nicht aktiv ist. Wirkung wie die Taste <ALT-F5>.
-
- Der Befehlsname muß mit einem 'R' enden.
-
-
- Q{UIT}L
- ───────────────────────────────────────────────────────────────────
-
- 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. Auch hier stehen für die Eingabe des Passwortes max.
- 10 Sekunden zur Verfügung.
- Der Befehlsname muß mit einem 'L' enden.
-
- Hinweis: Maus-Eingaben werden nicht unterbunden und TSR können
- teilweise noch über ihren Hotkey aufgerufen werden.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 63
-
-
-
- SH [suchmaske] {,}{...}
- ───────────────────────────────────────────────────────────────────
-
- Der Befehl SH dient zum Suchen einer Bytefolge im Speicher.
- Gesucht wird ab dem zweiten im ersten Window des Monitors ange-
- zeigten Byte bis zum Ende des ersten Megabytes des Speichers.
- Falls die Bytefolge gefunden wird, wird die Monitor-Start-
- Adresse mit der Adresse der Bytefolge geladen.
- Die gefundene Adresse wird folgendermaßen konvertiert:
-
- Falls die Adresse VOR dem ersten MCB oder HINTER dem letzten MCB
- liegt, wird sie in die Form 'nn00:nnnn' konvertiert. (mit
- n <= 0 <= F) und das Register AX wird auf 0 gesetzt.
-
- Liegt die Adresse in den ersten 65.535 Byte eines Speicherblocks
- der über die MCB-Kette verwaltet wird, so wird sie in die Form
- 'seg:nnnn' konvertiert, wobei seg das Segment des Speicherblocks
- in dem die Adresse liegt ist. Sollte diese Form für die Adresse
- nicht möglich sein, so wird sie in die Form 'nn00:nnnn' konver-
- tiert. Im Register AX steht in beiden Fällen das Segment des
- MCBs des Speicherblocks in dem die Adresse liegt.
-
- Hinweis:
-
- Falls die zu suchende Bytefolge nicht mindestens ein direkt an-
- gegebenes Byte (also OHNE Joker, Prefixe und Intervalle) ent-
- hält, kann die Suche auf langsameren Rechnern mehrere Minuten
- dauern. (Normalerweise dauert die Suche ca. 1 - 40 Sekunden, je
- nach der Häufigkeit des ersten direkt angegebenen Bytes im
- Speicher und nach der Anzahl der Joker, Prefixe und Intervalle.)
- Zur Beschleunigung der Suche sollte daher immer mindestens ein
- Byte des Suchstrings OHNE Prefixe, Joker und Intervalle ange-
- geben werden.
- Die Suche kann über die BREAK-Taste abgebrochen werden.
-
- Aufbau von suchmaske:
-
- {string}{,}{¬}{bytemaske}{,}{|{¬}bytemaske}{...}
-
- Aufbau von string
-
- string ist eine in Hochkommata oder Gänsefüßchen angegebene Zei-
- chenkette.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 64
-
-
-
- Aufbau von bytemaske
-
- bytewert-bytewert ->> Byte muß im Intervall liegen
- bytewert ->> Byte muß übereinstimmen
- n? ->> nur oberes Nibble wird geprüft
- ?n ->> nur unteres Nibble wird geprüft
- ?? ->> Byte wird ignoriert
-
-
- Aufbau von bytewert:
-
- nn ->> Hexadezimaler Wert, es sind
- mindestens und höchstens zwei
- Ziffern pro Byte nötig.
- 'x' ->> ASCII-Zeichen
-
- mit:
-
- n = Hexziffer (0..9, A..F, a..f)
-
- ? = Joker, d.h. der Wert des Nibbles ist egal
-
- ¬ = NOT-Prefix, d.h. das Byte darf der Bytemaske nicht
- entsprechen
-
- | = ODER-Prefix, d.h. die mit | verketteten Bytemasken
- gelten alle für ein Byte. Falls eine der Bytemasken
- stimmt, ist das Byte okay.
-
- x = ASCII-Zeichen, das Zeichen '■' ist hier kein Joker!
-
-
-
- Beispiele für Suchmasken:
-
- 40
- ->> ist wahr, falls das Byte den Wert 40h hat
-
- 4?
- ->> ist wahr, falls das obere Nibble des Bytes 4 ist
- (z.B. 41h, 42h oder 4Fh)
-
- ?5
- ->> ist wahr, falls das untere Nibble des Bytes 5 ist
- (z.B. 45h oder F5h)
-
- ??
- ->> ist immer wahr (d.h. das Byte wird ignoriert)
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 65
-
-
-
- ¬45
- ->> ist wahr, falls das Byte NICHT den Wert 45h hat
-
- ¬4?
- ->> ist wahr, falls das obere Nibble des Bytes NICHT 4 ist
-
- ¬??
- ->> sinnlos, Fehler!
-
- 'A'
- ->> ist wahr, falls das Byte den Wert 'A' (= 40h) hat
-
- 'A'-'Z'
- ->> ist wahr, falls das Byte im Intervall 40h (= 'A') und
- 5Ah (= 'Z') inclusive liegt.
-
- ¬'0'-'9'
- ->> ist wahr, falls das Byte NICHT im Intervall 30h (= '0')
- und 39h (= '9') liegt.
-
- 'A'-'F'|'a'-'f'|'0'-'9'
- ->> ist wahr falls das Byte im Intervall 'A' bis 'F' ODER im
- Intervall 'a' bis 'f' ODER im Intervall '0' bis '9' liegt.
-
-
- Beispiele für Suchstrings:
-
- SH 40,41,42
- ->> Sucht die Bytefolge für die gilt: Das erste Byte ist 40h,
- das zweite Byte ist 41h und das dritte Byte ist 42h.
-
- SH 40-5?
- ->> Sinnlos, Fehler!
- (möglich ist: SH 40-5F)
-
- SH 40-??
- ->> Sinnlos, Fehler!
- (möglich ist: SH 40-FF)
-
- SH 34-20
- ->> Fehler, die untere Grenze muß kleiner als die obere
- Grenze sein! Die Maske kann ersetzt werden durch SH ¬21-33
-
- SH 'TMP=',¬00
- ->> Sucht die Bytefolge mit dem Inhalt 'TMP=' hinter der ein
- Byte ungleich 0 folgen muß
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 66
-
-
-
- SH 'A'-'Z','0'-'9','0'-'9'
- ->> Sucht die Bytefolge für die gilt:
- Das erste Byte ist ein Zeichen zwischen 'A' und 'Z' (incl.)
- und die folgenden beiden Bytes sind jeweils Ziffern im
- Intervall zwischen '0' und '9'
-
- SH 00,00,30|40|50
- ->> Sucht eine Folge von zwei Nullbytes hinter denen ein Byte
- mit dem Wert 30h ODER 40h ODER 50h folgen muss.
-
- SH ¬00-7F|40,45
- ->> Sucht die Bytefolge für die gilt:
- Das erste Byte ist nicht im Intervall 00h bis 7Fh ODER 40h
- und das folgende Byte ist 45h
-
- SH 00,F0,'11/09/87','a'-'z'
- ->> Sucht die Bytefolge für die gilt:
- Das erste Byte ist 00h, das zweite Byte ist F0h, darauf folgt
- der String '11/09/87' gefolgt von einem Zeichen im Intervall
- 'a' bis 'z'.
-
- Aber: Der Suchstring ist nicht optimal gewählt!
- Da nämlich das erste direkt angegebene Byte den Wert
- 00h hat und dieser Wert relativ häufig im Speicher vor-
- kommt dauert die Suche unnötig lange!
- Sinnvoller wäre:
-
- SH 00|00,F0,'11/09/87','a'-'z'
- ┌──
- │ (!)
- └─────────────────────────────┐
- Hier dient die Angabe der zweiten Maske für das erste
- Byte nur dazu, daß das Byte F0h als erstes direkt ange-
- gebenes Byte genommen wird. Da das Byte F0h normaler-
- weise seltener als das Byte 00h im Speicher vorkommt,
- geht die Suche so bedeutend schneller.
- Probieren Sie's aus - möglichst mit einer eindeutigen
- Bytefolge im BIOS und der Suche bei 0:0 beginnend.
-
- Getestete Werte auf einen XT mit 8 MHZ:
-
- Start-Adresse der Suche: 0000:0000
- Bytefolge gefunden bei: FF00:0FF3
- benötigte Zeit für 'SH 00,F0, ...' : 13 sec.
- benötigte Zeit für 'SH 00|00,F0, ...' : 2 sec. (!)
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 67
-
-
-
- SH 'COMSPEC='
- ->> Sucht die Zeichenfolge 'COMSPEC='
-
- Aber: Da MDEBUG jede mit <RETURN> abgeschlossene Befehlszeile
- in einen internen Puffer speichert, wird die Zeichen-
- folge in diesem Puffer auf jeden Fall gefunden, falls
- die Start-Adresse für die Suche kleiner als CS:0 ist.
- (CS = Codesegment von MDEBUG)
- Soll dies unterdrückt werden, muß einfach nur ein Byte
- des Suchstrings in hexadezimaler Form angegeben werden:
- (hier: 43h = ASCII-Code von 'C')
-
- SH 43,'OMPSEC='
-
- oder der Suchstring getrennt werden:
-
- SH 'C','OMSPEC='
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 68
-
-
-
- Bedeutung der Parameter
- ───────────────────────
-
- seg1:
-
- Segment-Prefix (erlaubt: bei reg1, reg2, wert1 und wert2)
-
- In MDEBUG ist für alle Speicheradressen das aktuelle Segment-
- Register des oberen Monitor-Windows als Segment der angegebenen
- Adresse voreingestellt. Diese Voreinstellung kann aber durch ein
- Segment-Prefix überschrieben werden. Das Prefix muß ein Register,
- ein expliziter Wert oder ein Ausdruck sein.
-
- Beispiele: MOV BL,AX:[BX] oder MOV BL,AX:BX
- MOV AL,40:*[17] oder MOV AL,40:*17
- MOV BL,CS-1:[0] oder MOV BL,CS-1:0
-
-
- reg, reg1, reg2
-
- Name eines Registers, möglich sind folgende Namen:
-
- Prozessor-Register: AX,BX,CX,DX,DI,SI,ES,DS,BP,SP,SS,FL
-
- Die Register AX .. DX können auch byteweise angesprochen werden
- (AH, AL .. DH, DL). Mit FL ist das Flag-Register gemeint.
-
-
- Hilfsregister: R1, R2, R3, R4, R5, R6, R7, R8
-
- Die Hilfsregister können auch unter folgenden Namen angesprochen
- werden:
-
- 1X,2X,3X,4X,5X,6X,7X,8X
-
- In dieser Schreibweise ist auch ein byteweiser Bezug, wie bei
- AX .. DX, möglich.
-
- (z.B.) 1L = Lowbyte von R1 5H = Highbyte von R5
-
-
- Binär-Register: R0
-
- Das Binär-Register kann wie jedes andere Hilfsregister verwendet
- werden. (auch byteweiser Bezug über '0L' bzw. '0H') Der einzige
- Unterschied ist die binäre Anzeige des Registerwertes.
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 69
-
-
-
- Sonder-Register: SE, OF
-
- Unter diesen beiden Bezeichnern können die voreingestellten Regis-
- ter des Monitors für das obere Window als normale Register ange-
- sprochen werden (nur als Wort-Register).
-
-
- Versteckte Register: FS, FO
-
- Unter diesen beiden Bezeichnern können die Register, in denen die
- Adresse für das untere Window des Monitors gespeichert ist, ange-
- sprochen werden. (nur als Wort-Register)
-
- Der Inhalt dieser Register wird nur angezeigt, falls das untere
- Window des Monitors eingeschaltet ist.
-
-
- Pseudo-Register
-
- Falls als zu verändernder Operand eines Befehls weder ein Regis-
- ter noch eine Speicherstelle angegeben wird, wird das Ergebnis im
- ersten Pseudo-Register gespeichert.
- Falls der zweite Operand ein expliziter Wert, eine Konstante oder
- ein Ausdruck ist, wird dieser für die Berechnung im zweiten Pseudo-
- Register zwischengespeichert.
-
- Das erste Pseudo-Register kann z.B. dazu benutzt werden, den Inhalt
- des Flag-Registers nach einem Befehl zu ermitteln ohne einen Ope-
- randen zu verändern. Falls der Inhalt der Pseudo-Register weiter
- verwendet werden soll, kann er über die Konstanten P1 (Pseudo-
- Register für den ersten Operanden) und P2 (Pseudo-Register für den
- zweiten Operanden) angesprochen werden.
-
- Beispiel:
-
- Simulation des Befehls 'CMP AX,BX':
-
- SUB AX-0,BX
- ────
- Ausdruck als zu verändernder Operand, es wird also das
- Pseudo-Register für das Ergebnis benutzt und nur das Flag-
- Register verändert.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 70
-
-
-
- hilfreg
-
- Name eines Hilfsregisters, wobei das Register R8 und Adressen-
- angaben nicht erlaubt sind. Es kann nur ein Wortregister angegeben
- werden.
-
-
- wert
-
- Explizit angegebener Wert. Explizite Werte können in fünf verschie-
- denen Formaten angegeben werden.
-
- Sind führende Hochkommata oder Gänsefüßchen vorhanden, wird der
- Wert als String behandelt. Strings können max. 2 Zeichen lang sein;
- die Eingabe von Steuerzeichen ist nur nach dem Prefix-Zeichen
- <CTRL-P> möglich. Das Verkettungs-Zeichen '^' kann auf keinem Fall
- in einem String vorkommen.
- Der String muß mit dem einleitenden Zeichen (Hochkommata oder
- Gänsefüßchen) abgeschlossen sein. Zur Eingabe von Hochkommata (bzw.
- Gänsefüßchen) muß als String-Begrenzer das Gänsefüßchen (bzw. das
- Hochkommata) genommen werden. Gänsefüßchen und Hochkommata in einem
- String sind nicht möglich.
-
- Ist kein führendes Gänsefüßchen oder Hochkommata vorhanden wird der
- Wert als Zahl interpretiert. Fehlt ein Formatkennzeichen für die
- Zahl, wird diese als Hexadezimalwert interpretiert. Maximum für
- eine hexadezimalen Wert ist 0FFFFh. Negative Werte können durch
- ein führendes Minuszeichen '-' gekennzeichnet werden. Zwischen
- dem Minuszeichen und dem Wert darf kein Leerzeichen stehen.
-
- Zahlen im dezimalen Format können direkt eingegben werden, indem
- vor dem Wert das Formatkennzeichen '#' eingegeben wird; für Zahlen
- im binärem Format muß vor dem Wert ein '$' angegeben werden.
-
- Zahlen mit einer Basis zwischen 2 und 15 können auch in der Form
-
- b#n{...}
-
- angegeben werden, wobei b die Basis für die Zahl ist und n{...} die
- Zahl selbst (mit 2 <= b <= F und 0 <= n < b).
- Vorzeichen müssen jeweils direkt vor dem Formatkennzeichen stehen.
-
- Bei negativen Werten wird das Zweierkomplement gebildet und bei
- Byte-Werten wird nur der angegebene Wert modulo 256 übernommen.
- Zur Formatierung von Zahlen kann in allen Formaten das Zeichen '.'
- verwendet werden.
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 71
-
-
-
- Beispiele:
-
- MOV AX,#12 -> AX = 000C = 12 (dez)
-
- MOV BX,-#12 -> AX = FFF4 = -12 (dez)
-
- MOV AL,+#34 -> AL = 22 = 34 (dez)
-
- MOV CL,#1.234 -> CL = D2 = 210 (dez)
- = (1234 MOD 256)
-
- MOV CL,-#1.234 -> CL = 2E = 46 (dez)
- -1234 = FB2Eh, FB2Eh MOD 100h = 2Eh
-
- MOV AX,$11.1100 -> AX = 003C
-
- MOV BL,-$01 -> BL = FF
-
- MOV AX,5#100 -> AX = 19 = 25 (dez)
- = 100 zur Basis 5
-
- MOV BX,F#101 -> BX = E2 = 226 (dez)
- = 101 zur Basis 15
-
- MOV CX, -3#121 -> CX = FFF0 = - 16 (dez)
- = -121 zur Basis 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 72
-
-
-
- Konstanten
- ──────────
-
- Überall wo die Angabe eines expliziten Wertes erlaubt ist, kann
- auch eine Konstante angegeben werden.
-
- Ausnahme:
-
- Bei den B- und SH-Befehlen ist eine Konstante nicht erlaubt.
-
- Folgende Konstanten sind definiert:
-
- ■ CS
-
- Segment-Adresse des geladenen MDEBUGs
- Die Konstante CS wird beim Installieren von MDEBUG gesetzt und ver-
- ändert sich danach nicht mehr.
-
-
- ■ RS
-
- Segment der Rücksprung-Adresse
-
- ■ RO
-
- Offset der Rücksprung-Adresse
-
- Die Konstanten RS und RO werden bei jedem Aufruf von MDEBUG über
- den Hotkey, dem User-Int, dem automatischen Aufruf oder über einen
- zusätzlichen Interrupt neu ermittelt.
-
-
- ■ P1
-
- Inhalt des Pseudoregisters für den ersten Operanden
-
- ■ P2
-
- Inhalt des Pseudoregisters für den zweiten Operanden
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 73
-
-
-
- ■ P3
-
- Die Konstante P3 enthält den Offset der Variablen 'MDebugColors'
- von MDEBUG (Format: Wort, Aufbau: Highbyte: Farbattribut des
- Monitors, Lowbyte: Farbattribut des Interpreters). Durch Ändern
- dieser Variable können während eines Aufrufs von MDEBUG die Farben
- des Monitors und des Interpreters verändert werden.
- ('MOV CS:*[P3],nn' ->> Farbe des Interpreters ändern,
- 'MOV CS:*[P3+1],nn' ->> Farbe des Monitors ändern)
-
- Nach einer Änderung der Farben müssen die Fenster von MDEBUG über
- die Taste <ALT-F9> neu aufgebaut werden, damit die Änderungen wirk-
- sam werden.
-
-
- ■ P4
-
- 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.
-
-
- ■ DO
-
- Wert des DOS-Busyflags verODERt mit den Wert des Critical-Error-
- Flags. DOS-Interrupts sollten nur ausgeführt werden, falls der Wert
- der Konstanten DO Null ist.
-
-
- ■ CU
-
- Offset des Bytes, auf dem im Monitor der Cursor steht (oder 0,
- falls der Interpreter aus dem Segment- oder Offset-Feld des Moni-
- tors aufgerufen wurde).
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 74
-
-
-
- Ausdruck
- ────────
-
- Überall wo die Angabe eines expliziten Wertes erlaubt ist, kann
- auch ein Ausdruck angegeben werden. (ausgenommen beim B- und beim
- SH-Befehl)
- Ein Ausdruck besteht aus mindestens einem Teil-Ausdruck. Ein Teil-
- Ausdruck ist eine arithmetische oder logische Operation mit zwei
- Operanden die Werte, Register, Konstante oder Teil-Ausdrücke sein
- können bzw. ein Operand mit mindestens einer Klammer-Ebene.
- Explizite Werte können in allen vier Schreibweisen (hexadezimal,
- dezimal, binär oder als String) angegeben werden, negative Werte
- können ebenfalls verwendet werden. Es können alle Register und
- Konstanten verwendet werden. In einem Teil-Ausdruck können keine
- Speicherstellen verwendet werden.
-
- Verändert wird nur der erste Operand eines Teil-Ausdrucks.
-
- Implementiert sind folgende Operatoren:
-
- ┌─────────────────────────────────────────────────────────────────┐
- │ Arithmetische Operatoren │
- ├──────┬────────────────┬─────────────────────────────────────────┤
- │ Op. │ Funktion │ Kommentar │
- ╞══════╪════════════════╪═════════════════════════════════════════╡
- │ + │ Addition │ keine Berücksichtigung eines Übertrages │
- │ - │ Subtraktion │ -"- │
- │ / │ Division │ nur ganzzahlig │
- │ │ │ Eine Division durch 0 ist nicht möglich.│
- │ \ │ Modulo │ ganzzahiger Rest einer Division │
- │ │ │ Eine Division durch 0 ist nicht möglich.│
- │ * │ Multiplikation │ keine Berücksichtigung eines Übertrages │
- └──────┴────────────────┴─────────────────────────────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 75
-
-
-
- ┌─────────────────────────────────────────────────────────────────┐
- │ Logische Operatoren │
- ├──────┬────────────────┬─────────────────────────────────────────┤
- │ Op. │ Funktion │ Kommentar │
- ╞══════╪════════════════╪═════════════════════════════════════════╡
- │ & │ AND │ Verknüpfen der Operanden mit AND │
- │ | │ OR │ Verknüpfen der Operanden mit OR │
- │ ! │ XOR │ -"- mit einem exklusiven OR │
- │ » │ Shift rechts │ Verschieben des ersten Operanden um n │
- │ │ │ Bits nach rechts (n ist der 2. Operand) │
- │ │ │ Werte größer als 15 für den zweiten │
- │ │ │ Operanden führen immer zum Ergebnis 0 │
- │ « │ Shift links │ Verschieben des ersten Operanden um n │
- │ │ │ Bits nach links (n ist der 2. Operand) │
- │ │ │ Werte größer als 15 für den zweiten │
- │ │ │ Operanden führen immer zum Ergebnis 0 │
- │ % │ Ermittelt den │ │
- │ │ Wert eines │ Die Bits des Operanden sind dabei von │
- │ │ bestimmten │ rechts nach links von 0 bis 15 durch- │
- │ │ Bits des ersten│ nummeriert. Werte größer als 15 für │
- │ │ Operanden │ den zweiten Operanden führen immer zum │
- │ │ │ Ergebnis 0 │
- └──────┴────────────────┴─────────────────────────────────────────┘
-
-
- ┌─────────────────────────────────────────────────────────────────┐
- │ Vergleichsoperatoren (keine Berücksichtigung eines Vorzeichens) │
- ├──────┬──────────────────────────────────────────────────────────┤
- │ Op. │ Funktion │
- ╞══════╪══════════════════════════════════════════════════════════╡
- │ < │ Falls der erste Operand kleiner als der zweite Operand │
- │ │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0 │
- ├──────┼──────────────────────────────────────────────────────────┤
- │ > │ Falls der erste Operand größer als der zweite Operand │
- │ │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0 │
- ├──────┼──────────────────────────────────────────────────────────┤
- │ = │ Falls der erste Operand gleich dem zweiten Operanden │
- │ │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0 │
- ├──────┼──────────────────────────────────────────────────────────┤
- │ ¬ │ Falls der erste Operand ungleich dem zweiten Operanden │
- │ │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0 │
- │ │ Das Zeichen '¬' liegt im Interpreter auf der Taste <_> │
- └──────┴──────────────────────────────────────────────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 76
-
-
-
- Ein Operationszeichen muß immer zwischen den Operanden stehen.
- Falls der erste Operand fehlt, wird als erster Operand 0 genommen,
- der zweite Operand muß auf jeden Fall angegeben sein.
- Wird zwischen zwei Teil-Ausdrücken kein Operations-Zeichen ange-
- geben, werden die Werte der Teil-Ausdrücke addiert. Jeder Teil-
- Ausdruck wird von links nach rechts ohne Berücksichtigung von
- Operator-Präferenzen (z.B. 'Punkt vor Strich') berechnet. Eine
- Klammerung zur Änderung der Berechnungs-Reihenfolge ist möglich.
- Maximal sind 5 Klammer-Ebenen erlaubt.
-
- Beispiele für Teil-Ausdrücke:
- sei AX = 0102h, BX = 0304h und CX = FFF8h
-
- ┌────────────────────────┬────────┬──────────────────────────────┐
- │ Teil-Ausdruck │ Wert │ Kommentar │
- ╞════════════════════════╪════════╪══════════════════════════════╡
- │ 3+4 │ 7h │ │
- │ 3+2*2 │ 0Ah │ kein 'Punkt vor Strich' │
- │ 3+(2*2) │ 7h │ Klammer-Ebene berücksichtigt │
- │ #35\(4*(2+2)) │ 3h │ Klammer-Ebenen -"- │
- │ () │ 0h │ leere Klammer-Ebene │
- │ (()) │ 0h │ leere Klammer-Ebenen │
- │ (4) │ 4h │ voreingestellt ist 0 als 1. │
- │ │ │ Operand und die Addition als │
- │ │ │ Operation │
- │ 4--5 │ 9h │ das zweite Minus ist ein │
- │ │ │ Vorzeichen │
- │ AL*(-BL) │ FFF8h │ -8 dez. │
- │ AL*-04 │ FFF8h │ Minus ist Vorzeichen │
- │ AL*AX │ 204h │ +516 dez. │
- │ (4)(5) │ 9h │ Addition ist Voreinstellung │
- │ (ALBL) │ 6h │ Addition ist Voreinstellung │
- │ (AL BL) │ 6h │ Addition ist Voreinstellung │
- │ (AX203) │ 0305h │ Addition ist Voreinstellung │
- │ (AL234) │ 236h │ Addition ist Voreinstellung │
- │ (234AL) │ Fehler│ Das 'A' wird als weitere │
- │ │ │ Hex-Ziffer interpretiert. │
- │ (1234SI) │ Fehler│ Das 'S' wird als weitere │
- │ │ │ Hex-Ziffer interpretiert. │
- │ $1+#1234+0A+'A'-41 │ 04DDh │ 1245 dez, die Zahlenformate │
- │ │ │ können gemischt werden │
- │ CS-1 │ │ Segment des MCBs von MDEBUG │
- │ -AX-1 │ FEFDh │ Einerkomplement von AX │
- │ (AX ! 0FFFF) │ FEFDh │ Einerkomplement von AX │
- │ (AX+F)/10 │ 11h │ Umrechnung eines Wertes auf │
- │ │ │ nächste Paragraphen-Grenze │
- └────────────────────────┴────────┴──────────────────────────────┘
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 77
-
-
-
- ┌────────────────────────┬────────┬──────────────────────────────┐
- │ Teil-Ausdruck │ Wert │ Kommentar │
- ╞════════════════════════╪════════╪══════════════════════════════╡
- │ BX*AX │ 0A08h │ Übertrag wird nicht berück- │
- │ │ │ sichtigt. │
- │ AX/(AX-0102) │ Fehler│ durch 0 kann nicht geteilt │
- │ │ │ werden │
- │ ((BL % 7)*-1 « 8)|BL │ 4h │ liefert den vorzeichen- │
- │ oder │ │ gerecht auf Wortgröße │
- │ -(BL % 7)«8|BL │ │ erweiterten Wert von BL │
- │ ( (BL » 3) & 1) │ 0h │ Ergebnis: 3. Bit von BL │
- │ (BL % 2) │ 1h │ 2. Bit von BL │
- │ AX-(AX / 4 * 4) │ 2h │ Simulation des MOD-Operators │
- │ -2*(CX » 0F)*CX+CX │ 8h │ liefert immer d. Absolutwert │
- │ │ │ d. benutzten Registers (hier │
- │ │ │ CX), da der Teil-Ausdruck │
- │ │ │ -2*(CX » 0F)*CX für negative │
- │ │ │ Werte 0 wird │
- │ ¬AX │ 1h │ als erster Operand wird hier │
- │ │ │ implizit 0 angenommen │
- │ ¬(CX+8) │ 0h │ als erster Operand wird hier │
- │ │ │ implizit 0 angenommen │
- │ /AX │ 0h │ als erster Operand wird hier │
- │ │ │ implizit 0 angenommen │
- └────────────────────────┴────────┴──────────────────────────────┘
-
- Die Berechnung eines Ausdruckes erfolgt immer im Wort-Format; d.h.
- alle Operanden werden vor jeder Berechnung in das Wort-Format
- konvertiert. Eine eventuelle Konvertierung des Ergebnisses ins
- Byte-Format erfolgt erst nach der vollständigen Berechnung eines
- Ausdrucks. Die Berechnung eines Ausdrucks geschieht vollständig
- intern, d.h. es werden hierbei keine Register oder Speicherstellen
- verändert.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 78
-
-
-
- Byte-Operanden werden vor der Berechnung in Wortwerte umgewandelt.
-
- Beispiel:
-
- sei BX = 00FFh und AX = 0001h und CX = 0103h
-
- dann wird (intern) aus
-
- -BL -> FF01 ; der Wert 00FFh wird negiert
- BL -> 00FF ; keine Übernahme des 7. Bits ins High-Byte
- -AL -> FFFF ; Negiert wird intern der Wert als Wort
- -CL -> FFFD ; der Wert 03h (als Wort) wird negiert
- CL -> 0003
-
- Die Anzahl der Teil-Ausdrücke eines Ausdrucks ist nicht begrenzt.
- Die einzelnen Komponenten eines Teil-Ausdrucks können durch Leer-
- zeichen getrennt sein falls aus dem Teil vor dem Leerzeichen
- erkennbar ist, daß der Teil-Ausdruck noch nicht beendet ist.
-
- Beispiele:
-
- MOV AX,BX + 4
-
- Leerzeichen erlaubt, ABER: Da der Teil vor dem Leerzeichen ein
- korrekter Operand ist und mit einem Leerzeichen abschließt,
- wird der Teil ' + 4' als Kommentar erkannt und nicht berück-
- sichtigt!
-
- MOV AX,(BX + 4)
-
- Korrekt, da eine Klammer noch nicht geschlossen
-
- MOV AX,BX+ 5
-
- Korrekt, da ein Operand noch nicht bearbeitet ist
-
- MOV AX,[BX + 5]
-
- Leerzeichen erlaubt, ABER: Da der Teil vor dem Leerzeichen ein
- korrekter Operand ist, mit einem Leerzeichen abschließt und
- das Zeichen '[' nicht klammert, wird der Teil ' + 5]' als Kom-
- mentar erkannt und nicht berücksichtigt!
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 79
-
-
-
- MOV AX,[BX+4 +3]
-
- Korrekt, aber der Teil '+3]' wird als Kommentar gewertet und
- nicht berücksichtigt!
-
- MOV AX,[(BX +4 +3)]
-
- Korrekt, da eine Klammer noch nicht geschlossen ist.
-
- Hinweis:
-
- Falls Leerzeichen zur Erhöhung der Lesbarkeit eines Ausdrucks be-
- nutzt werden sollen, sollte der gesamte Ausdruck geklammert werden.
-
- Falls als erster zu verändernder Operand eines Befehls ein Ausdruck
- angegeben wird, wird das Pseudo-Register benutzt.
-
- Besonderheiten:
-
- MOV AX,*4
-
- Das Zeichen '*' wird als Kennzeichen für ein Speicher-Byte
- betrachtet, ausgeführt wird also:
-
- MOV AX,MonitorSeg:*[0004]
-
-
- MOV AX,**4
-
- Der Befehl wird ausgeführt als:
-
- MOV AX,MonitorSeg:*[(0*4)]
-
-
- MOV +AX,5
-
- Der Befehl wird ausgeführt als:
-
- MOV 0+AX,5
-
- d.h. es wird das Pseudo-Register und nicht AX verändert!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 80
-
-
-
- Adressierung von Speicherstellen
- ────────────────────────────────
-
- Wird ein Register-Bezeichner, ein expliziter Wert oder ein Aus-
- druck in eckigen Klammern ('[]') gesetzt, so wird das Wort mit der
- aktuellen Segment-Adresse des oberen Monitor-Windows als Segment
- und dem Inhalt des Registers bzw. den expliziten Wert oder dem
- Wert des Ausdrucks als Offset gelesen bzw. geändert. (INTEL-Format
- die schließende eckige Klammer ist optional)
-
- Wird dem Register-Bezeichner bzw. Wert oder Ausdruck ein '*' vor-
- angestellt, so ist das Byte, auf das die aktuelle Segment-Adresse
- des oberen Monitor-Windows und der Inhalt des Registers bzw. der
- explizite Wert oder der Wert des Ausdrucks als Offset zeigt,
- gemeint. ( '*[' hat die gleiche Wirkung)
-
- Die Einstellung des Segment-Registers des oberen Monitor-Windows
- als Segment-Register kann durch ein Segment-Prefix überschrieben
- werden. Als Segment-Prefix ist ein Register, ein expliziter Wert
- oder ein Ausdruck erlaubt. Das Segment-Prefix muß mit einem ':'
- abgeschlossen werden. Falls ein Segment-Prefix angegeben ist, kann
- bei Wortgrößen die Angabe der eckigen Klammern '[]' entfallen.
-
-
-
- Syntax der Befehle
- ──────────────────
-
- Für die Bedeutung der Befehle ist nur das erste Zeichen signifi-
- kant. Die Befehle können also in der kurzen oder in einer langen
- Schreibweise angegeben werden.
-
- Ausnahme:
-
- Bei allen Befehlen, die mit dem gleichen Zeichen beginnen, ist auch
- das letzte Zeichen signifikant.
-
- Die Register-Namen und Konstanten müssen in Großbuchstaben einge-
- geben werden; die signifikanten Buchstaben der Befehle müssen in
- der angegebenen Schreibweise eingegeben werden
-
- Die Original-Belegungen der umbelegten Tasten können nur nach dem
- Prefix-Zeichen <CTRL-P> eingegeben werden. Kleinbuchstaben können,
- falls der Schalter UpcaseMode auf U steht, ebenfalls nur nach dem
- Prefixzeichen <CTRL-P> eingegeben werden.
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 81
-
-
-
- Zwischen dem Befehl und dem (ersten) Operand muß mindestens ein
- Leerzeichen stehen; zwischen den Operanden sollten Kommata oder
- Leerzeichen stehen. Der erste und der zweite Operand eines Befehls
- können identisch sein.
-
- Pro Eingabe sind mehrere (Interpreter)Befehle möglich. Diese müssen
- durch das Verkettungs-Zeichen '^' getrennt sein.
-
- Führende Blanks eines Befehls werden überlesen. Ein Befehl ist zu
- Ende, falls alle nötigen Operanden ermittelt sind, ein Verkettungs-
- Zeichen auftritt (= Anfang eines neuen Befehls) oder das Ende der
- Eingabezeile erreicht wird.
-
- Die Anzahl der Befehle pro Eingabe ist nur durch die max. Länge der
- Eingabezeile (66 Zeichen) begrenzt. Die Ausführung einer Befehls-
- zeile endet bei Auftritt eines Fehlers, falls ein Kommentaranfang
- gefunden wird oder falls alle Befehle der Zeile bearbeitet sind.
-
- Falls kein Fehler auftritt, wird der Eingabepuffer gelöscht. An-
- sonsten ertönt ein Fehlersignal und die Befehlszeile bleibt zum
- Editieren im Eingabepuffer. Der Cursor steht dann auf der Stelle
- im Eingabepuffer an der der Fehler bemerkt wurde. Auf dem oberen
- Rand des Interpreter-Fensters wird eine Fehlermeldung angezeigt.
- Diese muß mit einer Taste quittiert werden.
-
- Die Anzeige der Registerwerte und der Inhalt des Monitors werden
- erst nach dem Ende der Bearbeitung einer Befehlszeile auf den
- neuesten Stand gebracht (Ausnahme: W- u. H-Befehl).
-
- Bei verketteten Befehlen muß beachtet werden, daß alle Befehle
- von MDEBUG EINZELN sequentiell ausgeführt, d.h. interpretiert wer-
- den, wobei nach JEDEM Befehl intern die Registerwerte angepasst
- werden!
-
- Eine Befehlszeile ist zu Ende, falls der Eingabepuffer vollständig
- bearbeitet wurde oder hinter einem Befehl kein Verkettungszeichen
- steht; d.h. hinter dem letzten Befehl stehende Zeichen werden
- ignoriert. (= Kommentar-Simulation) Verkettungszeichen in Kommen-
- taren werden ignoriert.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 82
-
-
-
- Die Kommentar-Simulation kann z.B. zum Vertauschen der Werte zweier
- Register genutzt werden:
-
- sei AX = 1024 und BX = 3408
-
- Sollen die Werte der Register vertauscht werden, wird der Wert des
- überschriebenen Registers hinter dem ersten MOV-Befehl vermerkt.
- Also
-
- MOV AX,BX 1024 MOV AX,BX MOV BX,1024
- ───────── ──── oder: ───────── ───────────
- Befehl Kommentar! Befehl Kommentar!
-
- Zur richtigen Belegung von BX muß nun nur mittels <SHIFT-RETURN>
- die Eingabe wieder zum Editieren freigegeben und korrigiert werden.
-
- Der Tausch ist natürlich auch über die Befehls-Verkettung möglich:
-
- Beispiel:
-
- Vertauschen der Inhalte der Register AX und BX unter Zuhilfe-
- name des Registers R7.
-
- Eingabe:
-
- MOV R7,AX ^ MOV AX,BX ^ MOV BX,R7 AX <-> BX
- ───────── ───────── ───────── ─────────
- Befehl1 Befehl2 Befehl3 Kommentar!
-
- oder
- Vertauschen der Register CX und DX ohne Hilfsregister:
-
- ! CX,DX ^ ! DX,CX ^ ! CX,DX CX <-> DX
- ─────── ─────── ─────── ─────────
- Befehl1 Befehl2 Befehl3 Kommentar!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 83
-
-
-
- Syntax der Operanden
- ────────────────────
-
- Führende Nullen bei Operanden sind nur beim B- und beim SH-Befehl
- erforderlich, bei allen anderen Werten sind sie möglich aber nicht
- nötig.
-
- Es wird von einer Byte-Operation ausgegangen, falls mindestens
- einer der Operanden ein Bytewert ist.
-
- Beispiel:
-
- MOV AL,[BX] -> AL wird geändert
-
- MOV AX,CL -> AL = CL und AH bleibt unverändert
-
- aber
-
- MOV BX,[CL] -> BX wird verändert, '[CL]' bezeichnet
- ein Speicherwort
-
- Ein explizit angegebener Wert wird in das Format des anderen
- Operanden (Byte oder Wort) konvertiert. Ist kein eindeutiges Kenn-
- zeichen für das Format vorhanden, wird eine Wort-Operation ausge-
- führt.
-
-
- Sonstiges
- ─────────
-
- ■ FÜr B-, C- und I-Befehle werden keinerlei Überprüfungen vorge-
- nommen. Vor dem G-Befehl wird nur überprüft, ob der auszuführende
- Code vollständig im im oberen Monitor-Window angezeigten Segment
- liegt und ob das Ende des auszuführenden Codes im RAM liegt.
-
- Vor den B-, G-, C- und I-Befehl wird der Stack zurück auf den
- Stack des unterbrochenen Prozesses gesetzt und die Register
- werden mit den angezeigten Werten geladen. Nach der Ausführung
- des Befehls werden alle Registerwerte gespeichert, der Stack
- wieder umgesetzt und die neuen Register-Werte angezeigt. D.h. B-,
- G-, C- und I-Befehle werden so ausgeführt, als wenn sie an der
- Stelle im unterbrochenen Prozess die nach der Unterbrechung aus-
- geführt würden.
- Nur der Wert des Registers CS ist anders (und natürlich der Wert
- des Instruction-Pointers), dies kann aber beim G-Befehl umgangen
- werden indem der Code in einen unbenutzten Speicherbereich des
- Code-Segmentes des unterbrochenen Prozesses gelegt wird.
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 84
-
-
-
- ■ Die Werte der Hilfs- und der Sonder-Register werden zwischen ver-
- schiedenen Aufrufen nicht verändert; die Prozessor-Register
- werden bei jedem Aufruf neu geladen.
-
- ■ Die Register SP und SS zeigen auf den Stack des unterbrochenen
- Prozesses. Die Return-Adresse und der Wert des Flag-Registers,
- die durch den INT-Aufruf auf den Stack gebracht wurden, werden
- vom Stack des unterbrochenen Prozesses entfernt. Diese werden
- von MDEBUG gespeichert und vor dem Beenden wieder auf den Stack
- gebracht.
-
- ■ Die Adresse des DIB und die Adresse des Busy-Flags werden nur
- einmal beim Start von MDEBUG im Initialisierungsteil ermittelt.
- Die aktuellen Adressen im DIB werden bei jeder Neu-Anzeige des
- Interpreter-Fensters neu ermittelt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 85
-
-
-
- Aufruf von MDEBUG im Graphikmodus
- ──────────────────────────────────
-
- MDEBUG kann auch im Graphik-Modus aufgerufen werden, falls für die
- installierte Graphikkarte ein Bildschirmtreiber geladen wurde.
- (z.B. der Treiber 'MDHGCDRV.COM' für die Herkules-Karte)
-
- Dieser Treiber kann als 'normales' Programm (Extension .COM bzw.
- .EXE) oder als in der CONFIG-Datei installierbarer .SYS-Treiber
- realisiert sein.
- Für die Beispieltreiber auf dieser Diskette wurde das .COM-Format
- genommen, da solch ein Treiber nur geladen werden muß, falls er
- gebraucht wird und nach dem Gebrauch wieder aus dem Speicher
- entfernt werden kann.
-
- MDEBUG kommuniziert mit dem Treiber über den Multiplex-Interrupt
- 2Fh. Dies hat den Vorteil, daß MDEBUG nicht überprüfen muß, ob
- ein Treiber installiert ist oder nicht, da der Interrupt 2Fh immer
- auf eine Routine zeigt (und niemals ins 'Nirwana').
- Zudem erlaubt es, daß ein Treiber vor oder nach MDEBUG geladen
- werden kann.
-
- Beachtet werden muß aber, daß eine falsche Prozessnummer für die
- Kommunikation über den Interrupt 2Fh das System zum Absturz bringen
- kann! (siehe 'Vorbereitungen vor dem Start')
-
- MDEBUG verwendet zur Kommunikation über den Interrupt 2Fh in der
- Voreinstellung die Prozessnummer D0h. Diese kann allerdings über
- den Parameter 'PRO' angepasst werden.
-
- Hierbei ist aber zu beachten, daß die angegebene Prozessnummer
- (und die folgende Prozessnummer, s.u.) entweder einem Treiber
- für MDEBUG zugeordnet oder unbelegt ist!
-
- Zur Überprüfung, ob eine Prozessnummer schon belegt ist, kann das
- Util SHOW2FP.COM benutzt werden.
- (siehe Vorbereitungen vor dem Start)
-
- Der Treiber ist also für die Sicherung und Restaurierung der Bild-
- schirmdaten in den Bildschirm-Modi, die MDEBUG nicht unterstützt,
- verantwortlich. Dazu muß er mehrere Funktionen zur Verfügung
- stellen.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 86
-
-
-
- Für alle Funktionen des Treibers gilt:
-
- MDEBUG ruft alle Funktionen mit der Prozessnummer im Register AH
- und der Funktionsnummer im Register AL auf. Der Treiber darf
- nur aktiv werden, falls seine Prozessnummer angegeben ist. Alle
- anderen Aufrufe des Interrupt 2Fh muß er ohne Änderung der Regis-
- ter an den nächsten Prozess in der Kette für den Interrupt 2Fh
- weiterleiten!
-
- Der Treiber darf Register, die nicht zur Rückgabe von Ergebnissen
- benötigt werden, in keinem Fall verändern!
-
- Für alle Funktionen, außer der Funktion 0, des Treibers gilt:
-
- Im Fehlerfall muß der Treiber mit gesetzten Carry-Flag und dem
- Fehlercode im Register AX enden.
-
- Bekannte Fehlercodes sind im Moment:
-
- 0FFFFh - Unerlaubter Aufruf einer Funktion
-
- MDEBUG wertet im Moment Fehler des Treibers nur teilweise aus.
- (siehe Beschreibungen der einzelnen Funktionen)
-
- War der Treiber erfolgreich, muß er das Carry-Flag löschen und das
- Register AX mit 0 belegen. Enthält das Register AX bei gelöschtem
- Carry-Flag einen Wert ungleich 0, so wird dies als Warnung des
- Treibers interpretiert.
- Diese Möglichkeit ist im Moment allerdings noch reserviert, d.h.
- MDEBUG ignoriert den Inhalt des Registers AX bei gelöschtem
- Carry-Flag.
-
- Alle Funktionen müssen entweder reentrant geschrieben sein oder
- den Fehler-Code 0FFFFh bei Mehrfachaufrufen zurückgeben.
- MDEBUG geht davon aus, daß immer nur ein Bildschirmtreiber
- geladen ist.
-
-
- Funktionen der Bildschirmtreiber
- ────────────────────────────────
-
-
- MDEBUG erwartet, daß ein Bildschirmtreiber folgende Funktionen
- unterstützt (siehe auch Quelltexte zu den Treibern):
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 87
-
-
-
- Funktion 0 - Get Driver Status
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Ermitteln des Treiber-Status
-
- Eingabe: AH = 0
-
- Ausgabe: CF = 0
- AL = 0FFh
- AH = Treiber-Semaphor
- AH = 0 ->> Treiber ist nicht aktiv
- AH <> 0 ->> Treiber ist gerade aktiv oder wurde bei
- einer Bearbeitung abgebrochen
- BX = Segment des Treibers
- CX = Version von MDEBUG für die der Treiber
- geschrieben wurde.
- (CH = Hauptversion, CL = Unterversion)
-
- DL = Puffer-Semaphor
- DL <> 0 ->> Puffer ist belegt, d.h. Funktion 2
- wurde aufgerufen aber Funktion 3 noch
- nicht
- DL = 0 ->> Puffer ist nicht belegt
-
- DH = Show-Semaphor
- DH <> 0 ->> Funktion 4 wurde aufgerufen aber
- Funktion 5 noch nicht
- DH = 0 ->> Aufrufe der Funktion 4 und 5 waren okay
-
-
- Besonderheiten:
-
- Diese Funktion MUSS reentrant geschrieben sein, d.h. wiederein-
- trittsfähig!
-
- Wird eine ältere Versionsnummer als 1.60 zurückgegeben, so unter-
- drückt MDEBUG alle Aufrufe des Bildschirmtreibers und gibt beim
- nächsten Aufruf des Interpreters eine Fehlermeldung aus.
-
- Diese Funktion wird bei jedem Neuaufruf von MDEBUG aufgerufen.
- Der Puffer-Semaphor und der Show-Semaphor sind nur bei nicht
- wiedereintrittsfähigen Treibern von Bedeutung. Falls die Funk-
- tionen des Treibers reentrant sind, sollte hierfür immer Null
- zurückgegeben werden.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 88
-
-
-
- Funktion 1 - Init Driver
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Treiber-Reset
-
- Eingabe: AH = 1
-
- Ausgabe: CF = 0 ->> Treiber wurde initialisiert
- AL = Treiber-Semaphor
- AH = Puffer-Semaphor
- CF = 1 ->> Treiber konnte nicht initialisiert werden
-
- Besonderheiten:
-
- Die Funktion 1 wird von MDEBUG direkt nach der Funktion 0 aufge-
- rufen. Da es auch vorkommen kann, daß ein Aufruf von MDEBUG
- zwischen einem Aufruf der Funktionen 2 und 3 bzw. 4 und 5 des
- Treibers beendet wird, sollte diese Funktion alle Treiber-Daten
- für ungültig erklären und alle Semaphore zurücksetzen.
- Falls die Funktion 1 einen Fehler meldet, unterdrückt MDEBUG bis
- zum Beenden des Aufrufes von MDEBUG alle Aufrufe des Bildschirm-
- treibers.
-
-
- Funktion 2 - Save Graphik data
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Sichern der Bildschirmdaten
-
- Eingabe: AH = 2
-
- Ausgabe: CF = 0 ->> Daten konnten gesichert werden oder Treiber
- ist für den aktuellen Modus nicht zuständig.
- CF = 1 ->> Daten konnten nicht gesichert werden
-
- Besonderheiten:
-
- Diese Funktion wird von MDEBUG vor der Passwort-Eingabe bzw. vor
- der Anzeige der Fenster von MDEBUG aufrufen. Sie sollte, falls
- sie für den aktuellen Modus zuständig ist, die Daten des akt-
- uellen Bildschirm-Modus und den Bildschirminhalt sichern und den
- Bildschirm in einen durch MDEBUG benutzbaren Text-Modus bringen.
- Ein Fehler wird von MDEBUG noch nicht ausgewertet.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 89
-
-
-
- Funktion 3 - Restore Graphik data
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Restaurieren der Bildschirmdaten
-
- Eingabe: AH = 3
-
- Ausgabe: CF = 0 ->> Daten konnten restauriert werden oder Treiber
- ist für den akt. Modus nicht zuständig.
-
- CF = 1 ->> Daten konnten nicht restauriert werden
-
- Besonderheiten:
-
- Diese Funktion wird von MDEBUG vor dem endgültigen Beenden des
- Aufrufes aufgerufen. Sie sollte, falls die Funktion 2 den Bild-
- schirmstatus gesichert hat, diesen wiederherstellen. Die Funktion
- 3 ist also das Gegenstück zur Funktion 2.
- Ein Fehler wird von MDEBUG noch nicht ausgewertet.
-
-
- Funktion 4 - Show saved data
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Anzeige des gesicherten Bildschirms
-
- Eingabe: AH = 4
-
- Ausgabe: CF = 0 ->> Daten konnten angezeigt werden oder Treiber
- ist für den akt. Modus nicht zuständig.
-
- CF = 1 ->> Daten konnten nicht angezeigt werden
-
- Besonderheiten:
-
- Diese Funktion wird von MDEBUG vor der Anzeige des Orignalbild-
- schirms nach Eingabe der Taste <CTRL-F1> aufgerufen. Sie sollte,
- falls ein durch die Funktion 2 gesicherter Bildschirm-Status vor-
- liegt, diesen anzeigen.
- Die Funktion muß den aktuellen Bildschirm-Inhalt vor der An-
- zeige nicht sichern.
- Ein Fehler wird von MDEBUG noch nicht ausgewertet.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 90
-
-
-
- Funktion 5 - Switch back to text screen
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Umschalten des Bildschirmmodus in den durch die
- Funktion 2 eingestellten Text-Modus
-
- Eingabe: AH = 5
-
- Ausgabe: CF = 0 ->> Bildschirmmodus wurde geändert oder Treiber
- ist für den akt. Modus nicht zuständig.
-
- CF = 1 ->> Bildschirmmodus konnte nicht geändert werden
-
- Besonderheiten:
-
- Diese Funktion wird von MDEBUG direkt nach der Eingabe einer
- Taste bei der Anzeige des DOS-Screens über die Taste <CTRL-F1>
- aufgerufen. Sie muß, falls die Funktion 4 ausgeführt werden
- konnte, den Bildschirm wieder in den Modus, der durch die Funk-
- tion 3 eingestellt wurde, bringen. Die Funktion ist also das
- Pendant zur Funktion 4.
- Die Funktion muß keinerlei Daten sichern und den Bildschirm-
- Inhalt auch nicht restaurieren.
- Ein Fehler wird von MDEBUG noch nicht ausgewertet.
- Zwischen den beiden Aufrufen der Funktionen 4 und 5 wird von
- MDEBUG nur ein Aufruf des Interrupt 16h zum Lesen einer Taste
- ausgeführt.
-
-
- Funktion 06 bis 7Fh - reserviert
- ───────────────────────────────────────────────────────────────────
-
- Die Funktionen 06h bis 7Fh sind reserviert aber im Moment noch
- nicht belegt.
-
-
- Funktion 80h bis 0FFh - reserviert
- ───────────────────────────────────────────────────────────────────
-
- Die Funktionen 80h bis 0FFh sind für weitere Treiberfunktionen
- reserviert. Falls in eigenen Treibern weitere Funktionen, z.B.
- zur Kommunikation zwischen dem residenten Teil und dem transien-
- ten Teil eines Treibers, benötigt werden, sollten dafür nur
- Funktionsnummern zwischen 80h und 0FFh gewählt werden.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 91
-
-
-
- Erweiterungen von MDEBUG mittels Kommandotreiber
- ────────────────────────────────────────────────
-
- MDEBUG erlaubt es, die Befehle des Interpreters über externe
- Treiber (sogenannte Kommandotreiber) zu erweitern.
- Die neuen Befehle können dann wie die internen Befehle benutzt
- werden. Selbstverständlich können sie auch mit Parametern oder
- Operanden angegeben werden. Die Verwendung in Befehlszeilen mit
- mehreren Befehlen ist natürlich auch möglich. Die neuen Befehle
- unterliegen dabei allerdings den gleichen Beschränkungen wie die
- internen, d.h. nur das erste und das letzte Zeichen dieser ist
- signifikant. (siehe auch 'Syntax der Befehle')
-
- Es können auch mehrere verschiedene Kommandotreiber gleichzeitig
- geladen sein (z.B. der Treiber MDHISDRV und der Treiber MDDISDRV).
-
- MDEBUG ruft die Kommandotreiber vor der eigentlichen Auswertung
- eines Befehls auf, so daß die internen Befehle auch durch neue
- Befehle ersetzt oder erweitert werden können. Es ist damit z.B.
- möglich eine erweiterte Syntax-Prüfung einzuführen oder bestimmte
- Befehle zu unterdrücken.
-
- Über Kommandotreiber können auch Tastenumbelegungen und Tasten-
- neubelegungen implementiert werden. Auch diese Funktionen der
- Treiber werden vor der eigentlichen Auswertung der Tasten auf-
- rufen, so daß auch hier die Tastenbelegungen von MDEBUG über-
- schrieben werden können.
-
- Mit den Kommandotreibern kommuniziert MDEBUG ebenfalls über den
- Interrupt 2Fh.
- Die Prozessnummer für diesen Treiber ist die auf die Prozessnummer
- für den Bildschirmtreiber folgende (in der Voreinstellung also
- D0h + 1 = D1h). (siehe auch MDBSPDRV.ASM)
-
- Für alle Funktionen des Treibers gilt:
-
- MDEBUG ruft alle Funktionen mit der Prozessnummer im Register AH
- und der Funktionsnummer im Register AL auf. Der Treiber darf
- nur aktiv werden, falls seine Prozessnummer angegeben ist und die
- angegebene Funktionsnummer von ihm unterstützt wird.
-
- Alle anderen Aufrufe des Interrupt 2Fh MUSS er mit unveränderten
- Registerwerten weiterleiten!
- Die Funktionen 0 und 1 müssen IMMER mit geänderten Registerwerten
- an den nächsten Prozess in der Kette für den Interrupt 2Fh weiter-
- gegeben werden.
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 92
-
-
-
- Falls eine der Funktionen 2, 3 oder 4 nicht ausgeführt werden kann,
- muß der Treiber diesen Aufruf ebenfalls ohne Änderung der Register
- weiterleiten.
- Die Funktionen 10h, 11h und 12h DÜRFEN nie weitergegeben werden.
- Der Treiber darf Register, die nicht zur Rückgabe von Ergebnissen
- benötigt werden, in KEINEM Fall verändern!
- Die Funktionen 0, 1 und 10h des Treibers müssen reentrant sein.
-
-
-
- Funktionen der Kommandotreiber
- ──────────────────────────────
-
-
- Jeder Kommandotreiber muß die folgenden Funktionen zur Verfügung
- stellen:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 93
-
-
-
- Funktion 0 - Get Status
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Ermitteln des Status des Treibers
-
- Eingabe: AH = 0
- BX = Version von MDEBUG
- (BH = Hauptversion, BL = Unterversion)
- CX = Zähler
- (*) DS:SI = Zeiger auf die Identifikations-Tabelle von MDEBUG
- (Aufbau siehe User-Int)
- (*) ES = Segment der von MDEBUG benutzten Bildschirmseite
- (Offset = 0)
- (*) DI = Daten der von MDEBUG benutzen Bildschirmseite:
- High-Byte: max. Anzahl Zeilen/Bildschirmseite
- Low-Byte: max. Anzahl Spalten/Bildschirmzeile
-
- Ausgabe: DL = 0FFh
- BX = Falls die Versionsnummer von MDEBUG für die
- der Treiber geschrieben wurde KLEINER als die in
- BX übergebene Versionsnummer ist, muß der Treiber
- diese in BX zurückgeben. Ansonsten darf BX nicht
- verändert werden.
- (BH = Hauptversion, BL = Unterversion)
- CX = CX muß um eins erhöht werden.
-
- Besonderheiten:
-
- Der Aufruf der Funktion 0 muß an den nächsten Prozess in der
- Kette für den Interrupt 2Fh weitergeleitet werden (nach der Ände-
- rung der Registerwerte)!
-
- Falls mindestens einer der geladenen Treiber veraltet ist unter-
- drückt MDEBUG ALLE Aufrufe der Kommandotreiber und gibt beim
- nächsten Aufruf des Interpreters eine Fehlermeldung aus.
- Ein veralteter Kommandotreiber verursacht also die Ignorierung
- aller geladenen Kommandotreiber durch MDEBUG.
- MDEBUG arbeitet in dieser Version mit allen Treibern, die für
- MDEBUG ab Version 1.52 geschrieben wurden zusammen.
- Diese Funktion wird von MDEBUG bei jedem Aufruf aufgerufen.
- Sie muß reentrant, d.h. immer möglich sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 94
-
-
-
- Für die mit (*) gekennzeichneten Daten gilt:
-
- Diese Daten werden von MDEBUG vor jedem Aufruf neu ermittelt.
- Treiber, die diese Daten nutzen wollen, müssen diese daher bei
- JEDEM Aufruf der Funktion 0 neu übernehmen. Außerdem MUSS in
- diesem Fall der Treiber die Versionsnummer von MDEBUG im Register
- BX oder in der Identifikations-Tabelle überprüfen, da diese Daten
- erst ab der Version 1.60 von MDEBUG vorhanden sind!
-
- Die Funktion wird ab der Version 1.70 von MDEBUG auch nach jeder
- Neuermittlung der Daten des aktuellen Bildschirmmodus (Taste
- <ALT-F9>) aufgerufen. Bei diesem Aufruf werden die zurückgege-
- benen Daten von MDEBUG aber nicht weiter berücksichtigt!
-
-
-
- Funktion 1 - Init Driver
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Initialisieren des Treibers
-
- Eingabe: AH = 1
- CX = Zähler
-
- Ausgabe: DL = DL muß auf 0FFh gesetzt werden, falls der Treiber
- initialisiert werden konnte
- (Andernfalls darf DL nicht verändert werden!)
- CX = CX muß um eins erhöht werden, falls der Treiber
- initialisiert werden konnte.
-
- Besonderheiten:
-
- Der Aufruf der Funktion 1 muß nach der Veränderung der Register-
- werte an den nächsten Prozess in der Kette für den Interrupt 2Fh
- weitergeleitet werden.
-
- Diese Funktion wird von MDEBUG bei jedem Aufruf aufgerufen.
-
- Falls kein Treiber initialisiert werden kann, unterdrückt MDEBUG
- alle Aufrufe der Kommandotreiber bei diesem Aufruf.
-
- Die Funktion muß immer möglich sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 95
-
-
-
- Funktion 2 - Execute interpreter command
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Ausführen eines Befehls im Interpreter
-
- Eingabe: AH = 2
- BL = erstes Zeichen des Befehls
- BH = letztes Zeichen des Befehls
- (Leerzeichen, falls der Befehl nur ein Zeichen
- lang ist)
- DS:SI zeigt auf die Parameter für den Befehl als ASCII-
- String abgeschl. mit einem Null-Byte. Führende
- Leerzeichen sind schon entfernt.
- Falls keine Parameter angegeben wurden zeigt
- DS:SI auf ein Null-Byte.
-
- DS:DI zeigt auf folgende Datenstruktur:
-
- (Hinweis:
- Dies ist die ORIGINAL-Struktur von MDEBUG! Änderungen
- für die Register von MDEBUG müssen direkt hier ein-
- getragen werden)
-
- ┌─────────────────┬───────┬─────────────────────────────────┐
- │ Offset │ │ Funktion der Speicherstelle │
- │ (relativ zu DI) │ Länge │ │
- ╞═════════════════╪═══════╪═════════════════════════════════╡
- │ 00h │ Word │ Register SE │
- │ 02h │ Word │ Register OF │
- │ 04h │ Word │ Register FS │
- │ 06h │ Word │ Register FO │
- │ 08h │ Word │ Register AX │
- │ 0Ah │ Word │ Register BX │
- │ 0Ch │ Word │ Register CX │
- │ 0Eh │ Word │ Register DX │
- │ 10h │ Word │ Register SI │
- │ 12h │ Word │ Register DI │
- │ 14h │ Word │ Register DS │
- └─────────────────┴───────┴─────────────────────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 96
-
-
-
- - Fortsetzung -
- ┌─────────────────┬───────┬─────────────────────────────────┐
- │ Offset │ │ Inhalt │
- │ (relativ zu DI) │ Länge │ │
- ╞═════════════════╪═══════╪═════════════════════════════════╡
- │ 16h │ Word │ Register ES │
- │ 18h │ Word │ Register BP │
- │ 1Ah │ Word │ Register SS │
- │ 1Ch │ Word │ Register SP │
- │ 1Eh │ Word │ Register FL (Flags) │
- │ 20h │ Word │ Register R0 │
- │ 22h │ Word │ Register R1 │
- │ 24h │ Word │ Register R2 │
- │ 26h │ Word │ Register R3 │
- │ 28h │ Word │ Register R4 │
- │ 2Ah │ Word │ Register R5 │
- │ 2Ch │ Word │ Register R6 │
- │ 2Eh │ Word │ Register R7 │
- │ 30h │ Word │ Register R8 │
- │ 32h │ Word │ Konstante CS, Ret-Adresse │
- │ 34h │ Word │ Konstante IP, Ret-Adresse │
- │ 36h │ DWord │ gesicherte Monitor-Start-Adresse│
- │ │ │ (Taste <F6>) │
- │ 3Ah │24 Byte│ gesicherte Registerwerte. Hier │
- │ │ │ stehen die Werte, die vor dem │
- │ │ │ Beenden des Aufrufs von MDEBUG │
- │ │ │ wieder geladen werden! │
- │ │ │ Reihenfolge der Speicherung: │
- │ │ │ AX, BX, CX, DX, SI, DI, DS, ES │
- │ │ │ BP, SS, SP, Flags │
- │ 52h │24 Byte│ Inhalt der Register vor dem │
- │ │ │ Beenden des letzten Aufrufs von │
- │ │ │ MDEBUG │
- │ │ │ Reihenfolge der Speicherung: │
- │ │ │ AX, BX, CX, DX, SI, DI, DS, ES │
- │ │ │ BP, SS, SP, Flags │
- │ 6Ah │ DWord │ Adresse des DOS-Info-Blocks │
- │ 6Eh │ DWord │ Adresse des DOS-Busy-Flags │
- │ 72h │ Word │ Offset des Registers, aus dem │
- │ │ │ das Segment für das erste │
- │ │ │ Monitorwindow ermittelt wird │
- │ 74h │ Word │ Offset des Registers, aus dem │
- │ │ │ der Offset für das erste │
- │ │ │ Monitorwindow ermittelt wird │
- │ 76h │ Word │ Name des Registers, aus dem │
- │ │ │ das Segment für das erste │
- │ │ │ Monitorwindow ermittelt wird │
- └─────────────────┴───────┴─────────────────────────────────┘
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 97
-
-
-
- - Fortsetzung -
- ┌─────────────────┬───────┬─────────────────────────────────┐
- │ Offset │ │ Inhalt │
- │ (relativ zu DI) │ Länge │ │
- ╞═════════════════╪═══════╪═════════════════════════════════╡
- │ 78h │ Word │ Name des Registers, aus dem │
- │ │ │ der Offset für das erste │
- │ │ │ Monitorwindow ermittelt wird │
- │ 7Ah │ Word │ Speicherstelle, die als Pseudo- │
- │ │ │ Register für den 1. Operanden │
- │ │ │ gilt │
- │ 7Ch │ Word │ Speicherstelle, die als Pseudo- │
- │ │ │ Register für den 2. Operanden │
- │ │ │ gilt │
- │ 7Eh │ DWord │ letzte Monitor-Start-Adresse │
- │ │ │ (Taste <X>) │
- └─────────────────┴───────┴─────────────────────────────────┘
-
-
- Ausgabe: AL = 0FFh
- CF = 1 ->> Fehler, AH enthält die Fehlernummer
-
- Möglich sind folgende Werte:
-
- 1 - Syntax Fehler
- 2 - 1. Shell des COMMAND.COM ist aktiv
- 3 - ESC gedrückt
- 4 - BREAK gedrückt
- 5 - DOS ist aktiv
- 6 - ¿-Befehl endete
- 7 - Division durch Null
- 8 - Fehlerhafter Bildschirmtreiber
- 9 - Fehlerhafter Kommandotreiber
- 10 - Fehler 8 und 9
- 11 - unbekannter Fehler
- 12 - Neuer Fehler, in diesem Fall muß DS:SI auf eine
- Fehlermeldung mit max. 30 Zeichen zeigen. Die
- Meldung muß mit einem Null-Byte abgeschlossen
- sein. Sie gilt nur für diesen Fehler.
- Falls sie kürzer als 30 Zeichen ist, wird sie
- mit Leerzeichen bis auf 30 Zeichen aufgefüllt.
-
- Alle anderen Werte werden wie der Wert 11 behandelt.
- Ein Fehler wird von MDEBUG nur angezeigt aber nicht
- ausgewertet. Tritt der Fehler in einer Befehlszeile auf
- wird die Ausführung dieser abgebrochen.
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 98
-
-
-
- CF = 0 ->> AH enthält den Returncode
-
- Mögliche Werte sind hier:
-
- 0 - Ausführung der Befehlszeile fortsetzen
- 1 - MDEBUG verlassen (Neustart im Interpreter)
- 2 - MDEBUG verlassen mit automatischem Neuaufruf
- 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.
-
- Besonderheiten:
-
- Der Aufruf der Funktion 2 muß, ohne Änderung der Register, an
- den nächsten Prozess in der Kette für den Interrupt 2Fh weiter-
- geleitet werden falls der Befehl für diesen Treiber nicht bekannt
- ist. Diese Funktion wird von MDEBUG für jeden Befehl vor der Aus-
- wertung dieses aufgerufen.
- Vor dem Aufruf dieser Funktion schaltet MDEBUG den Cursor aus.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 99
-
-
-
- Funktion 3 - Execute key in the monitor
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Bearbeiten einer Taste im Monitor
-
- Eingabe: AH = 3
- BX = Code der eingegebenen Taste wie er vom Interrupt
- 16h zurückgegeben wird.
-
- CX = 0 ->> Der Cursor befindet sich in der 3. Spalte
- 1 ->> Der Cursor befindet sich in der 2. Spalte
- 2 ->> Der Cursor befindet sich im Offset-Feld
- 3 ->> Der Cursor befindet sich im Segment-Feld
-
- DS:SI zeigt auf die gleiche Datenstruktur wie DS:DI bei
- der Funktion 2.
-
- ES:DI enthält die Adresse des Bytes, auf das der
- Cursor im Moment steht
-
- Ausgabe: AL = 0FFh ->> Taste erkannt, AH enthält den Returncode.
-
- Mögliche Werte sind hier:
-
- 0 - Taste bearbeitet, keine weiteren Aktionen nötig
- 1 - MDEBUG verlassen (Neustart im Monitor)
- 2 - MDEBUG verlassen mit automatischem Neuaufruf
- sobald DOS nicht aktiv ist (Neustart im Interpreter)
- 3 - Funktion konnte nicht ausgeführt werden, Fehlerton
- ausgeben
- 4 - Taste wurde umdefiniert und muß weiter bearbeitet
- werden. In diesem Fall muß BX den neuen Tastencode
- beinhalten.
-
- Alle anderen Werte werden wie der Wert 0 behandelt.
-
-
- Besonderheiten:
-
- Der Aufruf der Funktion 3 muß, ohne Änderung der Register, an
- den nächsten Prozess in der Kette für den Interrupt 2Fh weiter-
- geleitet werden falls der Befehl für diesen Treiber nicht bekannt
- ist.
-
- Vor dem Aufruf dieser Funktion schaltet MDEBUG den Cursor aus.
- Diese Funktion wird von MDEBUG nach jeder Eingabe einer Taste im
- Offset- oder im Segment-Feld, in der mittleren und in der rech-
- ten Spalte des Monitors (ausgenommen <CTRL-P>) aufgerufen.
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 100
-
-
-
- Funktion 4 - Execute key in the interpreter
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Bearbeiten einer Taste im Interpreter
-
- Eingabe: AH = 4
- BX = Code der eingegebenen Taste wie er vom Interrupt
- 16h zurückgegeben wird.
- DS:SI zeigt auf die gleiche Datenstruktur wie DS:DI bei
- der Funktion 2
-
- Ausgabe: AL = 0FFh ->> Taste erkannt, AH enthält den Returncode
-
- Mögliche Werte sind hier:
-
- 0 - Taste bearbeitet, keine weiteren Aktionen nötig
- 1 - MDEBUG verlassen, (Neustart im Interpreter)
- 2 - MDEBUG verlassen mit automatischen Neuaufruf
- sobald DOS nicht aktiv ist (Neustart im Interpreter)
- 3 - Funktion konnte nicht ausgeführt werden, Fehlerton
- ausgeben
- 4 - Taste wurde umdefiniert und muß weiter bearbeitet
- werden. In diesem Fall muß BX den neuen Tastencode
- beinhalten.
- 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 aus-
- gefü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.
-
-
- Besonderheiten:
-
- Der Aufruf der Funktion 4 muß an den nächsten Prozess in der
- Kette für den Interrupt 2Fh weitergeleitet werden falls die Taste
- für diesen Treiber nicht bekannt ist. (ohne Änderung der Regis-
- terwerte)
- Vor dem Aufruf dieser Funktion schaltet MDEBUG den Cursor aus.
- Die Funktion wird von MDEBUG nach jeder Eingabe einer Taste im
- Interpreter (ausgenommen <CTRL-P>) aufgerufen.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 101
-
-
-
- Funktion 05h bis 0Ah - reserviert
- ───────────────────────────────────────────────────────────────────
-
- Die Funktionen 05h bis 0Ah sind reserviert aber im Moment noch
- nicht belegt.
-
-
- Funktion 10h - Get adress of the old interrupt 2Fh
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Ermitteln des nächsten Prozesses in der Kette für den
- Interrupt 2Fh und des Segments des Treibers
-
- Eingabe: AH = 10h
-
- Ausgabe: DL = 0FFh
- ES:BX = Adresse des nächsten Prozesses in der Kette für
- den Interrupt 2Fh
- CX = Segment des Treibers
- ES:DI = Adresse der Identifikationstabelle des Treibers
-
- Aufbau der Identifikationstabelle eines Treibers:
-
- ┌──────────────┬───────┬──────────────────────────────┐
- │ Offset in │ Länge │ Inhalt │
- │ der Tabelle │ │ │
- ╞══════════════╪═══════╪══════════════════════════════╡
- │ 00h │ 1Ah │ 'Kommandotreiber für MDEBUG'│
- │ 1Ah │ 0Ch │ Name des Treibers als String│
- │ │ │ (ohne Längenbyte und Ende- │
- │ │ │ Kennzeichen) │
- │ │ │ Dieser String muß für jeden │
- │ │ │ Treiber verschieden sein! │
- └──────────────┴───────┴──────────────────────────────┘
-
- Besonderheiten:
-
- Die Funktion wird nur vom Treiber selbst im Initialisierrungs-
- teil zum Durchlaufen der Kette für den Interrupt 2Fh benutzt. Sie
- muß auch implementiert sein, falls dieser Treiber sie nicht
- benutzt!
-
- Die Funktion muß reentrant sein und darf nicht weitergeleitet
- werden!
-
- Hinweis: Bei Treibern, die für MDEBUG Version 1.52 oder älter
- geschrieben wurden, beginnt die Identifikationstabelle
- immer am Offset 104h im Code/Datensegment.
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 102
-
-
-
- Funktion 11h - Start Driver
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Diese Funktion wird vom Initialsierungsteil aufgerufen
- um dem Treiber mitzuteilen, daß er installiert ist.
-
- Eingabe: AH = 11h
-
- Ausgabe: DL = 0FFh
-
- Besonderheiten:
-
- Die Funktion wird nur vom Treiber selbst im Initialisierungsteil
- benutzt. Sie darf den Aufruf nicht weiterleiten. Ein Fehler wird
- je nach Implementierung berücksichtigt.
-
- Die Funktion darf sonst nicht aufgerufen werden!
-
-
- Funktion 12h - End Driver
- ───────────────────────────────────────────────────────────────────
-
- Funktion: Diese Funktion wird vom DeInitialsierungsteil kurz vor
- der DeInstallierung des Treibers aufgerufen um ihm
- Gelegenheit zum 'Aufräumen' zu geben.
-
- Eingabe: AH = 12h
-
- Ausgabe: DL = 0FFh
-
- Besonderheiten:
-
- Die Funktion wird nur vom Treiber selbst im DeInitialisierungs-
- teil benutzt. Sie darf den Aufruf nicht weiterleiten. Ein Fehler
- wird je nach Implementierung berücksichtigt.
-
- Die Funktion darf sonst nicht aufgerufen werden!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 103
-
-
-
- Funktion 13h bis 7Fh - reserviert
- ───────────────────────────────────────────────────────────────────
-
- Die Funktionen 13h bis 7Fh sind reserviert aber im Moment noch
- nicht belegt.
-
-
- Funktion 80h bis 0FFh - reserviert
- ───────────────────────────────────────────────────────────────────
-
- Die Funktionen 80h bis 0FFh sind für weitere Treiberfunktionen
- reserviert. Falls in eigenen Treibern weitere Funktionen, z.B.
- zur Kommunikation zwischen einem residenten Teil und dem tran-
- sienten Teil eines Treibers, benötigt werden, sollten dafür nur
- Funktionsnummern zwischen 80h und 0FFh gewählt werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 104
-
-
-
- Zusätzlicher User-Interrupt
- ───────────────────────────
-
- MDEBUG belegt zur Kommunikation mit anderen Programmen einen
- zusätzlichen Interrupt (= User-Int). Dieser kann von anderen Pro-
- grammen aufgerufen werden, um z.B. interne Variablen von MDEBUG zu
- lesen oder zu schreiben oder auch um MDEBUG gezielt aufzurufen.
-
- Der User-Int wird von MDEBUG nicht weitergeleitet.
-
- Falls die Passwort-Abfrage aktiv ist, muß bei JEDEM Aufruf einer
- Funktion des User-Ints die Register-Kombination DS:SI auf das
- korrekte Passwort oder auf ein Null-Byte zeigen.
- Ausnahme: Funktion 06h
-
- Steht bei DS:SI ein Null-Byte, so wird das Passwort vom Benutzer
- erfragt. Vor der Eingabe wird der Bildschirmmodus überprüft. Ist
- dieser inkorrekt, wird die Eingabe des Passwortes abgebrochen und
- im Register AX der Fehlercode 0FFFDh zurückgegeben.
-
- Bei Aufruf mit DS:SI auf einem Null-Byte zeigend muß das auf-
- rufende Programm dafür sorgen, daß auf dem aktuellen Stack noch
- genügend Platz für mehrere Aufrufe des Interrupt 10h ist.
-
- Zeigt DS:SI auf ein inkorrektes Passwort oder hat der Benutzer ein
- falsches Passwort eingegeben, so wird die Funktion nicht ausge-
- führt und im Register AX der Fehlercode 0FFFEh zurückgeliefert.
- Ist kein Passwort installiert oder das Passwort inaktiv, so wird
- der Inhalt der Register DS und SI ignoriert.
-
-
- Folgende Funktionen sind für den User-Interrupt implementiert:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 105
-
-
-
- Funktion 0 - Status ermitteln
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 0
- DS:SI zeigt auf das Passwort
-
- Ausgabe: AX = 0FFFEh ->> Passwort inkorrekt
- AX = 0FFFDh ->> Bildschirmmodus inkorrekt
-
- sonst:
-
- ES = Inhalt des Registers SE des Monitors
- DI = Inhalt des Registers OF des Monitors
- CH = Farb-Attribut des Monitors
- CL = Farb-Attribut des Interpreters
- BH = Startzeile des Monitors
- BL = Startzeile des Interpreters
- AH = Scancode des Hotkeys
- AL = Hotkey (als CHAR)
- DL = Status der Umschalt-Tasten bei Aufruf
- DH = Basis-Prozessnummer für den Interrupt 2Fh
- (= Parameter 'PRO')
- DS:SI -> Zeiger auf die Identifikations-
- Tabelle von MDEBUG (Original!)
-
- Aufbau der Identifikations-Tabelle von MDEBUG:
-
- ┌────────┬───────┬─────────────────────────────────────────┐
- │ Offset │ Länge │ Inhalt │
- ╞════════╪═══════╪═════════════════════════════════════════╡
- │ -02h │ Word │ Einsprung-Offset (siehe ?-Befehl) │
- DS:SI ->│ 00h │ Word │ Segment des residenten MDEBUG │
- │ 02h │ DWord │ Adresse der alten INT-08h-Routine │
- │ 06h │ DWord │ Adresse der alten INT-09h-Routine │
- │ 0Ah │ DWord │ Adresse der von MDEBUG benutzten │
- │ │ │ Routine für den Interrupt 16h │
- │ 0Eh │ n Byte│ Versions-Kennung als Pascal-String │
- └────────┴───────┴─────────────────────────────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 106
-
-
-
- Funktion 1 - Ermittle Adresse der Hilfsregister
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 1
- DS:SI zeigt auf das Passwort
-
- Ausgabe: AX = 0FFFEh ->> Passwort inkorrekt
- AX = 0FFFDh ->> Bildschirmmodus inkorrekt
-
- sonst:
-
- ES:DI zeigt auf die Hilfsregister von MDEBUG
-
- ES:DI-2 -> R0
- ES:DI -> R1
- ES:DI+2 -> R2
- ES;DI+4 -> R3
- usw.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 107
-
-
-
- Funktion 2 - Status setzen
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 2
- DS:SI zeigt auf das Passwort
-
- ES = Neuer Wert für das Register SE des Monitors
- DI = Neuer Wert für das Register OF des Monitors
- CH <> 0 ->> CH = Farb-Attribut des Monitors
- CL <> 0 ->> CL = Farb-Attribut des Interpreters
- BH <> 0 ->> BH = Startzeile des Monitors
- BL <> 0 ->> BL = Startzeile des Interpreters
- AL <> 0 ->> AL = Neuer Hotkey (als ASCII-Zeichen)
- Intervall: 'A'..'Z' oder 'a'..'z'
- DL <> 0 ->> DL = Status der Umschalt-Tasten
- (Es darf nur das untere Nibble gesetzt
- sein)
- DH <> 0 ->> DH = Basis-Prozessnummer für den Interrupt 2Fh
-
- Die Überprüfung der Werte geschieht äquivalent zu der Angabe der
- Werte über Parameter bei der Installation.
-
- Ausgabe: AX = 0 ->> ok
- AX = 0FFFEh ->> Passwort inkorrekt
- Keine Änderungen vorgenommen
- AX = 0FFFFh ->> Aufruf nicht erlaubt
- Keine Änderungen vorgenommen
- AX = 0FFFDh ->> Bildschirmmodus inkorrekt
- Keine Änderungen vorgenommen
- sonst:
- AX = Codierung eines Fehlers, und zwar:
-
- ┌─────┬────────────────────────────────────────┐
- │ Bit │ Bedeutung falls gesetzt │
- ╞═════╪════════════════════════════════════════╡
- │ 0 │ Falsche Startzeile für den Monitor │
- │ 1 │ Falsche Startzeile für den Interpreter │
- │ 2 │ Falscher Hotkey angegeben │
- │ 3 │ Falsche Prozessnummer angegeben │
- │ 4 │ reserviert (= 0) │
- │ 5 │ reserviert (= 0) │
- │ 6 │ reserviert (= 0) │
- │ 7 │ reserviert (= 0) │
- └─────┴────────────────────────────────────────┘
-
- Im Falle eines Fehlers werden nur die korrekten Werte
- übernommen, die anderen bleiben unverändert.
- Die Werte der Register SE und OF werden immer geändert.
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 108
-
-
-
- Funktion 3 - Aufruf von MDEBUG
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 3
- DS:SI zeigt auf das Passwort
- ES = Segment des anzuzeigenden Speicherbereichs
- DI = Offset des anzuzeigenden Speicherbereichs
-
- Die Werte werden in die Register SE und OF geladen und
- die Register-Kombination SE:OF wird als Monitor-Start-
- Adresse genommen.
-
- Ausgabe: AX = 0FFFFh ->> Aufruf nicht erlaubt
- AX = 0FFFEh ->> Passwort inkorrekt
- AX = 0FFFDh ->> Aufruf nicht erlaubt aufgrund eines
- inkorrekten Bildschirmmodus
-
- Falls das Passwort korrekt abgefragt werden konnte,
- sind die Register SE und OF geändert und werden für die
- Monitor-Start-Adresse genommen.
-
- Falls ok, wird kein Register von MDEBUG verändert.
- Das Flag für den automatischen Aufruf von MDEBUG falls
- DOS nicht aktiv ist wird gelöscht.
-
-
- Funktion 4 - Aufruf von MDEBUG mit den akt. Werten
- ──────────────────────────────────────────────────
-
- Eingabe: AH = 4
- DS:SI zeigt auf das Passwort
-
- Ausgabe: AX = 0FFFFh ->> Aufruf nicht erlaubt
- AX = 0FFFEh ->> Passwort inkorrekt
- AX = 0FFFDh ->> Aufruf nicht erlaubt aufgrund
- eines falschen Bildschirmmodus
-
- Falls ok, wird kein Register von MDEBUG verändert.
- Das Flag für den automatischen Aufruf von MDEBUG falls
- DOS nicht aktiv ist wird gelöscht.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 109
-
-
-
- Funktion 5 - Lösche oder Setze Flags von MDEBUG
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 5
- DS:SI zeigt auf das Passwort
- BL = Neuer Wert des Flags
- BL = 0 ->> Aufruf von MDEBUG erlauben
- BL <> 0 ->> Aufruf von MDEBUG verbieten
-
- Ausgabe: AX = 0FFFEh ->> Passwort inkorrekt
- AX = 0FFFDh ->> Bildschirmmodus inkorrekt
-
- sonst:
- BL = Alter Wert des Flags
- BH = Alter Wert des Flags für den Aufruf von MDEBUG
- falls DOS nicht aktiv ist
-
- Das Flag für den automatischen Aufruf von MDEBUG falls
- DOS nicht aktiv ist wird gelöscht.
-
- Diese Funktion sollte NIEMALS aus MDEBUG heraus auf-
- gerufen werden!
-
-
- Funktion 6 - Ermittle Passwort-Status
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 6
- (Keine Abfrage des Passwortes!)
-
- Ausgabe: AL = 0 ->> Passwort inaktiv
- AL = 1 ->> Passwort aktiv
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 110
-
-
-
- Funktion 7 - Ermittle aktiven Teil von MDEBUG
- ───────────────────────────────────────────────────────────────────
-
- Eingabe: AH = 7
- DS:SI zeigt auf das Passwort
-
- 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
-
- Die zurückgegebenen Werte sind nur korrekt, falls
- MDEBUG im Moment nicht aktiv ist.
-
-
-
- Sonstiges zum User-Int
- ───────────────────────────────────────────────────────────────────
-
- Der Fehler 'Aufruf nicht erlaubt' tritt auf, falls das Aktiv-Flag
- von MDEBUG noch gesetzt ist. Dies passiert z.B. falls MDEBUG über
- einen nicht zurückkehrenden Interrupt (23h, 24h, etc.) verlassen
- wird.
- In diesem Fall muß das Flag durch einen Aufruf von MDEBUG mit dem
- Parameter 'SET' oder durch den Aufruf der Funktion 05h des User-
- Ints mit BL = 0 zurückgesetzt werden.
-
- Falls der User-Int mit einer unbekannten Funktionsnummer aufgerufen
- wird, gibt er den Fehlercode 0FFFCh zurück.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 111
-
-
-
-
-
-
-
-
-
-
-
-
-
- Anhang A
-
- Fehlermeldungen von MDEBUG
- ──────────────────────────
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 112
-
-
-
- Fehlermeldungen beim Aufruf von MDEBUG
- ──────────────────────────────────────
-
- Nachfolgend die Auflistung aller möglichen Fehlermeldungen von
- MDEBUG jeweils, falls nötig, inclusive einer kurzen Erläuterung der
- Fehlerursache.
-
- Fehler, die zum Abbruch des Programms führen, geben zusätzlich die
- Meldung
-
- Programmausführung beendet.
-
- aus.
-
-
- ■ Nicht genügend freier Speicher vorhanden!
-
- Der transiente Teil von MDEBUG benötigt mindestens 64 K freien
- Speicher.
-
-
- ■ MDEBUG: Falsche DOS-Version, es ist mindestens Version 3.0 erforderlich!
-
- Da in diesem Fall das Programm über den Interrupt 20h beendet
- wird, kann kein Errorlevel zurückgegeben werden.
-
-
- ■ Der Parameter MAKE ist nur in der Vollversion möglich!
-
- Betr.: Parameter MAKE in der Shareware-Version.
-
- Bevor der Parameter in der Vollversion genutzt werden kann, muß
- die Registrierungs-Nummer mit dem Programm SETREGNR.EXE in die
- Datei MDEBUG.COM eingetragen worden sein!
-
-
- ■ MDEBUG: Fehler bei der Speicher-Freigabe!
- Warnung: Die MCB-Liste kann zerstört sein!
-
- Betr.: Parameter EXIT
-
- Der Speicher des residenten MDEBUG konnte nicht freigegeben
- werden. Da sehr wahrscheinlich die Speicherverwaltung von MS-DOS
- zerstört ist, sollte das System neu gebootet werden.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 113
-
-
-
- ■ Interrupt Nr. <nn> ist schon belegt!
-
- Betr.: Parameter INT
-
- Der Offset- oder Segment-Wert in der Interrupt-Tabelle für den
- angegebenen Interrupt bzw. der Voreinstellung ist ungleich Null,
- d.h. MDEBUG geht davon aus, daß er schon belegt ist.
-
- Bei einem Aufruf mit dem Parameter 'SET' wird der User-Int der
- residenten Version nicht verändert.
-
- Der Fehler kann nicht auftreten falls der Parameter 'INT' mit dem
- Schalter ',N' angegeben wird.
-
-
- ■ MDEBUG: MDEBUG ist nicht letztes Programm in der Interrupt-Kette
- für den Interrupt 08h!
- MDEBUG wurde nicht aus dem Speicher entfernt.
-
- MDEBUG: MDEBUG ist nicht letztes Programm in der Interrupt-Kette
- für den Interrupt 09h!
- MDEBUG wurde nicht aus dem Speicher entfernt.
-
- Betr.: Parameter EXIT
-
- Nach MDEBUG wurde mindestens ein Programm geladen, daß den
- Interrupt 08h und/oder den Interrupt 09h verbiegt. Soll MDEBUG
- aus dem Speicher entfernt werden, müssen vorher alle nach MDEBUG
- geladenen Programme, die einen der Interrupts 08h oder 09h ver-
- biegen, entfernt werden.
-
-
- ■ MDEBUG: Das Passwort ist fehlerhaft!
-
- Betr.: Parameter EXIT oder SET
-
- Es wurde versucht, die Parameter einer mit einem aktivem Passwort
- installierten Version von MDEBUG durch eine Version mit einem
- anderen oder nicht-installierten Passwort zu ändern (bzw. das
- Programm aus dem Speicher zu entfernen).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 114
-
-
-
- ■ MDEBUG: Unbekannte Version von MDEBUG installiert!
-
- Betr.: Installieren von MDEBUG oder ändern einer installierten
- Version von MDEBUG
-
- Dieser Fehler tritt auf, falls mehrere Versionen von MDEBUG
- gemischt verwendet werden sollen, oder ein anderes speicher-
- residentes Programm mit dem Namen 'MDEBUG' installiert ist.
- Der Fehler kann auch auftreten, falls MDEBUG durch ein anderes
- Programm aus dem Speicher entfernt wurde.
- Eine Installation dieser Version von MDEBUG ist dann nicht
- möglich.
-
-
- ■ MDEBUG: Falscher Parameter angegeben!
-
-
- ■ MDEBUG: Fehler beim Lesen der Datei <name>
-
- Betr.: Parameter &name
-
- Der Inhalt des PSP wird nicht verändert.
- Der Fehler führt nicht zum Programm-Abbruch.
-
-
- ■ 00000 Bytes aus der Datei <name>
- nach nnnnh:mmmmh eingelesen
-
- Betr.: Parameter &name
-
- Dies ist kein Fehler als solcher. Die Meldung wird ausgelöst
- durch eine Eingabedatei für den Parameter '&name' ohne den
- Schalter ',N' bei der am Anfang soviele Kommentare stehen,
- daß der gesamte Puffer für die Datei mit ihnen belegt ist und
- kein Platz mehr für den eigentlichen Dateiinhalt ist. Die Kom-
- mentare in der Eingabedatei sollten deshalb, falls möglich, ans
- Ende der Datei gestellt werden.
- Der Fehler führt nicht zum Programm-Abbruch.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 115
-
-
-
- ■ MDEBUG: Fehler beim Schreiben der Datei <name>
-
- Betr.: Parameter *name
-
- Falls die Datei schon teilweise geschrieben wurde, wird sie nicht
- gelöscht.
- Der Fehler führt nicht zum Programm-Abbruch.
-
-
- ■ 00000 Bytes aus dem PSP ab nnnnh:mmmmh in die Datei <name>
- gespeichert.
-
- Betr.: Parameter *name
-
- Dies ist kein Fehler als solcher. Die Meldung besagt nur, daß
- am Offset 'mmmm' im PSP der residenten Version von MDEBUG ein
- Null-Wort steht, daß von MDEBUG als Ende-Kennung genommen wird.
- (da der Schalter ',N' nicht angegeben wurde)
- Der Fehler führt nicht zum Programm-Abbruch.
-
-
- ■ MDEBUG: Angegebener Name für die Hilfstextdatei ist fehlerhaft!
- ■ MDEBUG: Hilfstextdatei <name.ext> nicht gefunden.
- ■ MDEBUG: Fehler beim Lesen der Hilfstextdatei <name.ext>
- ■ MDEBUG: Die Hilfstextdatei <name.ext> hat ein falsches Format.
-
- Betr.: Parameter HELP
-
- Der Hilfstext einer residenten Version wird nicht verändert.
-
-
- ■ MDEBUG: Die Hilfstextdatei ist zu groß und wurde nicht vollständig
- gelesen.
-
- Betr.: Parameter HELP
-
- Die Online-Hilfe ist trotzdem verfügbar, allerdings nur die voll-
- ständig geladenen Zeilen der angegebenen Datei.
- Der Fehler führt nicht zum Programm-Abbruch.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 116
-
-
-
- ■ MDEBUG: Die Hilfstext-Routinen sind in der residenten Version
- nicht vorhanden!
-
- Betr.: Parameter HELP
-
- Über den Parameter 'HELP' kann nur ein Hilfstext in eine
- residente Version eingelesen werden, falls diese mit Online-Hilfe
- installiert wurde. (durch einen der Parameter 'HELP' oder 'BUF'
- bei der Erstinstallation)
-
-
- ■ MDEBUG: Der Puffer der residenten Version ist zu klein!
- Die Hilfstextdatei wurde nicht vollständig gelesen.
-
- Betr.: Parameter HELP zur Änderung einer residenten Version
-
- Es werden nur die vollständig gelesenen Zeilen in die residente
- Version übernommen.
- Der Fehler führt nicht zum Programm-Abbruch.
-
-
- ■ MDEBUG: Der Parameter MAKE ist nicht möglich!
-
- Betr.: Parameter MAKE
-
- Die Parameter
-
- 'STH', 'SET', 'EXIT', '&name', '*name',
- '#', 'DEF' und '?'
-
- dürfen nicht mit 'MAKE' zusammen angegeben werden.
-
-
- ■ MDEBUG: Fehler beim Löschen von MDEBUG.BAK!
- MDEBUG: Fehler beim Umbenennen von MDEBUG.COM!
- MDEBUG: Fehler beim Erstellen von MDEBUG.COM!
-
- Betr.: Parameter MAKE
-
- Entweder kann die Datei MDEBUG.COM nicht umbenannt werden oder
- die Datei MDEBUG.BAK kann nicht gelöscht werden oder die Datei
- MDEBUG.COM kann nicht geschrieben werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 117
-
-
-
- ■ MDEBUG: Angegebene Prozessnummer ist fehlerhaft!
-
- Betr.: Parameter PRO
-
-
- ■ MDEBUG: Angegebener Wert für das Bildschirmsegment ist fehlerhaft!
-
- Betr.: Parameter TEXT
-
-
- ■ MDEBUG: Angegebene Bildschirmseite für den Parameter "text" ist
- fehlerhaft!
-
- Betr.: Parameter TEXT
-
-
- ■ MDEBUG: Angegebene Puffer-Größe ist fehlerhaft!
-
- Betr.: Parameter BUF
-
-
- ■ MDEBUG: Angegebene Interrupt-Nummer ist fehlerhaft!
-
- Betr.: Parameter INT
-
-
- ■ MDEBUG: Angegebene Interpreter-Farb-Nummer ist fehlerhaft!
-
- Betr.: Parameter CoD
-
-
- ■ MDEBUG: Angegebene Monitor-Farb-Nummer ist fehlerhaft!
-
- Betr.: Parameter CoM
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 118
-
-
-
- ■ MDEBUG: Angegebene Hilfsfarbe <m> ist fehlerhaft!
-
- Betr.: Parameter CoHm
-
- <m> wird durch die Nummer der Hilfsfarbe, die geändert werden
- sollte ersetzt.
-
-
- ■ MDEBUG: Angegebene Interpreter-Start-Zeile ist fehlerhaft!
-
- Betr.: Parameter RoD
-
-
- ■ MDEBUG: Angegebene Monitor-Start-Zeile ist fehlerhaft!
-
- Betr.: Parameter RoM
-
-
- ■ MDEBUG: Angegebene Hilfsfenster-Start-Zeile ist fehlerhaft!
-
- Betr.: Parameter RoH
-
-
- ■ MDEBUG: Angegebenes Monitor-Segment ist fehlerhaft!
-
- Betr.: Parameter SE=nnnn
-
-
- ■ MDEBUG: Angegebenes Register für das Segment des Monitors ist
- fehlerhaft!
-
- Betr.: Parameter SE=reg
-
-
- ■ MDEBUG: Angegebener Monitor-Offset ist fehlerhaft!
-
- Betr.: Parameter OF=nnnn
-
-
- ■ MDEBUG: Angegebenes Register für den Offset des Monitors ist
- fehlerhaft!
-
- Betr.: Parameter OF=reg
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 119
-
-
-
- ■ MDEBUG: Angegebener Hotkey ist fehlerhaft!
- ■ MDEBUG: Angegebener Status der Umschalt-Tasten ist fehlerhaft!
-
- Betr.: Parameter KEY
-
-
- ■ MDEBUG: Angegebener Dateiname für den Parameter "&name" ist fehlerhaft!
- ■ MDEBUG: Angegebener Offset für den Parameter "&name" ist fehlerhaft!
- ■ MDEBUG: Angegebene Länge für den Parameter "&name" ist fehlerhaft!
- ■ MDEBUG: Angegebener Schalter für den Parameter "&name" ist fehlerhaft!
-
- Betr.: Parameter &name
-
-
- ■ MDEBUG: Angegebener Dateiname für den Parameter "*name" ist fehlerhaft!
- ■ MDEBUG: Angegebener Offset für den Parameter "*name" ist fehlerhaft!
- ■ MDEBUG: Angegebene Länge für den Parameter "*name" ist fehlerhaft!
- ■ MDEBUG: Angegebener Schalter für den Parameter "*name" ist fehlerhaft!
-
- Betr.: Parameter *name
-
-
- ■ MDEBUG: Das Environment konnte nicht freigegeben werden!
- MDEBUG wurde nicht installiert!
-
-
- ■ MDEBUG: Das Programm konnte nicht resident gemacht werden!
- MDEBUG wurde nicht installiert!
-
- Dieser Fehler kann nur auftreten, falls der Interrupt 21h
- aufgerufen mit der Funktionsnummer 31h zurückkehrt! Falls der
- Fehler auftritt, wird MDEBUG über die Funktion 4Ch des Interrupts
- 21h beendet (d.h. es bleibt NICHT speicherresident!)
-
-
- ■ MDEBUG: Das Programm konnte nicht korrekt beendet werden!
- Starte neuen Versuch ...
-
- Dieser Fehler kann nur auftreten, falls der Interrupt 21h auf-
- gerufen mit der Funktionsnummer 4Ch zurückkehrt. In diesem Fall
- versucht MDEBUG sich über den Interrupt 20h zu beenden.
-
-
- ■ Interner Fehler, bitte den Autor kontaktieren!
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 120
-
-
-
- Meldungen des Interpreters von MDEBUG
- ─────────────────────────────────────
-
- ■ *** Taste ***
-
- Aufforderung des W-Befehls eine Taste zu betätigen.
-
-
- ■ G-Command aktiv
-
- Diese Meldung wird angezeigt während ein G-Befehl bearbeitet wird.
-
-
- ■ ! Syntax Error
-
- Ein Interpreter-Befehl wurde fehlerhaft eingegeben.
-
-
- ■ ! ESC pressed
-
- Der W-Befehl wurde mit der Taste <ESC> quittiert.
-
-
- ■ ! BREAK-key pressed
-
- Die BREAK-Taste wurde gedrückt.
-
-
- ■ ! Busy-Flag not Zero
-
- Der angegebene Befehl kann nur ausgeführt werden, falls DOS nicht
- aktiv ist.
-
-
- ■ ! ¿-Command ended
-
- Der Wert des Operanden des ¿-Befehls ist gleich 0 (->> FALSE).
-
-
- ■ ! Division by Zero
-
- Es wurde versucht, durch Null zu teilen.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 121
-
-
-
- ■ ! 1. COMMAND-Shell aktiv
-
- Dieser Fehler tritt auf, falls der von MDEBUG unterbrochene Pro-
- zess die oberste Ebene des aktuellen Shell-Programmes ist, und
- versucht wird, diesen über die Taste <CTRL-F10> abzubrechen.
-
-
- ■ ! Invalid C-Driver
-
- MDEBUG hat einen veralteten Kommandotreiber in der Interrupt-
- Kette für den Interrupt 2Fh ermittelt. MDEBUG unterdrückt in
- diesem Fall ALLE Aufrufe aller Kommandotreiber. MDEBUG überprüft
- bei jedem Aufruf die installierten Kommandotreiber, so daß der
- Fehler durch Entfernen des veralteten Kommandotreibers behoben
- werden kann.
-
-
- ■ ! Invalid G-Driver
-
- MDEBUG hat einen veralteten Bildschirmtreiber in der Interrupt-
- Kette für den Interrupt 2Fh ermittelt. MDEBUG unterdrückt in
- diesem Fall ALLE Aufrufe des Bildschirmtreibers. MDEBUG überprüft
- bei jedem Aufruf den installierten Bildschirmtreiber, so daß der
- Fehler durch Entfernen des veralteten Bildschirmtreibers behoben
- werden kann.
-
-
- ■ ! Invalid C- and G-Driver
-
- Die beiden vorherigen Fehler zusammen sind aufgetreten.
-
-
- ■ ! Not Found
-
- Diese Meldung gibt der SH-Befehl aus, falls der Suchstring nicht
- gefunden wurde.
-
-
- ■ ! Unknown Error
-
- Dieser Befehl kann nur auftreten, falls ein Kommandotreiber
- einen unbekannten Fehlercode zurückliefert.
-
-
- Weitere Meldungen des Interpreters von MDEBUG
- ─────────────────────────────────────────────
-
- Jeder Kommandotreiber kann zusätzliche Fehlermeldungen bereit-
- stellen.
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 122
-
-
-
-
-
-
-
-
-
-
-
-
- Anhang B
-
- Programm-Interna
- ────────────────
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 123
-
-
-
- Hinweise für die Fehlersuche - Trouble-Shooting
- ───────────────────────────────────────────────
-
- Falls bei der Arbeit mit MDEBUG ein Fehler auftritt, bitte zuerst
- einmal die nachfolgenden Informationen durchlesen, und überprüfen,
- ob der Fehler damit gefunden werden kann:
-
- ■ Es finden keinerlei Überprüfungen statt, ob eine Lese/Schreib-
- operation über eine Segment-Adresse geht.
-
- Falls z.B. das Wort an der Adresse nnnn:0FFFFh gelesen wird, so
- wird das Lowbyte von der Adresse nnnn:0FFFFh und das Highbyte von
- der Adresse nnnn:0000 gelesen.
-
- Allerdings berücksichtigt MDEBUG, daß die Prozessoren ab dem
- 80286 einen Wortzugriff über eine Segmentgrenze nicht korrekt
- ausführen und teilt deshalb wortweise Speicherzugriffe in jeweils
- zwei byteweise Speicherzugriffe.
-
-
- ■ Ein Aufruf über den Hotkey sollte nicht während einer Disketten-
- oder Plattenoperation (->> LED des Laufwerkes ist an) erfolgen!
-
-
- ■ Das Trap-Flag sollte bei der Benutzung von MDEBUG immer gelöscht
- sein. Ansonsten sind die Auswirkungen der Befehle nicht vorher-
- sehbar (bis hin zum Systemabsturz!).
-
-
- ■ Ein 'INT 021'-Befehl sollte nur gegeben werden, wenn das Busy-
- Flag auf 0 steht, d.h. DOS nicht aktiv ist.
-
- Auf der Ebene des COMMAND.COM ist das Busy-Flag gesetzt bis ein
- interner oder externer Befehl ausgeführt wird.
-
- Das Busy-Flag gibt den Wert des DOS-Busy-Flags verODERt mit dem
- Wert des Critical-Error-Flags wieder.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 124
-
-
-
- ■ MDEBUG benutzt im Initialisierungsteil folgende undokumentierte
- Funktionen des Interrupt 21h:
-
- ■ Funktion 52h: Ermittle Adresse des DOS-Info-Blocks (DIB)
- Ausgabe: ES:BX -> DIB (= 'List of Lists')
- und
- ■ Funktion 34h: Ermittle Adresse des DOS-Busy-Flags
- Ausgabe (ab DOS 3.0):
- ES:BX -> DOS-Busy-Flag (1 Byte)
- ES:BX-1 -> Critical-Error-Flag
- (1 Byte)
-
-
- ■ MDEBUG wertet das aktuelle PSP aus um zu ermitteln, ob der beim
- Aufruf unterbrochene Prozess die oberste Ebene des SHELL-
- Prozesses (normalerweise das Programm COMMAND.COM) ist.
-
- Zur Ermittlung der Adresse des aktuellen PSP wird die Unterfunk-
- tion 62h des Interrupt 21h benutzt. Diese ist immer möglich, d.h.
- sie kann auch aufgerufen werden falls DOS schon aktiv ist.
-
- Der COMMAND.COM (oder jeder andere Kommando-Interpreter, z.B.
- 4DOS.COM) ist das einzige Programm, dessen Loader-Identifikation
- im PSP (Wort, Offset 16h) auf das eigene Code-Segment zeigt.
-
- Bei allen anderen Programmen enthält die Loader-Identifikation
- das Segment des Programmes, welches das Programm aufgerufen hat.
- (im Normalfall das Segment des COMMAND.COM)
-
- Abgebrochen wird das Programm dann über die Funktion 4Ch des
- Interrupt 21h.
-
- MDEBUG benutzt im residenten Teil (außer den o.a. Ausnahmen)
- keine Funktionen des DOS-Interrupts 21h.
-
-
- ■ MDEBUG ermittelt seinen aktuellen Namen und das Directory in dem
- die Datei 'MDEBUG.COM' steht aus dem Environment. Das Segment des
- Environments wird aus dem Wort am Offset 2Ch im PSP ermittelt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 125
-
-
-
- ■ Zum Lesen und Setzen von Interrupt-Vektoren im transienten Teil
- werden nur die Funktionen 25h und 35h des Interrupts 21h benutzt.
-
-
- ■ MDEBUG arbeitet in allen Bildschirmmodi mit mindestens 80 Zeichen
- pro Zeile und mindestens 25 Zeilen pro Seite.
-
- MDEBUG ermittelt alle Bildschirm-Werte im residenten Teil über
- das BIOS-Segment. Der Interrupt 10h wird im residenten Teil nur
- für das Ändern der Cursorposition und der Cursorform verwendet.
-
- Zur Vermeidung eines Fehlers in manchen älteren BIOSsen sichert
- MDEBUG vor jedem Aufruf des Interrupt 10h den Inhalt des Regis-
- ters BP.
-
- MDEBUG wertet zur Ermittlung der Bildschirm-Werte die folgenden
- Speicherstellen aus:
-
- ┌─────────────┬─────────┬────────────────────────────────────┐
- │ Adresse │ Länge │ Inhalt │
- ╞═════════════╪═════════╪════════════════════════════════════╡
- │ 0040h:0049h │ 1 Byte │ Videomodus │
- │ 0040h:004Ah │ 1 Wort │ Anzahl der Bildschirmspalten │
- │ 0040h:004Ch │ 1 Wort │ Länge einer Bildschirmseite │
- │ 0040h:004Eh │ 1 Wort │ Offset der akt. Bildschirmseite │
- │ 0040h:0050h │ 8 Byte │ Array der Cursorpositionen │
- │ 0040h:0060h │ 1 Wort │ Cursorform │
- │ 0040h:0062h │ 1 Byte │ aktuelle Bildschirmseite │
- │ 0040h:0063h │ 1 Wort │ I/O-Basisadresse des │
- │ │ │ Videocontrollers │
- │ 0040h:0065h │ 1 Byte │ Inhalt des CRT-Modusregisters │
- │ 0040h:0084h │ 1 Byte │ Anzahl der Zeilen pro Seite -1 │
- └─────────────┴─────────┴────────────────────────────────────┘
-
- Die Anzahl der Zeilen pro Seite wird über das Byte bei 40h:84h
- ermittelt. Falls der Inhalt dieser Speicherstelle ungleich 0 ist,
- wird er zur Ermittlung der Anzahl Zeilen pro Seite genommen. Ist
- der Wert gleich 0, so geht MDEBUG von 25 Zeilen pro Seite aus.
-
- Das Byte bei 40h:84h enthält bei CGA- und HGC-Karten normaler-
- weise 0, bei EGA- und VGA-Karten aber die Anzahl der Zeilen/Seite
- minus 1. Da es auch HGC/CGA-Karten mit der Möglichkeit zur
- Darstellung von mehr als 25 Zeilen gibt, wird hier nicht auf die
- Existenz einer EGA- oder VGA-Karte getestet.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 126
-
-
-
- Wenn die aktuelle Seite durch den Parameter 'TEXT' explizit an-
- gegeben ist, geht MDEBUG immer von einem Bildschirm-Modus mit 80
- Zeichen pro Zeile und 25 Zeilen pro Seite aus.
-
- Bei Hercules-Karten wird der Modus (Graphik oder Text) über das
- CRT-Modusregister und über das Lightpen-Register (Datenregister
- 10h des Video-Controllers) ermittelt.
-
- Als Bildschirmsegment wird bei Hercules-Karten B000h und für alle
- anderen Karten B800h genommen.
-
- Die Daten des aktuellen Bildschirmmodi werden nach jedem Aufruf
- über den Hotkey, den User-Int, dem automatischen Aufruf (über
- die Taste <ALT-F5>) oder einen extra-Interrupt und nach dem
- Betätigen der Taste <ALT-F9> ermittelt.
-
- Alle Ausgaben erfolgen direkt in den Bildschirmspeicher.
-
- Für Fehlermeldungen im Interpreter wird das Bit 7 des Farbattri-
- buts gesetzt. Je nach dem aktuellen Modus der Graphik-Karte wird
- damit eine blinkende Anzeige oder eine helle Farbe für die
- Fehlermeldung gewählt.
-
- Hinweis:
-
- Falls während eines Aufrufs von MDEBUG kein Cursor erscheint, muß
- die Variable MDebugCursor verändert werden (siehe Konstante P4).
-
-
- ■ Akustische Ausgaben erfolgen direkt über die Ports 42h und 43h.
-
-
- ■ MDEBUG setzt vorraus, daß zeitkritische Interrupt-Routinen dafür
- sorgen, daß sie nicht unterbrochen werden können (mit den CLI-
- und STI-Befehlen).
-
-
- ■ Ein Aufruf über den Hotkey wird über den Interrupt 9h erkannt.
- Der eigentliche Aufruf von MDEBUG erfolgt aber in der Routine
- für den Interrupt 8h (indirekter Aufruf).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 127
-
-
-
- Die Routine für den Interrupt 9h geht von folgenden Port-Adressen
- aus:
-
- ┌──────┬─────────────────────────────────────────────────────┐
- │ Port │ Bedeutung │
- ╞══════╪═════════════════════════════════════════════════════╡
- │ 60h │ Datenport der Tastatur │
- │ 61h │ Statusport der Tastatur für die Acknowledge-Meldung │
- │ 20h │ Statusport des Interrupt-Controllers für die EOI- │
- │ │ Meldung (EOI-Meldung = 20h) │
- └──────┴─────────────────────────────────────────────────────┘
-
- MDEBUG unterscheidet hierbei nicht zwischen einer 'normalen' und
- einer MF2- oder AT-Tastatur.
-
-
- ■ Der Interrupt-Handler für den Interrupt 9h fängt, falls MDEBUG
- aktiv ist, die Tasten <CTRL-C>, <CTRL-2> und <CTRL-BREAK> bzw.
- <CTRL-ScorllLock> komplett ab. D.h. diese Tasten können auch
- in einem Kommando-Treiber NICHT verwendet werden!
-
-
- ■ Alle Tastatureingaben werden von MDEBUG über eine interne Routine
- ermittelt, d.h. MDEBUG benutzt nicht den Interrupt 16h.
-
- TSR-Programme, die den Aufruf über den Interrupt 16h erkennen,
- können daher während eines Aufrufes von MDEBUG also nur über den
- Interpreter-Befehl
-
- 'MOV AH,0 ^ INT 16' bzw. 'MOV AH,10 ^ INT 16'
-
- (oder einen äquivalenten G- bzw. B-Befehl) aufgerufen werden.
-
- Ausnahme hiervon:
- Ab DOS 5.0 benutzt MDEBUG wieder den Interrupt 16h benutzt, da
- ansonsten ein Aufruf von MDEBUG nicht möglich ist, falls die
- Shell von DOS aktiv ist. MDEBUG benutzt in diesem Fall, falls
- möglich d.h. von der Routine für den Interrupt 16h unterstützt,
- die Funktionen 10h, 11h und 12h für die Ermittlung der Tastatur-
- eingaben. Falls die Funktionen 1xh vom BIOS nicht unterstützt
- werden, verwendet MDEBUG die alten Funktionen 0h, 01h und 02h.
- MDEBUG überprüft nur einmal im Initialisierungsteil ob die erwei-
- terten Funktionen 1xh verwendet werden können!
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 128
-
-
-
- MDEBUG sichert während eines Aufrufs alle Daten der Tastatur-
- verwaltung. Dies sind folgende Speicherstellen:
-
- ┌─────────────┬─────────┬────────────────────────┐
- │ Adresse │ Länge │ Inhalt │
- ╞═════════════╪═════════╪════════════════════════╡
- │ 0040h:001Ah │ 1 Wort │ Tastatur-Head-Pointer │
- │ 0040h:001Ch │ 1 Wort │ Tastatur-Tail-Pointer │
- │ 0040h:001Eh │ 32 Byte │ Tastatur-Puffer │
- │ 0040h:0080h │ 1 Wort │ Tastatur-Puffer-Anfang │
- │ 0040h:0082h │ 1 Wort │ Tastatur-Puffer-Ende │
- └─────────────┴─────────┴────────────────────────┘
-
-
- ■ MDEBUG belegt die Interrupt-Vektoren 09h (Hardware-Interrupt für
- die Tastatur) und 08h (Hardware-Interrupt für die Uhr) und evtl.
- einen der Interrupts zwischen 60h und 67h als User-Int.
-
- Während der Installierung von MDEBUG und während eines Aufrufs
- zur Änderung der Werte eine residenten Version werden außerdem
- die Interruptvektoren 1Bh, 23h und 24h temporär auf eigene
- Routinen umgeleitet. Die Interrupt-Vektoren 23h und 24h werden
- nicht wieder zurückgesetzt (macht DOS bei Programm-Ende).
-
- Ein Programmabbruch während des Aufrufes von MDEBUG.COM zur
- Installation bzw. Änderung einer residenten Version über die
- Tasten <CTRL-C> oder <CTRL-Break> ist nicht möglich, kritische
- Fehler (MS-DOS: Retry, Ignore, Abort) werden abgefangen.
-
-
- ■ MDEBUG benutzt einen eigenen Stack. Dieser ist mit 100 Worten
- deklariert. Da der Stack direkt hinter dem PSP liegt, wird bei
- einem Stack-Überlauf aber zuerst das - von MDEBUG nicht mehr
- benötigte - PSP von MDEBUG überschrieben, so das sich die max.
- Stack-Größe mit
-
- 200 + 3 (JMP-Befehl) + 256 (PSP) = 459 Bytes = 229 Worte
-
- ergibt.
-
- Bisher haben sich aber die 100 Worte für den Stack als völlig
- ausreichend erwiesen.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 129
-
-
-
- ■ Der Code zur Ausführung von G-, B- und I-Befehlen wird jeweils
- neu ermittelt und in den Programmcode eingepatcht (selbstmodifi-
- zierender Code).
-
- MDEBUG benutzt zusätzlich noch in einigen internen Routinen aus
- Geschwindigkeits-Gründen selbstmodifizierenden Code.
-
-
- ■ Für Routinen zur Überprüfung, ob MDEBUG installiert ist gilt:
-
- Alle folgenden Versionen (auch diese) schreiben in ihren MCB ab
- dem Offset 08h den Namen des Programmes ('MDEBUG ').
-
- Ab DOS 4.00 wird dies schon vom Betriebssystem so gemacht; bei
- DOS-Versionen älter als 4.00 ist dieser Speicherbereich un-
- genutzt.
-
- Die Versionen werden sich nur durch die Versionskennung, die über
- den User-Int zurückgegeben wird, unterscheiden lassen.
-
- Der User-Int wird immer ein Interrupt zwischen 60h und 67h sein.
-
- Direkt vor der Routine für den User-Int - d.h. der Einsprung-
- Stelle der Interrupt-Routine - wird immer die Kennung 'USERINT'
- stehen.
- Die bestehenden Funktionen des User-Interrupts werden auf jeden
- Fall beibehalten; Erweiterungen des Funktionsumfanges sind aber
- möglich.
-
-
- ■ MDEBUG und alle Utils geben alle Meldungen und Fehlermeldungen
- des transienten Teils über die Funktion 40h des Interrupt 21h auf
- die Standard-Ausgabe aus. Sollte dabei ein Fehler auftreten (z.B.
- falls die Ausgabe in eine Datei umgelenkt wird), so werden alle
- Meldungen auf das Error-Handle 2 ausgegeben. Sollte auch dies
- nicht möglich sein, so unterdrücken MDEBUG und alle Utils die
- restlichen Meldungen während der Ausführung.
-
-
- ■ MDEBUG und alle residenten Utils und Treiber schließen vor dem
- Beenden des transienten Teils alle offenen Handles und geben ihr
- Environment frei.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 130
-
-
-
- Stack-Überlauf
- ──────────────
-
- Falls bei Benutzung von MDEBUG ein 'Interner Stapelüberlauf' das
- System zum Absturz bringt (erst ab DOS-Version 3.3), muß nach
- dem Neustart des Computers in der Datei CONFIG.SYS der Wert für
- den STACKS-Befehl erhöht oder auf 0,0 gesetzt werden und das
- System neu gebootet werden. (siehe DOS-Handbuch)
-
- Dies kann passieren, falls über MDEBUG öfter Prozesse während
- der Ausführung einer Interrupt-Routine abgebrochen werden. Falls
- der abgebrochene Interrrupt von der STACK-Verwaltung noch unter-
- stützt wird, ist der dem unterbrochenem Interrupt zugeordnete
- STACK-Frame dann immer noch als belegt gekennzeichnet und kann von
- der STACK-Verwaltung nicht mehr verwendet werden.
-
- Falls MDEBUG über den Hotkey aufgerufen wurde und der Interrupt
- 9h immer noch über die Stack-Verwaltung läuft, ist der STACK-
- Frame der dem Interrupt 9h beim Aufruf zugeordnet war, ebenfalls
- von der STACK-Verwaltung nicht mehr verwendbar. Gleiches gilt beim
- Aufruf von MDEBUG über den Interrupt 8h nach dem Verlassen von
- MDEBUG über <ALT-F5> falls der Interrupt 8h auch noch über die
- STACK-Verwaltung läuft.
-
- Zur Vermeidung dieses Problems, sollte der Abbruch eines Prozesses
- über <CTRL-F10> nur äußerst sparsam verwendet werden. Vorbeugend
- sollte mit dem Programm FREESTCK die STACK-Frames nach mehreren
- Abbrüchen jeweils korrigiert werden. FREESTCK benötigt keine
- Parameter oder Benutzer-Eingaben; es läuft erst ab DOS 3.3.
-
- Aufruf von FREESTCK:
-
- FREESTCK <RETURN>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 131
-
-
-
- Tastatur-Codes
- ──────────────
-
- Als Funktionstasten werden von MDEBUG alle Tasten gewertet, die im
- Lowbyte des Scancodes einen der Werte 00h, 0E0h oder 0F0h und im
- Highbyte des Scancodes einen Wert ungleich 00h zurückliefern. Das
- Lowbyte wird allerdings nicht weiter berücksichtigt.
-
- Die ASCII-Zeichen 0E0h und 0F0h müssen über die Tasten-Kombination
- <ALT-ASCIICode> eingegeben werden, wobei MDEBUG davon ausgeht, daß
- das Highbyte in diesem Fall 0 ist.
-
- Von MDEBUG erwartete Tastatur-Codes der Funktions-Tasten:
- ('xxh' steht für 00h, E0h oder F0h)
-
- ┌──────────────────────────────┬───────┬─────────┬───────┬────────┐
- │ Taste [NumLock aus] mit ... │ │ SHIFT │ CTRL │ ALT │
- ╞══════════════════════════════╪═══════╪═════════╪═══════╪════════╡
- │ <PgDn> │ 51xxh │ │ 76xxh │ A1xxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <PgUp> │ 49xxh │ │ 48xxh │ 99xxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <Home> │ 47xxh │ │ 77xxh │ │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <End> │ 4Fxxh │ │ 75xxh │ │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <CursorLeft> │ 4Bxxh │ │ 73xxh │ │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <CursorRight> │ 4Dxxh │ │ 74xxh │ │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <CursorUp> │ 48xxh │ │ 8Dxxh │ 98xxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <CursorDown> │ 50xxh │ │ 91xxh │ A0xxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <Insert> │ 52xxh │ │ │ │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <Delete> │ 53xxh │ │ │ │
- └──────────────────────────────┴───────┴─────────┴───────┴────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 132
-
-
-
- ┌──────────────────────────────┬───────┬─────────┬───────┬────────┐
- │ Taste mit ... │ │ SHIFT │ CTRL │ ALT │
- ╞══════════════════════════════╪═══════╪═════════╪═══════╪════════╡
- │ <F1> │ 3Bxxh │ 54xxh │ 5Exxh │ 68xxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F2> │ 3Cxxh │ 55xxh │ 5Fxxh │ 69xxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F3> │ 3Dxxh │ 56xxh │ 60xxh │ 6Axxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F4> │ 3Exxh │ 57xxh │ 61xxh │ 6Bxxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F5> │ 3Fxxh │ 58xxh │ 62xxh │ 6Cxxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F6> │ 40xxh │ 59xxh │ 63xxh │ 6Dxxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F7> │ 41xxh │ 5Axxh │ 64xxh │ 6Exxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F8> │ 42xxh │ 5Bxxh │ 65xxh │ 6Fxxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F9> │ 43xxh │ 5Cxxh │ 66xxh │ 70xxh │
- ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
- │ <F10> │ 44xxh │ 5Dxxh │ 67xxh │ 71xxh │
- └──────────────────────────────┴───────┴─────────┴───────┴────────┘
-
-
- Die folgenden Tasten können nur in der Online-Hilfe benutzt werden
- und können dafür nicht umdefiniert werden (wohl aber im Monitor
- oder Interpreter):
-
- ┌──────────┬──────────────────────────────────────────────────────┐
- │ │ Eingabe über │
- │ ├────────────────────┬─────────────────────────────────┤
- │ │ die oberste │ <ALT-n> mit n im externen │
- │ Taste │ Tastenreihe │ Nummernblock │
- ╞══════════╪════════════════════╪═════════════════════════════════╡
- │ <ALT-1> │ 7800h │ 0001h │
- │ <ALT-2> │ 7900h │ 0002h │
- │ <ALT-3> │ 7A00h │ 0003h │
- │ <ALT-4> │ 7B00h │ 0004h │
- │ <ALT-5> │ 7C00h │ 0005h │
- │ <ALT-6> │ 7D00h │ 0006h │
- │ <ALT-7> │ 7E00h │ 0007h │
- │ <ALT-8> │ 7F00h │ 0008h │
- │ <ALT-9> │ 8000h │ 0009h │
- └──────────┴────────────────────┴─────────────────────────────────┘
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 133
-
-
-
- Make-Code der Aufruf-Taste
- ──────────────────────────
-
- MDEBUG erwartet folgende Make-Codes für die Hotkey-Taste:
-
- ┌─────────────┬───────────┐ ┌─────────────┬───────────┐
- │ ASCII-Code │ Make-Code │ │ ASCII-Code │ Make-Code │
- ╞═════════════╪═══════════╡ ╞═════════════╪═══════════╡
- │ 'A' │ 1Eh │ │ 'N' │ 31h │
- │ 'B' │ 30h │ │ 'O' │ 18h │
- │ 'C' │ 2Eh │ │ 'P' │ 19h │
- │ 'D' │ 20h │ │ 'Q' │ 10h │
- │ 'E' │ 12h │ │ 'R' │ 13h │
- │ 'F' │ 21h │ │ 'S' │ 1Fh │
- │ 'G' │ 22h │ │ 'T' │ 14h │
- │ 'H' │ 23h │ │ 'U' │ 16h │
- │ 'J' │ 17h │ │ 'V' │ 2Fh │
- │ 'I' │ 24h │ │ 'W' │ 11h │
- │ 'K' │ 25h │ │ 'X' │ 2Dh │
- │ 'L' │ 26h │ │ 'Y' │ 2Ch │
- │ 'M' │ 32h │ │ 'Z' │ 15h │
- └─────────────┴───────────┘ └─────────────┴───────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 134
-
-
-
- Verträglichkeit gegenüber anderen Programmen
- ────────────────────────────────────────────
-
-
- ■ Bei Aufruf von MDEBUG über den Hotkey während WORD läuft, wird im
- Graphikmodus kein akustisches Signal ausgegeben.
- Zudem kommt MDEBUG der Tastaturverwaltung von WORD ins Gehege so
- daß ein Aufruf von MDEBUG falls WORD läuft unterbleiben sollte.
-
- ■ Ein Maustreiber wird von MDEBUG nicht ausgeschaltet; eine Maus
- hat in MDEBUG aber keine Funktion.
-
- ■ Da MDEBUG die normalerweise von Debuggern benutzten Interrupts 01
- und 03 nicht benutzt, ist der Aufruf von MDEBUG aus 'normalen'
- Debuggern heraus problemlos möglich.
-
- ■ Bei manchen DOS-Versionen 3.2 ist teilweise schon eine Stack-
- Verwaltung wie ab DOS 3.3 implementiert. Hier lautet der Befehl
- für die Datei CONFIG.SYS aber 'STACK=n,m'.
- (siehe Stack-Überlauf).
- Das Programm FREESTCK.COM läuft aber erst ab DOS 3.3.
-
- ■ MDEBUG läuft auch unter 4DOS ab Version 3.0 fehlerfrei.
-
- ■ Falls ein Aufruf von MDEBUG abgebrochen wird, z.B. durch einen
- Befehl wie 'INT 20 <RETURN>', sind die Tastenkombination <CTRL-
- ScrollLock> bzw. <CTRL-BREAK>, <CTRL-C> und <CTRL-2> blockiert.
- Der Fehler kann durch den Aufruf von MDEBUG mit dem Parameter SET
- behoben werden.
-
- ■ MDEBUG läuft auch unter DOS 5.0 fehlerfrei.
-
- Ausnahme:
-
- Falls der Swapper von DOS 5.0 aktiv ist, kann (muß aber nicht!)
- ein Aufruf von MDEBUG das System zum Absturz bringen. Der Grund
- dieses Fehlers ist mir, aufgrund fehlender Dokumentation zum
- Swapper, leider noch nicht bekannt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 135
-
-
-
-
-
-
-
-
-
-
-
-
- Anhang C
-
- Installieren von MDEBUG
- ───────────────────────
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 136
-
-
-
- Installieren von MDEBUG
- ───────────────────────
-
- Normalerweise kann MDEBUG sofort ohne eine Installation genutzt
- werden.
-
- Allerdings ist es möglich eine Kopie von MDEBUG.COM, in der die
- Voreinstellungen für (fast) alle Parameter den eigenen Wünschen
- angepasst sind, zu erstellen.
-
- MDEBUG muß dazu mit dem Parameter 'MAKE' und den neuen Voreinstel-
- lungen für die zu ändernden Parameter aufgerufen werden.
- (Der Parameter 'MAKE' ist nur in der Vollversion implementiert!)
-
- Falls z.B. die Farbattribute für den Monitor und den Interpreter
- geändert werden sollen, lautet der Aufruf:
-
- MDEBUG MAKE CoD=3E CoM=47
-
- MDEBUG erstellt dann eine neue Kopie der Datei MDEBUG.COM in der
- die Voreinstellungen für die beiden angegebenen Parameter ent-
- sprechend geändert sind. Alle anderen Voreinstellungen werden hier-
- durch nicht verändert. Ein eventuell installiertes Passwort wird
- ebenfalls nicht verändert.
-
- Natürlich können beim Aufruf der neu erstellten Kopie von MDEBUG
- durch die explizite Angabe der Parameter die geänderten Voreinstel-
- lungen wieder überschrieben werden. Es ist auch ohne weiteres
- möglich, eine so erstellte Kopie von MDEBUG noch mal mit dem Para-
- meter 'MAKE' zur Änderung der neuen Voreinstellungen aufzurufen.
-
- Geändert werden können die Voreinstellungen für folgende Parameter:
-
- 'INT', 'KEY', 'STD', 'STM',
- 'CoM', 'CoD', 'CoHm',
- 'RoM', 'RoD', 'RoH',
- 'SEG=nnnn', 'SEG=reg', 'OFF=nnnn', 'OFF=reg',
- 'TEXT', 'GRAPH', 'PRO',
- 'HELP', 'NOHELP' und 'BUF'.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 137
-
-
-
- Ändern der Tastenbelegung von MDEBUG
- ────────────────────────────────────
-
- Mit Hilfe der Ausgaben von MDEBUG bei der Angabe des Parameters '#'
- kann die Tastenbelegung von MDEBUG den eigenen Wünschen angepasst
- werden.
-
- Die Ausgabe des Parameters '#' sieht wie folgt aus (verkürzt):
- (Die Ausgabe sollte in eine Datei gelenkt werden; die angegebenen
- Offsets können bei der aktuellen Version von MDEBUG anders lauten!
- Falls Sie die Beispiele nachvollziehen wollen, verwenden Sie die
- Tabellen, die über den Parameter '#' ausgegeben werden und nicht
- die hier wieder gegebenen!!)
-
- ────────────────────────────────────────────────────────────────────────────
-
- Offsets der Variablen für die Tastaturverwaltung in MDEBUG
- (im geladenem Programm -> in MDEBUG.COM jeweils -0100h)
-
- Offset der Tabelle mit dem High-Bytes der Funktions-Tasten: 1167h
- Aufbau der Tabelle:
-
- Offset in der Funktionstaste Inhalt
- Tabelle
- ------------------------------------------------
- 00h <CTRL-F1> 5Eh
- 01h <CTRL-PgUp> 84h
- {...}
- 26h <ALT-CursorDown> A0h
- 27h <ALT-CursorUp> 98h
- 28h <ALT-PageUp> 99h
- 29h <ALT-PageDown> A1h
-
- Offset der Tabelle mit den Scancodes für den Aufruf über den Hotkey: 1127h
- Aufbau der Tabelle:
-
- Offset in der Taste Inhalt
- Tabelle
- --------------------------------------------
- 00h <A> 1Eh
- 01h <B> 30h
- {...}
- 19h <Z> 15h
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 138
-
-
-
- Offset der Tastenkodierungstabelle (alt) für den Interpreter: 1141h
- Offset der Tastenkodierungstabelle (neu) für den Interpreter: 1154h
- Länge der Tabellen: 0013h
- Aufbau der Tabellen:
-
- Offset in den Inhalt (alt) Inhalt (neu)
- Tabellen
- ---------------------------------------------------
- 00h <CTRL-O> ------>> <|>
- 01h <ä> ----------->> <«>
- {...}
- 12h <X> ----------->> <X>
-
- ────────────────────────────────────────────────────────────────────────────
-
- Mit Hilfe dieser Tabellen kann nun die Tastenbelegung von MDEBUG
- den eigenen Wünschen angepasst werden.
-
- Dies ist vor allen dann nötig, falls eine von MDEBUG erwartete
- Funktionstaste auf Ihren Computer unterdrückt wird (sei es von der
- Tastatur oder vom Tastaturtreiber).
-
- Erkennbar ist dieser Fall daran, daß nach dem Betätigen einer
- Funktionstaste in MDEBUG nicht die gewünwschte Aktion erfolgt. In
- diesem Fall sollten Sie zuerst in MDEBUG über die Befehlsfolge
-
- MOV AH,0 ^I 16 <RETURN> { entsprechende Funktionstaste drücken}
-
- oder falls die Funktion 10h von der Interrupt-Routine für den
- Interrupt 16h unterstüzt wird:
-
- MOV AH,10 ^I 16 <RETURN> { entsprechende Funktionstaste drücken}
-
- den Scancode dieser Taste ermitteln (steht nach der Ausführung im
- Register AX) und mit den von MDEBUG erwarteten Code vergleichen.
-
- Stimmt der ermittelte Wert nicht mit dem von MDEBUG erwarteten Wert
- überein, müssen Sie nach den unten angeführten Verfahren den von
- MDEBUG erwarteten Scancode für die Taste korrigieren. Falls der
- Wert übereinstimmt, empfielt sich die nochmalige Lektüre über
- die Funktion der Taste in der Dokumentation - denn dann haben Sie
- sehr wahrscheinlich irgend etwas falsch gemacht.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 139
-
-
-
- Hinweis:
-
- Falls Sie einen Tastaturtreiber verwenden, der die neuen Tastatur-
- codes ab DOS 3.2 nicht unterstützt, sind umfangreiche Änderungen
- der Tastenbelegung erforderlich. In diesem Fall sollten Sie einen
- anderen Tastaturtreiber verwenden (möglichst einen, von dem auch
- der Quellcode erhältlich ist)
- Ich empfehle für diesen Fall den Tastaturtreiber K3.COM aus der
- c't 7/88. Dieser ist inclusive Assembler-Quellcode über die c't
- erhältlich.
-
-
- Beispiel:
-
- Die Tasten <ALT-CursorUp> und <ALT-CursorDown> liefern auf Ihrer
- Tastatur keinen Code. Sie möchten deshalb für diese Funktionen die
- Tasten <ALT-E> und <ALT-X> verwenden.
-
- Um dies zu realisieren gehen Sie folgendermaßen vor:
-
- Zuerst muß der Scancode der neuen Tasten ermittelt werden. Im
- Interpreter von MDEBUG kann dies folgendermaßen erfolgen:
-
- Geben Sie den Befehl
-
- MOV AH,0 ^I 16 <RETURN>
-
- ein und drücken Sie die entsprechende Taste. Notieren Sie den Wert
- aus AX, dies ist der benötigte Scancode der neuen Taste.
-
- Hinweis:
-
- Alle Tasten, die in MDEBUG als Funktionstasten verwendet werden
- sollen, müssen im LowByte den Wert 0h, 0E0h oder 0F0h liefern. Dies
- sind die meisten Funktionstasten und ALT-<zeichen>-Kombinationen.
-
- Diesen Vorgang wiederholen Sie für alle neuen Tasten.
- Um im Beispiel fortzufahren gehen wir von folgenden Werten aus:
-
- <ALT-E> - Scancode 1200h
- <ALT-X> - Scancode 2D00h
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 140
-
-
-
- Ermitteln Sie aus der Tabelle von MDEBUG den Offset der Funktions-
- tasten-Tabelle ('Tabelle mit dem High-Bytes der Funktions-Tasten'),
- im Beispiel ist der Wert 1167h. Dann muß aus der angezeigten
- Tabelle der Offset der umzubelegenden Tasten entnommen werden. Im
- Beispiel ist das für die Taste <ALT-CursorDown> 26 (hex.!) und für
- die Taste <ALT-CursorUp> 27 (hex). Ermitteln Sie nun für jede Taste
- den Offset in MDEBUG indem Sie den Offset der Tabelle plus dem
- Offset der Taste in der Tabelle nehmen.
-
- Hier: <ALT-CursorDown> : 1167h + 26h = 118Dh
- <ALT-CursorUp> : 1167h + 27h = 118Eh
-
-
- Nun starten Sie von der DOS-Ebene aus den DOS-Debugger Debug mit
-
- DEBUG MDEBUG.COM <RETURN>
-
- Jetzt kann für jede zu ändernde Taste über den Debug-Befehl
- 'e nnnn' die jeweilige Belegung von MDEBUG geändert werden. Im
- Beispiel wäre das (die Kommentare hinter ';' bitte nicht mit ein-
- geben)
-
- - für <ALT-CursorDown>
-
- e 118D <RETURN> ; ermittelte Adresse der Funktionstaste
- 2D <RETURN> ; neuer Scancode
- <RETURN>
-
- - für <ALT-CursorUp>
-
- e 118E <RETURN> ; ermittelte Adresse der Funktionstaste
- 12 <RETURN> ; neuer Scancode
- <RETURN>
-
- Nachdem Sie so alle Belegungen angepasst haben, schreiben Sie die
- geänderte Datei mit dem Befehl
-
- w <RETURN>
-
- zurück auf die Diskette/Platte. Beachten Sie bitte, daß Sie keine
- anderen Speicherstellen im Programm verändern und während der
- Debugsitzung auch keine Register über Debugbefehle verändern.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 141
-
-
-
- Verlassen Sie Debug über den Befehl
-
- q <RETURN>
-
-
- Durch den erneuten Aufruf von MDEBUG mit dem Parameter '#' können
- Sie nun überprüfen, ob die Änderungen gelungen sind.
-
- Bei den angeführten Verfahren sind folgende Punkte zu berücksich-
- tigen:
-
- 1. Die Änderungen sollten natürlich nur an einer Kopie von MDEBUG
- durchgeführt werden!
-
- 2. Ein Scancode darf nicht zweimal vorkommen. Sollte dies doch
- einmal vorkommen, wird von MDEBUG nur die letzte Angabe in der
- Tabelle berücksichtigt. Die vorherigen Angaben werden ignoriert.
- Dies kann aber genutzt werden, um eine bestimmte Funktion von
- MDEBUG zu unterbinden.
-
- Beispiel:
-
- Falls für die Taste <CLRL-F10> der Scancode einer Taste die in
- der Tabelle NACH dieser kommt eingesetzt wird, z.B. der Scancode
- der Taste <F5>, so wird die Funktion, die der Taste <CTRL-F10>
- zugeordnet ist, nie ausgeführt.
-
- Gleiches erreicht man natürlich auch dadurch, daß man einen nie
- vorkommenden Scancode einsetzt.
-
- 3. Die neue Tastenbelegung sollte auch in der Datei MDHELP.INP
- geändert werden und diese dann neu übersetzt werden.
-
- 4. Die Codes der folgenden Tasten sollten nicht verändert werden:
- <F1>, <F4>, <F10>, <CursorRight> und <CursorLeft>.
-
-
- Weiteres Beispiel:
-
- Sie möchten die Umbelegung der Taste <CTRL-O> aufheben, da Sie das
- Zeichen '|' auch anders erzeugen können.
-
- Dazu muß die Tastenkodierungstabelle (neu) oder die Tastenkodie-
- rungstabelle (alt) verändert werden
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 142
-
-
-
- Im Beispiel verändern wir die Tastenkodierungstabelle (alt), indem
- wir die Umbelegung elimieren.
-
- Zuerst ermitteln Sie wieder den Offset der benötigten Tabelle, hier
- 1141h, und den Offset der zu ändernden Tastenbelegung in der Tabel-
- le, hier 00h.
-
- Danach werden beide Werte wieder addiert um den Offset in MDEBUG zu
- ermitteln, also
-
- 1141h + 00h = 1141h
-
- Die Änderung an sich geschieht wieder über das Programm Debug.
- (Aufruf: debug MDEBUG.COM <RETURN>).
-
- Zur Eliminierung der Belegung reicht es aus, das entsprechende
- Zeichen in der Tastentabelle (alt) mit dem entsprechenden Zeichen
- in der Tastentabelle neu (also '|') zu überschreiben.
-
- Die Debug-Befehle hierfür lauten:
-
- e 1141 <RETURN>
- 7C <RETURN> ; 7Ch = ASCII-Code von '|'
- <RETURN>
-
- Danach kann die geänderte Version von MDEBUG wieder zurückge-
- schrieben und Debug verlassen werden.
-
- w <RETURN>
- q <RETURN>
-
-
- Bei den angeführten Verfahren sind folgende Punkte zu berücksich-
- tigen:
-
- 1. Die Änderungen sollten natürlich nur an einer Kopie von MDEBUG
- durchgeführt werden!
-
- 2. Die neue Tastenbelegung sollte auch in der Datei MDHELP.INP
- geändert werden und diese dann neu übersetzt werden.
-
- 3. Über diese beiden Tabellen können nur normale Tasten (-> LowByte
- des Scancodes ist ungleich 0) und nur im Interpreter umbelegt
- werden.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 143
-
-
-
- 4. Die Einträge am Ende der Tabelle (X <-> X) sind für neue Umbe-
- legungen durch den Benutzer reserviert. Für eine neue Belegung
- muß in der Tastentabelle (alt) am gewünschten Offset die umzu-
- belegende Taste und am gleichen Offset in der Tastentabelle
- (neu) die neue Belegung eingetragen werden.
-
- Beachten Sie bitte, daß auch hier Sie selbst dafür sorgen
- müssen, daß in der Tastentabelle (alt) keine Zeichen mehrfach
- vorkommen. In der Tastentabelle (neu) hingegen kann jedes
- Zeichen beliebig oft vorkommen. Da die Tabelle nur einmal pro
- Taste von MDEBUG konsultiert wird, ist eine Rekursion bei
- Tastenbelegungen wie
-
- 'A' -> 'B'
- 'B' -> 'A'
-
- ausgeschlossen.
-
- 5. Die Konvertierung über die Tastentabellen erfolgt VOR der Kon-
- vertierung eines Zeichens in Großbuchstaben. Ein umkodiertes
- Zeichen wird NICHT mehr in Großbuchstaben konvertiert.
- Falls also, z.B., das Zeichen 'a' öfters gebraucht wird, reicht
- der Eintrag von 'a' als alte und neue Tastenbelegung in den
- Tabellen aus um die Konvertierung von 'a' in 'A' zu unterbinden.
- D.h. die Eingabe von 'a' ist dann ohne die vorherige Eingabe
- des Prefix-Zeichens <CTRL-P> möglich.
-
-
- Weiteres Beispiel:
-
- Änderungen in der Tabelle mit den Scancodes sollten normalerweise
- nicht vorgenommen werden.
-
- Temporäre Umbelegungen der Tasten lassen sich sinnvollerweise über
- einen Kommandotreiber realisieren.
-
- Falls diese Änderungen über einen Hex-Editor direkt in der Datei
- MDEBUG.COM durchgeführt werden, müssen von allen Offsets die MDEBUG
- ausgibt jeweils 100h abgezogen werden!
-
- Die angegebenen Verfahren zum Anpassen von MDEBUG sind zwar etwas
- umständlich, aber da sie im Normalfall nur einmal durchgeführt
- werden ist dies m.E. noch erträglich.
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 144
-
-
-
-
-
-
-
-
-
-
-
-
- Anhang D
-
- Utilities und Beispieldateien zu MDEBUG
- ───────────────────────────────────────
-
- Hinweis:
-
- Die mit dem Zeichen (VV) gekennzeichneten Dateien
- bzw. Programme sind nur in der Vollversion enthalten.
-
- Die Beschreibung der mitgelieferten Kommando- und
- Bildschirmtreiber befindet sich in der Datei
- 'DRIVER.PRT'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 145
-
-
-
- MDEBUG.HLP
-
- Hilfstextdatei für MDEBUG
- 'MDEBUG.HLP' enthält den Hilfstext für die Online-Hilfe von MDEBUG
- in komprimierter Form.
-
- Die Datei wird beim Start von MDEBUG mit dem Parameter 'HELP' ohne
- Angabe einer Hilfstextdatei einmal eingelesen und danach nicht mehr
- benötigt.
- Falls der Parameter 'HELP' ohne den Zusatz '=name' angegeben wird,
- muß sich die Datei MDEBUG.HLP im aktuellen Verzeichnis oder in dem
- Verzeichnis, in dem die Datei MDEBUG.COM residiert befinden.
-
- MDHELP.INP (VV)
-
- Quelldatei zur Erstellung von MDEBUG.HLP
-
-
- MDMKHLP.COM (VV)
-
- MDMKHLP.COM ist ein Programm zur Erstellung einer Hilfstextdatei
- für die Online-Hilfe von MDEBUG.
-
- Aufruf:
-
- MDMKHLP eingabedatei ausgabedatei {/N} {/I} {/S} {/B} {/Q} {@}
-
- Die Parameter haben folgende Bedeutungen:
-
- /N - Ausgabedatei nicht komprimieren
-
- Falls der Parameter /N nicht angegeben ist, wird die Ausgabedatei
- komprimiert, ansonsten werden die Zeilen der Eingabedatei nach
- einer Syntaxüberprüfung unkomprimiert übernommen. MDEBUG kann beide
- Formate anzeigen, aber das unkomprimierte Format belegt natürlich
- mehr Speicher.
-
- /I - Sonderzeichen bei der Anzeige nicht interpretieren
-
- Falls der Parameter '/I' angegeben ist, werden alle Sonderzeichen
- in der Ausgabedatei mit dem Prefix-Zeichen versehen, so daß eine
- Interpretierung bei der Anzeige in MDEBUG unterbleibt. Kommentare
- in der Eingabedatei werden dann ebenfalls in die Ausgabedatei über-
- nommen.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 146
-
-
-
- /B - Befehle für MDMKHLP nicht interpretieren
-
- /S - Zeilen mit mehr als 80 Zeichen umbrechen.
-
- Wenn der Parameter '/S' angegeben ist, können die Zeilen der Aus-
- gabedatei max. 254 Zeichen lang werden. Ohne den Parameter /S
- dürfen die Zeilen der Ausgabedatei nur bis zu 80 Zeichen lang sein.
-
- /Q - Meldungen und Warnungen unterdrücken
-
- @ - Kommentar, Rest der Parameter überlesen
-
-
- Die Ein- und Ausgabedateien müssen in der angegebenen Reihenfolge
- angegeben werden; alle anderen Parameter sind optional und können
- hinter den Dateinamen in beliebiger Reihenfolge angegeben werden
- (ausgenommen das Zeichen für den Kommentar '@').
-
- Falls die Datei ausgabedatei schon existiert, wird sie ohne Warnung
- überschrieben. Eine leere Ausgabeatei, d.h. ohne den eigentlichen
- Hilfstext, kann nicht erstellt werden.
-
- eingabedatei muß eine Textdatei mit jeweils durch das Zeichen CR
- oder die Zeichen-Kombination CR/LF abgeschlossenen Zeilen sein.
- Alle anderen ASCII-Steuerzeichen (z.B. Tabulatoren) werden nicht
- interpretiert.
- Jede Zeile der Eingabedatei kann max. 254 Zeichen lang sein.
-
- Die maximale Länge einer Zeile für die Ausgabedatei (also die Länge
- der Zeile der Eingabedatei abzüglich der Control- und Prefix-
- Zeichen bis zu einem Kommentar-Zeichen, bzw. bis zum Ende der
- Zeile, falls kein Kommentar-Zeichen vorhanden ist), ist 80.
- Längere Zeilen führen zu einem Syntaxfehler und zum Abbruch des
- Programms (falls nicht der Parameter '/S angegeben ist).
-
- Die max. Größe der Eingabedatei ist nicht beschränkt, die Ausgabe-
- datei kann max. 64 K groß werden. Allerdings muß die Beschränkung
- der Puffergröße von MDEBUG beachtet werden, falls die gesamte
- Datei in MDEBUG eingelesen werden soll.
-
- Das Zeichen '@' gilt als Kommentar-Zeichen; d.h. jede Zeile der
- Eingabedatei wird nur bis zum ersten '@' übernommen. Soll das Zei-
- chen '@' in die Ausgabedatei übernommen werden, so muß es mit
- einem vorangestellten Prefix-Zeichen versehen werden.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 147
-
-
-
- Folgende Zeichen gelten als Sonderzeichen und werden bei der Aus-
- gabe der Datei in MDEBUG interrpetiert:
-
- # - Prefix-Zeichen, das folgende Zeichen wird uninterpretiert über-
- nommen
-
- ^ - Control-Zeichen, falls das folgende Zeichen im Intervall von
- 'A' bis 'Z' (bzw. 'a'...'z') ist, wird es in den entsprechenden
- CTRL-Code umgewandelt. Ansonsten wird das Zeichen '^' so über-
- nommen. (Beispiel: '^A' = 01h, '^B' = 02h, usw.)
-
- $ - Umschalten auf die Farbe 2 bzw. zurück auf die Farbe 1 und
- Ausgabe eines Leerzeichens
-
- ! - Umschalten auf die Farbe 3 bzw. zurück auf die Farbe 1 und
- Ausgabe eines Leerzeichens
-
- Ein Nullbyte darf in der Eingabedatei nicht vorkommen! Jede Zeile
- der Eingabedatei muß mit CR/LF oder CR enden (auch die letzte!).
-
- Die Control- und Prefix-Zeichen sollten bei der Formatierung der
- Zeilen berücksichtigt werden, sie dürfen nicht ohne Prefix-Zeichen
- am Ende einer Zeile stehen. Falls ein Sonderzeichen in die Ausgabe-
- datei als Zeichen übernommen werden soll, muß es mit dem Prefix-
- Zeichen versehen werden. (z.B. '##' für '#')
-
- Zu Anfang jeder Zeile wird auf die Ausgabe-Farbe 1 geschaltet.
- Leerzeilen werden übernommen; Zeilen die nur aus einem Kommentar
- bestehen (-> 1. Zeichen der Zeile ist '@') werden vollständig über-
- lesen.
-
- Die erste zu übernehmende Zeile der Eingabedatei wird als Über-
- schrift genommen und beim Scrollen des Hilfstextes in MDEBUG immer
- angezeigt. Ein Rahmen um den Hilfstext muß Bestandteil der Ein-
- gabedatei sein, falls er angezeigt werden soll.
-
- Alle Zeilen der Eingabedatei, die mit einem Punkt in der ersten
- Spalte beginnen, werden als Befehl für MDMKHLP angesehen. Hinter
- einem korrekten Befehl kann noch ein beliebiger Text als Kommentar
- stehen. Die Befehle setzen evtl. anders angegebene Parameter außer
- Kraft.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 148
-
-
-
- Folgende Befehle sind implementiert:
-
- .Mn mit 1 <= n <= 9
-
- Mit diesem Befehl kann ein Marker mit der Adresse der folgenden
- Zeile als Voreinstellung belegt werden. Für jeden Marker kann nur
- ein .M-Befehl in einer Datei angegeben werden. .M-Befehle für schon
- gesetzte Marker werden als falsche Befehle behandelt. Nicht ge-
- setzte Marker werden von MDMKHLP auf die zweite Zeile der Ausgabe-
- datei gesetzt. MDMKHLP gibt jeweils für jeden gesetzten Marker
- die Zeilennummer aus.
-
- .I0
-
- Interpretierung der besonderen Zeichen bei der Ausgabe für die fol-
- genden Zeilen verhindern
-
- .I1
-
- Interpretierung der besonderen Zeichen für die folgenden Zeilen
- wieder einschalten
-
- .N0
-
- Komprimierung der folgenden Zeilen verhindern
-
- .N1
-
- Komprimierung der folgenden Zeilen wieder einschalten
-
- .Kz
-
- Nehme das Zeichen z als Kommentar-Zeichen für die Eingabedatei.
- Voreinstellung für z ist das Zeichen '@'.
-
- .Q1
-
- Meldungen und Warnungen unterdrücken
-
- .Q0
-
- Meldungen und Warnungen ausgeben
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 149
-
-
-
- .B
-
- Beende die Interpretierung von Befehlen, d.h. ab diesen Befehl
- werden auch alle mit einem Punkt beginnenden Zeilen in die Ausgabe-
- datei übernommen. (von diesem Befehl gibt es kein zurück!)
-
-
- Die folgenden Befehle können jeweils nur EINMAL VOR dem eigent-
- lichen Text der Hilfstext-Datei angegeben werden. (Fehlerhafte
- Befehle zählen nicht) Der Hilfstext beginnt mit der ersten Zeile
- die keinen Befehl enthält und nicht nur aus einem Kommentar
- besteht. (Leerzeilen werden in den Hilfstext übernommen!)
-
- .Pz
-
- Nehme das Zeichen z als Prefix-Zeichen für die Anzeige
- Voreinstellung für z ist das Zeichen '#'
-
- .Cz
-
- Nehme das Zeichen z als Control-Zeichen für die Anzeige
- Voreinstellung für z ist das Zeichen '^'
-
- .F1z
-
- Nehme das Zeichen z als 1. Farbmarker für die Anzeige
- Voreinstellung für z ist das Zeichen '$'
-
- .F2z
-
- Nehme das Zeichen z als 2. Farbmarker für die Anzeige
- Voreinstellung für z ist das Zeichen '!'
-
- Für den Parameter z der Befehle gilt:
-
- Außer den Zeichen mit dem ASCII-Codes 00h, 07h, 08h, 09h, 0Ah und
- 0Dh kann jedes Zeichen als besonderes Zeichen benutzt werden. Es
- ist nicht möglich einem Zeichen mehrere Bedeutungen zuzuordnen.
-
- Für jeden fehlerhaften Befehl gibt MDMKHLP eine Warnung auf die
- Standard-Ausgabe aus. Zeilen mit falschen Befehlen werden nicht
- übernommen und führen nicht zum Programm-Abbruch.
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 150
-
-
-
- Soll eine Zeile, die mit einem Punkt beginnt, bei aktiver Interpre-
- tierung der Befehle durch MDMKHLP in die Ausgabedatei übernommen
- werden, so muß diese mit einem vorangestellten Prefix-Zeichen
- versehen werden.
-
- MDMKHLP gibt jeweils eine Meldung über die Bearbeitungsschritte auf
- die Standard-Ausgabe auf. Falls ein Fehler bei der Dateibearbeitung
- oder ein Syntax-Fehler auftritt, wird das Programm abgebrochen und
- eine Fehlermeldung auf die Standard-Ausgabe ausgegeben.
- Bei Syntaxfehlern werden die Zeile und die Spalte des falschen
- Zeichens mit ausgegeben. Die Angaben beziehen sich dabei auf die
- Eingabedatei (Kommentarzeilen zählen dabei mit).
-
- Nach einer erfolgreichen Bearbeitung gibt MDMKHLP die Größe der
- Ausgabedatei in Byte und die verwendeten Sonderzeichen auf die
- Standard-Ausgabe aus.
-
- Hinweis:
-
- Falls bei Angabe des Schalters /S ohne den Schalter /N das 80.
- Zeichen in einer Folge mit mehr als 3 Zeichen liegt, so werden nur
- die vor dem 80. Zeichen liegenden Zeichen dieser Folge angezeigt.
- Das gleiche gilt für die Spalten 160 und 240.
-
- Abhilfe: Komprimierung für diese Zeile(n) ausschalten.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 151
-
-
-
- MDSHELP.COM (VV)
-
- MDSHELP.COM ist ein Programm zum Überprüfen der Formatierung einer
- mit MDMKHLP erstellten Hilfstextdatei für MDEBUG.
-
- Aufruf: MDSHELP {hilfstextdatei} {@} {kommentar}
-
- Parameter:
-
- hilfstextdatei - Name der zu testenden Datei
- Der Name der Hilfstextdatei kann nicht mit dem
- Zeichen '@' beginnen.
-
- @ - Rest der Parameter überlesen
-
- Die Voreinstellung für die Hilfstextdatei ist 'MDEBUG.HLP' im akt.
- Directory.
-
- MDSHELP zeigt den Hilfstext in der oberen Bildschirmhälfte genauso
- wie er in der Online-Hilfe von MDEBUG angezeigt würde an.
-
- Zusätzlich gibt MDSHELP zur Information auch noch die verwendeten
- Sonderzeichen in der Datei auf die Standard-Ausgabe aus. Bei der
- Anzeige sind alle Tasten wie in der Onlinehilfe von MDEBUG belegt.
- Allerdings kann das Fenster von MDSHELP nicht verschoben werden
- und MDSHELP unterstützt keine externen Bildschirmtreiber. (MDSHELP
- ermittelt die Daten des aktuellen Bildschirm-Modus über den Inter-
- rupt 10h und die BIOS-Data-Area.)
-
- MDSHELP kann bis zu 55 K große Dateien bearbeiten.
-
-
- SETMD.EXE
-
- Mit SETMD kann das Passwort von MDEBUG geändert, gelöscht oder neu
- eingerichtet werden.
-
- Aufruf: SETMD
-
- SETMD erfragt alle benötigten Daten im Dialog mit dem Benutzer.
-
- Falls eine mit einem Passwort versehene Version von MDEBUG geändert
- werden soll, so muß das alte Passwort bekannt sein. Ein Fehler bei
- der Eingabe führt zum Programm-Abbruch.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 152
-
-
-
- SETREGNR.EXE (VV)
-
- Mit dem Programm SETREGNR kann ein Benutzer der Vollversion seine
- Registrierungs-Nummer in das Programm MDEBUG.COM eintragen. Die
- Eintragung deaktiviert die Shareware-Meldung und gibt den Parameter
- 'MAKE' frei.
-
- Aufruf: SETREGNR
-
- SETREGNR erfragt alle benötigten Daten im Dialog mit dem Benutzer.
-
-
- CALLMDB.COM (VV)
-
- CALLMDB.COM ist ein Programm zum Aufruf von MDEBUG aus einer Batch-
- datei heraus.
-
- Aufruf: CALLMDB {/opt} {"text"} {#nnnn} {...} {#} {@ kommentar}
-
- Parameter:
-
- opt - Optionen für CALLMDB:
-
- N - Diese Option unterdrückt das Anhängen von <F10>
- hinter den Parametern durch CALLMDB
-
- Pxxxx - 'xxxx' ist das Passwort für MDEBUG
-
-
- text - Text der zeichenweise übergeben wird
-
- Falls das Zeichen " übergeben werden soll, muß es durch "" angege-
- ben werden. Control-Codes können durch das Zeichen ^ gefolgt von
- einem Großbuchstaben eingegeben werden. Das Zeichen ^ vor einem
- Großbuchstaben muß als ^^ angegeben werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 153
-
-
-
- #nnnn - Scancode einer Taste (hexadezimal)
- speziell:
-
- #0 - Simuliere leeren Tastaturpuffer.
- Der Code ist notwendig, falls nach einen mit einen
- Fehler endenden Befehl noch weitere Befehle ausge-
- führt werden sollen. (MDEBUG löscht den Tastatur-
- puffer nach einem Fehler)
-
- Die Scancodes der Funktionstasten können der Tabelle in der
- Dokumentation von MDEBUG entnommen werden oder über MDEBUG ermit-
- telt werden. Der angegebene Wert darf nicht größer als 0FFFFh
- sein; führende Nullen sind möglich. Der ermittelte Wert wird bis
- auf Wortgröße von links mit Nullen aufgefüllt (z.B. wird aus '#0D'
- der Scancode 000Dh). Da MDEBUG den Status der Umschalt-Tasten nicht
- berücksichtigt, können auch die Tastaturcodes für Tasten wie z.B.
- <SHIFT-F6> o.ä. übergeben werden.
-
-
- # - Ausgabe der von CALLMDB verwendeten Tastencodes und Beenden des
- Aufrufs. Falls die Codes der Tasten <F10>, <F4> oder <ESC> in
- MDEBUG geändert werden, müssen die neuen Codes auch in CALLMDB
- eingetragen werden!
- (siehe Beschreibung der Parameter von MDEBUG)
-
-
- @ - Rest der Parameter überlesen
-
-
- Übergeben werden nur die Zeichen zwischen zwei Gänsefüßchen und
- die explizit angegebenen Scancodes. Zwischen diesen dürfen zur
- Trennung Leerzeichen und Tabulatoren gesetzt werden. Maximal können
- 256 Tastencodes übergeben werden. Dieses Maximum kann aber aufgrund
- der Beschränkung von DOS nie erreicht werden.
-
- Ein falscher Parameter führt zum Abbruch von CALLMDB.
-
- Der User-Int von MDEBUG muß installiert sein falls CALLMDB benutzt
- werden soll. CALLMDB installiert, nachdem es festgestellt hat, das
- MDEBUG mit einem User-Int geladen ist, eine eigene Routine für die
- Ermittlung der Tastatureingaben in MDEBUG und ruft den User-Int von
- MDEBUG auf. Die Parameter werden dann sequentiell an MDEBUG über-
- geben.
- Nach dem Aufruf über CALLMDB startet MDEBUG immer im Interpreter.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 154
-
-
-
- Befehle für MDEBUG können wie im Interpreter angegeben werden,
- müssen aber jeweils mit dem ScanCode der Taste <RETURN> beendet
- werden:
-
- Beispiel: CALLMDB "M FS,CS ^M FO,0 ^M "
- ─┐ ┌─
- └──┬───┘
- <RETURN>
- oder
-
- CALLMDB "M FS,CS " #0D " M FO,0" #0D
- ──┐ ┌──
- └───┬───────┘
- <RETURN>
-
- Die Tastenumbelegungen des Interpreters sind auch für über CALLMDB
- übergebene Befehl gültig:
-
- Beispiel: CALLMDB "M AX,4ä1" #0D
- ──────────
- Interpreter-Befehl: M AX,4«1
-
-
- Kleinbuchstaben werden von MDEBUG in Großbuchstaben konvertiert.
- Soll ein Kleinbuchstabe eingegeben werden, so muß diesem der Code
- für <CTRL-P> vorangestellt werden.
-
- Beispiel: CALLMDB "M R8,'^Pa' ^M "
- ──
- <CTRL-P>
- oder
-
- CALLMDB "M R8,'" #1910 "a'" #0D
- ─────
- <CTRL-P>
-
- Steuerzeichen müssen ebenfalls mit dem Prefix-Zeichen versehen ein-
- gegeben werden.
-
- Hinter den angegegebenen Parametern setzt CALLMDB noch den Scancode
- für <F10> damit MDEBUG nach der Bearbeitung sofort wieder verlassen
- wird. Soll dies verhindert werden, so muß CALLMDB mit dem Parameter
- '/N' aufgerufen werden oder als letzter Befehl für MDEBUG der W-
- Befehl übergeben werden:
-
- Beispiel: CALLMDB "M R8,'A' ^ W " #0D
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 155
-
-
-
- Hinweis:
-
- Falls das Passwort von MDEBUG aktiv ist und der Parameter '/P' für
- CALLMDB nicht angegeben wird, wird MDEBUG nach der Bearbeitung der
- Parameter NICHT sofort verlassen.
-
-
- Natürlich kann in den Parametern auch vorher schon ein Befehl zum
- Verlassen von MDEBUG enthalten sein. Die Parameterteile, die dann
- von MDEBUG nicht mehr bearbeitet werden, werden verworfen (keine
- Weitergabe an andere Programme).
-
- Beispiel: CALLMDB {irgendwas} #1B #1B {irgendwas}
- ────────── ─────── ───────────
- wird ausge- 2 x <ESC>, wird ignoriert
- führt MDEBUG
- verlassen
-
- Falls das Passwort von MDEBUG aktiv ist, sollte der Parameter
- '/Pxxxx' benutzt werden, da das Passwort ansonsten zweimal vor den
- eigentlichen Parametern und zusätzlich einmal manuell eingegeben werden
- muß.
- Falls nach jedem Start von MDEBUG über CALLMDB Voreinstellungen
- vorgenommen werden sollen, wird sinnvollerweise das Passwort durch
- SETMD zwar eingerichtet, aber so, daß es beim Start zuerst ausge-
- schaltet ist. Als erster Parameter für CALLMDB wird dann der Scan-
- code von <F3>, #3D00h, angegeben womit das Passwort eingeschaltet
- wird.
-
- Beispiel: CALLMDB #3D00 {weitere Befehle/Tasten}
-
- Über CALLMDB kann auch während der Abarbeitung einer Batch-Datei
- die Tastatur für einen Teil der Befehle gesperrt werden:
-
- REM Befehle, die unterbrechenbar ausgeführt werden sollen
- REM ...
-
- REM Tastatur blockieren (falls das Passwort von MDEBUG schon
- REM eingeschaltet ist, kann der Tastencode #3D00 entfallen,
- REM xxxx = Passwort von MDEBUG)
- CALLMDB #3D00 "QL ^M" /Pxxxx
-
- REM Befehle, die mit Tastaturblockierung ausgeführt werden
- REM sollen
- REM ...
-
- REM und Tastaturblockierung wieder aufheben
- CALLMDB /Pxxxx
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 156
-
-
-
- TESTMD.PAS
-
- Demo-Programm in Turbo-Pascal 4.0/5.0 zur Demonstration der Nutzung
- von MDEBUG in eigenen Programmen.
-
- Zur Compilierung werden die Dateien
-
- CHECKMD.OBJ, CALLMD.OBJ, MDCMD.OBJ und KONVERT.OBJ
-
- benötigt.
-
- TESTMD.EXE
-
- Übersetzte Version von TESTMD.PAS
-
- Aufruf: TESTMD
-
-
- CHECKMD.A86
-
- Assember-Routine zum Überprüfen, ob MDEBUG installiert ist und,
- falls ja, Ermitteln des User-Ints von MDEBUG. Der Quelltext ist für
- die Übersetzung mit dem Assembler A86 geschrieben.
-
- Die Routine wurde speziell zur Nutzung in Turbo-Pascal-Programmen
- geschrieben und sollte für andere Programmiersprachen als Beispiel
- genommen werden.
-
- CHECKMD.OBJ
-
- Übersetzte Version von CHECKMD.A86
-
-
- CALLMD.A86
-
- Assembler-Routine zum Aufruf des User-Ints von MDEBUG aus einem
- Turbo-Pascal-Programm heraus. Der Quelltext ist für die Übersetzung
- mit dem Assembler A86 geschrieben.
-
- Die Routine wurde speziell zur Nutzung in Turbo-Pascal-Programmen
- geschrieben und sollte für andere Programmiersprachen als Beispiel
- genommen werden.
-
- CALLMD.OBJ
-
- Übersetzte Version von CALLMD.A86
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 157
-
-
-
- MDCMD.A86
-
- Assembler-Routine zur Ausführung von Befehlszeilen über MDEBUG in
- eigenen Programmen. Der Quelltext ist für die Übersetzung mit dem
- Assembler A86 geschrieben.
-
- Die Routine wurde speziell zur Nutzung in Turbo-Pascal-Programmen
- geschrieben und sollte für andere Programmiersprachen als Beispiel
- genommen werden.
-
- MDCMD.OBJ
-
- Übersetzte Version von MDCMD.A86
-
-
- KONVERT.A86
-
- Konvertierungs-Routinen für TESTMD.PAS
- Der Quelltext ist für die Übersetzung mit dem Assembler A86
- geschrieben.
-
- KONVERT.OBJ
-
- Übersetzte Version von KONVERT.A86
-
-
- UPSTR.BIN
- LOWSTR.BIN
-
- Beispieldateien für die Möglichkeit über den Parameter '&name' auch
- übersetzte Routinen ins PSP von MDEBUG einzulesen. In den beiden
- Dateien steht jeweils am Ende der Datei die Länge des Codes als
- Wort (eingerahmt mit der Zeichenfolge '**') und dahinter der Name
- der Routine (abgeschl. durch '*').
- UPSTR.BIN und LOWSTR.BIN belegen jeweils 32 Byte.
-
- Benutzung (z.B.): MDEBUG &upstr.bin,,,N
- MDEBUG SET &lowstr.bin,0,32,N
-
- UPSTR.A86
- LOWSTR.A86
-
- Quelldateien für UPSTR.BIN und LOWSTR.BIN. Die Übersetzung erfolgte
- mit dem A86. Dieser Assembler ist für solche Aufgaben auf jedem
- Fall dem MASM vorzuziehen.
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 158
-
-
-
- SHOWINT.COM (VV)
-
- SHOWINT.COM ist ein Util zum Überwachen der Aufrufe einer oder
- mehrerer Funktionen eines beliebigen Interrupts.
-
- SHOWINT hängt sich dafür direkt in den zu überwachenden Interrupt
- ein und zeigt jeden Aufruf des Interrupts mit einer der zu über-
- wachenden Funktionsnummern vor oder nach der Ausführung in einem
- Popup-Fenster an.
-
- SHOWINT kann folgendermaßen aufgerufen werden:
-
- SHOWINT {n1} {n2..n3} {schalter} {@}
-
-
- Die Parameter haben dabei folgende Bedeutung:
-
-
- n1 - Festlegen einer zu überwachenden Funktionsnummer
-
- n2..n3 - Festlegen mehrerer zu überwachender Funktionsnummern über
- ein Intervall. Alle Funktionsnummern zwischen 'n2' und
- 'n3' (incl.) werden überwacht. Falls 'n2 > n3' werden die
- Nummern vertauscht.
-
-
- SHOWINT speichert die zu überwachenden Funktionsnummern intern in
- einer Tabelle. Alle Funktionsnummern sind daher additiv.
-
- 'n1', 'n2' und 'n3' müssen hexadezimale Werte zwischen 00h und 0FFh
- sein.
-
-
- /V - Schalte Lösche/Setze-Schalter um (Voreinst.: Setzen)
-
- Normalerweise führt die Angabe von 'n1' oder 'n2..n3' dazu, daß die
- angegebenen Funktionsnummern von SHOWINT überwacht werden. Falls
- aber der Lösche/Setze-Schalter auf 'Löschen' steht, ist die Wirkung
- der Parameter 'n1' und 'n2..n3' genau umgekehrt, d.h. diese Funk-
- tionsnummern werden von SHOWINT dann nicht überwacht! Der Schalter
- kann beliebig oft umgeschaltet werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 159
-
-
-
- Beispiel: SHOWINT 00..40 /V 05 06 /V 80..FF
- setzen löschen setzen
-
- In diesem Beispiel werden alle Funktionsnummern zwischen 0 und 40h
- mit Ausnahme der Funktionsnummern 05h und 06h und alle Funktions-
- nummern zwischen 80h und 0FFh überwacht.
-
-
- /L - Lösche die ganze Tabelle (unabhängig vom Schalter '/V')
-
- Dieser Schalter löscht die interne Tabelle für die zu überwachenden
- Funktionsnummern, d.h. es werden keine Aufrufe des Interrupts über-
- wacht.
- Der Schalter ist unabhängig vom Wert des Lösche/Setze-Schalters.
-
-
- /S - Ausgabe der aktuellen Tabelle auf die Standard-Ausgabe.
-
- Durch den Schalter '/S' kann der Inhalt der internen Tabelle für
- die zu überwachenden Funktionsnummern auf die Standard-Ausgabe aus-
- gegeben werden. (->> Ausgabe aller momentan überwachten Funktions-
- nummern)
- Falls schon eine Version des Programms resident ist, wird deren
- Tabelle ausgegeben.
-
-
- /U - Überschreibe die Tabelle einer residenten Version von
- SHOWINT
-
- Die zu überwachenden Funktionsaufrufe von SHOWINT können auch nach
- der Installierung noch geändert werden. Hierzu muß einer der Para-
- meter '/U', '/!' oder '/&' angegeben werden.
-
- Wird nur der Parameter '/U' angegeben, wird die Tabelle der
- residenten Version überschrieben, d.h. es werden nur noch die neu
- angegebenen Funktionsnummern überwacht.
-
-
- /! - Korrigiere die Tabelle einer residenten Version von
- SHOWINT
-
- Dieser Parameter wirkt wie der Parameter '/U', allerdings wird die
- Tabelle der residenten Version nicht überschrieben, sondern mit der
- neuen Tabelle verANDet, d.h. es werden nur noch die Funktionsnum-
- mern überwacht, die in beiden Tabellen gesetzt sind.
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 160
-
-
-
- /& - Korrigiere die Tabelle einer residenten Version von
- SHOWINT
-
- Dieser Parameter wirkt wie der Parameter '/U', allerdings wird die
- Tabelle der residenten Version nicht überschrieben sondern mit der
- neuen Tabelle verODERt, d.h. es werden alle Funktionsnummern über-
- wacht, die in einer der beiden der Tabellen gesetzt sind.
-
-
- /R - Entferne eine residente Version von SHOWINT aus den
- Speicher.
-
- Mit diesem Parameter kann eine residente Version von SHOWINT wieder
- aus dem Speicher entfernt werden. Beim Erstaufruf von SHOWINT ver-
- hindert der Parameter die Installation des Programms.
-
-
- /A - Residentes Version von SHOWINT neu aktivieren
-
- Der Aufruf von SHOWINT mit dem Parameter '/A' ist nötig, falls eine
- residente Version von SHOWINT über die Eingabe von <CTRL-X> oder
- durch einen nicht-zurückkehrenden Interrupt-Aufruf deaktiviert
- wurde (siehe unten).
-
-
- /C - Anzeigen der Interrupt-Aufruf VOR der Ausführung
-
- Normalerweise zeigt SHOWINT einen zu überwachenden Interrupt-Aufruf
- jeweils NACH dem Aufruf an. Mit diesem Parameter kann es aber dazu
- veranlasst werden, ihn vor dem eigentlichen Aufruf anzuzeigen. In
- diesem Fall kann dann der Interrupt-Aufruf auch vom Benutzer unter-
- drückt werden (siehe unten).
- Der Parameter wird nur beim Erstaufruf von SHOWINT berücksichtigt.
-
-
- /Fn - Festlegen der Farbe für das Popup-Window von SHOWINT
-
- 'n' ist das Farbattribut für die Anzeige.
- (hex., Intervall: 0h..0FFh, Voreinst.: 70h)
- Der Parameter wird nur beim Erstaufruf von SHOWINT berücksichtigt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 161
-
-
-
- /Zn - Festlegen der Startzeile für das Window des Programms.
-
- 'n' ist die Startzeile der Anzeige.
- (hex., Intervall: 01h..06h, Voreinst.: 01h)
- Der Parameter wird nur beim Erstaufruf von SHOWINT berücksichtigt.
-
-
- /In - Festlegen des zu überwachenden Interrupts.
-
- 'n' ist die Nummer des zu überwachenden Interrupts.
- (hex., Intervall: 00h..0FFh, Voreinst.: 05h)
-
- Der von SHOWINT zu überwachende Interrupt kann mit diesem Interrupt
- beliebig gewählt werden. Falls eine residente Version von SHOWINT
- geändert werden soll, muß dieser Parameter mit der korrekten Inter-
- rupt-Nummer IMMER angegeben werden!
-
- Die Interrupts 22h, 23h und 24h werden nicht unterstützt.
-
-
- /? - Ausgabe eines Hilfstextes und Programmende
-
- @ - Rest der Paramter überlesen
-
-
- Alle Parameter werden sequentiell von links nach rechts ausgeführt.
- Parameter, die bei einem Aufruf von SHOWINT keine Bedeutung haben,
- werden ignoriert.
-
- Die Graphik-Karte und die Bildschirm-Parameter werden aus der BIOS-
- Display-Data-Area gewonnen. Die Interrupt-Aufrufe werden nur im
- Textmodus abgefangen.
- SHOWINT unterstützt keine externen Bildschirmtreiber.
-
- Geschachtelte Aufrufe der zu überwachenden Interrupts werden nicht
- berücksichtigt (falls nicht der Parameter '/C' angegeben ist).
-
- Nachdem SHOWINT installiert ist, werden nach jedem Aufruf des
- zu überwachenden Interrupts mit einer Funktionsnummer aus der
- Tabelle der zu überprüfenden Funktionsnummern die Register-Werte
- vor und nach dem Aufruf ausgegeben.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 162
-
-
-
- Dabei wird folgende Maske benutzt:
-
- ╔═ Hier steht jeweils die Nummer und Adresse des abgefangenen
- ║ Interrupts
- ╚══════════════════════════════════════════╦══════════════╗
- ┌───────────────────────── Vor dem Aufruf des Int 10h: (Adresse: 22C0:4560)────┐
- │ AX = 0E0D BX = 0007 CX = 0002 DX = 0000 SI = 00D3 DI = 0004 BP = 26F2 │
- │ DS = 0261 ES = 0261 Ret-Adress: 0070:06A7 Flags = ________________ │
- │ DS:SI = )......n.p.n...!.....+.......Y..CON ...................p.. │
- │ ES:DI = ..BUG ..............C............. ta...a...p.n.p.........H...=.. │
- │ DS:DX = ..r...BUG ..............C............. ta...a...p.n.p.........H.. │
- │ DS:BX = 55 47 20 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 43 15 03 00 01 │
- │ ES:BX = 55 47 20 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 43 15 03 00 01 │
- └──────────────────────────────────────────────────────────────────────────────┘
- Bitte eine Taste drücken ... (CTRL-X -> deaktivieren)
-
- ┌───────────────────────── Nach dem Aufruf des Int 10h: (Adresse: 22C0:4560)───┐
- │ AX = 0E0D BX = 0007 CX = 0002 DX = 0000 SI = 00D3 DI = 0004 BP = 26F2 │
- │ DS = 0261 ES = 0261 Flags = ________________ │
- │ DS:SI = )......n.p.n...!.....+.......Y..CON ...................p.. │
- │ ES:DI = ..BUG ..............C............. ta...a...p.n.p.........H...=.. │
- │ DS:DX = ..r...BUG ..............C............. ta...a...p.n.p.........H.. │
- │ DS:BX = 55 47 20 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 43 15 03 00 01 │
- │ ES:BX = 55 47 20 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 43 15 03 00 01 │
- └──────────────────────────────────────────────────────────────────────────────┘
-
- Durch die Taste <CTRL-X> kann SHOWINT für die weiteren Aufrufe des
- Interrupts deaktiviert werden, d.h. SHOWINT ist für den angegeben
- Interrupt erst wieder nach einem Aufruf mit dem Parameter '/A'
- aktiv. Jede andere Taste führt zur Fortsetzung des unterbrochenen
- Prozesses nach dem abgefangenen Interrupt-Aufruf.
-
- Falls SHOWINT mit dem Parameter '/C' installiert wurde, werden vor
- dem Ausführen der Original-Routine für den Interrupt die Eingangs-
- Parameter angezeigt. In diesem Fall wird folgende Maske verwendet:
-
- ╔═ Hier steht jeweils die Nummer und Adresse des abgefangenen
- ║ Interrupts
- ╚══════════════════════════════════════════╦══════════════╗
- ┌───────────────────────── Vor dem Aufruf des Int 10h: (Adresse: 22C0:4560)────┐
- │ AX = 0E70 BX = 0007 CX = 0001 DX = 0000 SI = 00D3 DI = 000E BP = 2644 │
- │ DS = 0261 ES = 0261 Ret-Adress: 0070:06A7 Flags = ________________ │
- │ DS:SI = ,......n.p.n...!.............Y..CON ...................p.. │
- │ ES:DI = ..........C............. ta...a...p.n.p.....Y...H...=............ │
- │ DS:DX = ..r...BUG ..............C............. ta...a...p.n.p.....Y...H.. │
- │ DS:BX = 55 47 20 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 43 15 03 00 01 │
- │ ES:BX = 55 47 20 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 43 15 03 00 01 │
- └──────────────────────────────────────────────────────────────────────────────┘
- Bitte eine Taste drücken ... (CTRL-X -> deaktivieren ESC -> Int. unterdrücken)
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 163
-
-
-
- Der Benutzer kann nun entscheiden, ob der Interrupt normal aus-
- geführt oder abgebrochen werden soll.
- Durch die Eingabe von <ESC> wird der Interrupt unterdrückt, die
- Eingabe von <CTRL-X> hat die gleiche Wirkung wie oben angeführt
- und jede andere Taste führt zur Ausführung der unterbrochenen
- Interruptroutine.
-
- Falls der Interrupt abgebrochen wird, liefert SHOWINT dem aufrufen-
- den Prozess 0FFFFh im Register AX und setzt das Carry-Flag. Eine
- Anzeige nach der Rückkehr des Interrupts findet nicht statt.
-
-
- Interrupts die nicht zurückkehren, blockieren das Programm, falls
- es nicht mit dem Parameter '/C' aufgerufen wurde. In diesem Fall
- muß SHOWINT nochmal mit dem Parameter '/A' aufgerufen werden.
-
- Das Programm kennt und berücksichtigt folgende Interrupts als nicht
- zurückkehrende Aufrufe (d.h. in diesem Fall wird der Parameter '/C'
- implizit für die entsprechenden Interrupt-Aufrufe gesetzt):
-
- Int 19h mit allen Funktionsnummern
- Int 20h mit allen Funktionsnummern
- Int 21h mit den Funktionsnummern 00h, 31h und 4Ch
- Int 27h mit allen Funktionsnummern
-
-
- Es kann maximal für jeden Interrupt eine Kopie von SHOWINT gleich-
- zeitig geladen sein. Bei jedem Aufruf zur Änderung der Variablen
- einer residenten Version von SHOWINT MUSS die durch diese Version
- überwachte Interruptnummer angegeben werden!
-
- SHOWINT hängt sich in jedem Fall auch in den Interrupt 21h ein und
- fängt alle Aufrufe zum Lesen und Setzen des zu überwachenden Inter-
- rupts ab. Damit ist gewährleistet, daß SHOWINT bei ordnungsgemäß
- programmierten Programmen immer als erstes in der Interrupt-Kette
- des zu überwachenden Interrupts steht. Falls ein Programm das Lesen
- und Setzen der Interrupts direkt über die Interrupt-Tabelle bei 0:0
- ausführt, ist dies allerdings nicht mehr so. In diesem Fall kann
- SHOWINT erst wieder aus den Speicher entfernt werden, wenn das nach
- SHOWINT geladene Programm aus dem Speicher entfernt ist.
-
- Probleme können vor allem auftreten, falls ein Programm die direkte
- Benutzung der Interrupt-Tabelle bei 0:0 und die Benutzung der Funk-
- tionen 25h und 35h des Interrupt 21h mischt.
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 164
-
-
-
- Beispiele für die Anwendung von SHOWINT:
-
- Installieren von SHOWINT zur Überwachung der Aufrufe des Interrupts
- 21h mit den Funktionsnummern 00h bis 0Ch (incl.):
-
- SHOWINT /I21 00..0C
-
- Erweitern der Überwachung der Aufrufe des Interrupt 21h um die
- Funktionsnummern 20h bis 24h (incl.), 35h und 60h:
-
- SHOWINT /I21 /! 60 20..24 35
-
- Installieren einer ZUSÄTZLICHEN Kopie von SHOWINT zur Überwachung
- aller Aufrufe des Interrupts 12h mit den Funktionsnummern zwischen
- 0h und 03h und zwischen 08h und 0FFh:
-
- SHOWINT /I12 00..FF /V 4..7
- ┌───── ┌─ ┌───
- │ │ Funktionsnummern zwischen 4 und 7
- │ │ (incl.) ausschalten
- │ Schalter auf 'Löschen' setzen
- Alle Funktionsnummern einschalten
-
- Überwachen der Aufrufe des Interrupt 12h einstellen
- (Programm aus den Speicher entfernen):
-
- SHOWINT /I12 /R
-
-
- Hinweise für die Benutzung von SHOWINT:
-
-
- Erste Versuche sollten mit einen ungefährlichen Interrupt (z.B. dem
- Interrupt 05h - PrintScreen) gemacht werden.
-
-
- Die Angabe der zu überwachenden Funktionsnummern ist nur möglich,
- falls diese über das Register AH dem Interrupt übergeben werden.
- Interrupts, die die Funktionsnummer im Register AX erwarten (z.B.
- der Maus-Interrupt 33h) können nur ganz oder gar nicht überwacht
- werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 165
-
-
-
- Bei Interrupts, die asyncron aufgerufen werden, ist der Inhalt des
- Registers AH beim Aufruf nicht vorhersehbar. Falls diese überwacht
- werden sollen, muß für die zu überwachenden Funktionsnummern das
- Intervall 00..0FF angegeben werden.
-
-
- SHOWINT darf zur Überprüfung eines zeitkritischen Interrupts (z.B.
- die Interrupts 1Ch und 08h) nicht verwendet werden! Das gleiche
- gilt für Interrupt-Funktionen, die in der Routine für einen zeit-
- kritischen Interrupt aufgerufen werden (z.B. die Funktion 0Fh des
- Interrupt 10h falls diese von einem Uhrenprogramm in der Interrupt-
- Routine für den Interrupt 08h oder 1Ch aufgerufen wird).
-
- Falls über SHOWINT der Interrupt 0Fh überwacht werden soll, muß
- folgendes beachtet werden:
-
- Der Interrupt-Controller 8259A behandelt alle nicht eindeutig iden-
- tifizierbaren Interrupt-Aufrufe und Störimpulse auf den Interrupt-
- Leitungen als IRQ7. Da der Drucker-Interrupt 0Fh ebenfalls über den
- IRQ7 läuft, muß in der Routine für den Drucker-Interrupt normaler-
- weise getestet werden, ob wirklich ein Interrupt oder nur ein Stör-
- impuls vorliegt. Da SHOWINT dies nicht macht, werden vom Programm
- auch alle o.a. Ausnahmen als Interrupt 0Fh ausgegeben.
-
-
- Nicht zurückkehrende Interrupts sollten nur mit äußerster Vorsicht
- abgebrochen werden, da normalerweise jedes Programm davon ausgeht,
- daß diese niemals zurückkehren!
-
-
- Hardware-Interrupts dürfen nicht im Abbruchmodus überwacht werden,
- da SHOWINT keinerlei Interrupt-Bestätigungen an den Controller oder
- an den den Interrupt auslösenden Baustein gibt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 166
-
-
-
- SHOW2FP.COM
-
- SHOW2FP ist ein Programm zum Testen der Prozessnummern des Inter-
- rupts 2Fh.
-
- Aufruf: SHOW2FP {prozessnummer} {@ kommentar}
-
- Parameter:
-
- prozessnummer
-
- 'prozessnummer' ist die zu testende Prozessnummer des Interrupts
- 2Fh (hex., Interavll: 0C0h..0FEh).
-
- @ - Rest der Parameter überlesen
-
- Ist eine Prozessnummer angegeben, gibt SHOW2FP aus, ob diese und
- die folgende Prozessnummer schon belegt ist oder nicht.
-
- Wird kein Parameter angegeben, so gibt SHOW2FP alle belegten Pro-
- zessnummern zwischen C0h und FFh aus.
-
-
- FREESTCK.COM
-
- Programm zur Freigabe aller belegten und übergelaufenen Stack-
- Frames der STACK-Verwaltung.
- (erst ab DOS 3.3 vorhanden, siehe 'Stack-Überlauf')
-
- Aufruf: FREESTCK
-
-
- MDCGADRV.ASM (VV)
-
- Quelltext des Treibers MDCGADRV.COM
- (ausführlich kommentierter Assemblertext für den A86)
-
-
- MDHGCDRV.ASM (VV)
-
- Quelltext des Treibers MDHGCDRV.COM
- (ausführlich kommentierter Assemblertext für den A86)
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 167
-
-
-
- MDDRIVER.ASM (VV)
-
- Gerüst zur Programmierung von eigenen Bildschirmtreibern.
- (ausführlich kommentierter Assemblertext für den A86)
- MDDRIVER.ASM enthält schon die gesamte Logik des Treibers; was
- fehlt sind nur die Routinen zum Erkennen, Sichern und Restaurieren
- der Bildschirmdaten.
-
-
- MDBSPDRV.ASM (VV)
-
- Quelltext des Kommandotreibers MDBSPDRV.COM (residenter Teil)
- (ausführlich kommentierter Assemblertext für den A86)
-
- MDBSPDRV.INC (VV)
-
- Quelltext des Kommandotreibers MDBSPDRV.COM (transienter Teil)
- (ausführlich kommentierter Assemblertext für den A86)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- MDEBUG - Benutzer- und Referenz-Handbuch Seite 168