home *** CD-ROM | disk | FTP | other *** search
/ Best of German Only 2 / romside_best_of_german_only_2.iso / dos / utility / mdebug / mdebug21.exe / MDEBUG.PRT < prev   
Text File  |  1992-11-21  |  311KB  |  10,201 lines

  1.     ───────────────────────────────────────────────────────────────────
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.                                  MDEBUG
  10.  
  11.                              Version  V2.05
  12.  
  13.                            Release 01.12.1992
  14.  
  15.                   Highperformance Debugging Tool für PCs
  16.  
  17.  
  18.                            Copyright 1992 by
  19.                              Bernd Schemmer
  20.                           All Rights reserved.
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.     ───────────────────────────────────────────────────────────────────
  64.     Credits
  65.  
  66.     MDEBUG wurde geschrieben von Bernd Schemmer.
  67.  
  68.  
  69.     ───────────────────────────────────────────────────────────────────
  70.     Copyright
  71.  
  72.     MDEBUG ist Copyright 1988 - 1992 by Bernd Schemmer
  73.  
  74.     Dieses Dokument ist Copyright 1992 by Bernd Schemmer
  75.  
  76.  
  77.     ───────────────────────────────────────────────────────────────────
  78.     Eingetragene Warenzeichen, Warennamen
  79.  
  80.     Warenamen und eingetragene Warenzeichen werden in diesem Text ohne
  81.     Gewährleistung einer freien Verwendung benutzt.
  82.     Alle  benutzten  Warenanamen  und  eingetragenen Warenzeichen sind
  83.     Eigentum ihrer jeweiligen Besitzer.
  84.  
  85.  
  86.     ───────────────────────────────────────────────────────────────────
  87.     Granatie-Ausschluß-Erklärung
  88.  
  89.  
  90.     Bernd Schemmer  gibt keine  Garantien irgendeiner  Art,  weder aus-
  91.     drücklich noch implizit, einschliesslich unbegrenzt aller Garantien
  92.     der  Verwendbarkeit  und/oder  Nichtverwendbarkeit  für irgendeinen
  93.     Zweck.  Bernd Schemmer  übernimmt  keine  Verpflichtungen  für  den
  94.     Gebrauchswert dieser Software  über den  Kaufpreis  dieser Software
  95.     hinaus.  Unter  keinen  Umständen  ist  Bernd Schemmer haftbar  für
  96.     jedwede Folgeschäden, einschliesslich aller entgangenen Gewinne und
  97.     Vermögensverluste,  oder  anderer   mittelbarer  und  unmittelbarer
  98.     Schäden,  die  durch  den  Gebrauch  oder  die  Nichtverwendbarkeit
  99.     dieser Software  und ihrer  begleitenden  Dokumentation  entstehen.
  100.     Dies gilt  auch  dann,  wenn  Bernd Schemmer  über die  Möglichkeit
  101.     solcher Schäden unterrichtet war oder ist.
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.     ───────────────────────────────────────────────────────────────────
  120.      
  121.  
  122.  
  123.  
  124.  
  125.     Inhalt                                                 Seite
  126.     ────────────────────────────────────────────────────────────
  127.  
  128.  
  129.     Kurzbeschreibung von MDEBUG ..........................     1
  130.     Benutzung von MDEBUG .................................     2
  131.     Nichtgewerbliche Weitergabe von MDEBUG ...............     3
  132.     Vertrieb von MDEBUG über PD-Händler und Mailboxen ....     4
  133.     System-Vorraussetzungen ..............................     5
  134.     Einschränkungen ......................................     5
  135.     Vorbereitungen vor dem Start .........................     6
  136.     Eintragen der Registrierungsnummer ...................     6
  137.     Passwort .............................................     7
  138.     Prozessnummer überprüfen .............................     9
  139.     Starten von MDEBUG ...................................    10
  140.     Parameter für MDEBUG .................................    10
  141.       INT=[0|{nn}{,N}] ...................................    10
  142.       CoM=nn .............................................    11
  143.       CoD=nn .............................................    11
  144.       CoHm=nn ............................................    11
  145.       CoC=nn{,mm} ........................................    12
  146.       RoM=nn .............................................    12
  147.       RoD=nn .............................................    12
  148.       RoH=nn .............................................    12
  149.       SEG=[nnnn|reg] .....................................    12
  150.       OFF=[nnnn|reg] .....................................    12
  151.       STD ................................................    13
  152.       STM ................................................    13
  153.       STH ................................................    13
  154.       KEY=X{n} ...........................................    13
  155.       SET ................................................    13
  156.       EXIT ...............................................    14
  157.       &name{,{nnnn}}{,{mmmm}}{,N} ........................    15
  158.       *name{,{nnnn}}{,{mmmm}}{,N} ........................    17
  159.       HELP{={pfad}{name}} ................................    18
  160.       NOHELP .............................................    18
  161.       BUF=nnnn ...........................................    19
  162.       TEXT{=nnnn}{,m} ....................................    19
  163.       GRAPH ..............................................    20
  164.       REALCURSOR=n .......................................    20
  165.       LOADx ..............................................    20
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.     ────────────────────────────────────────────────────────────────────────────────
  180.     Inhalts-Verzeichnis                                                     I    1
  181.  
  182.  
  183.  
  184.  
  185.     Inhalt                                                 Seite
  186.     ────────────────────────────────────────────────────────────
  187.  
  188.  
  189.       PRO=nn .............................................    20
  190.       ? ..................................................    21
  191.       DEF ................................................    21
  192.       # ..................................................    21
  193.       MAKE ...............................................    22
  194.       MF2 ................................................    22
  195.       NoMF2 ..............................................    22
  196.       @ ..................................................    22
  197.     Errorlevel ...........................................    24
  198.     Voreinstellungen .....................................    24
  199.     Aufruf über den Hotkey ...............................    25
  200.     Beschreibung des Monitors ............................    26
  201.       Aufbau des Monitor-Fensters ........................    26
  202.       Tastenbelegung im Monitor ..........................    29
  203.     Beschreibung der Online-Hilfe ........................    38
  204.         Aufbau des Fensters der Online-Hilfe .............    38
  205.         Tastenbelegung in der Online-Hilfe ...............    39
  206.     Beschreibung des Interpreters ........................    40
  207.       Aufbau des Interpreter-Fensters ....................    40
  208.       Tasten-Belegung im Interpreter .....................    43
  209.       Tastenumbelegungen im Interpreter ..................    49
  210.       Befehle des Interpreters ...........................    49
  211.         ?{...} ...........................................    50
  212.         V{...} {reg1}{,}{reg2} ...........................    51
  213.         #26{...} {seg1:}[reg1|wert1] {...}{#26} ..........    51
  214.         #27{...} {seg1:}[reg1|wert1] .....................    52
  215.         #27{...}H {seg1:}[reg1|wert1] ....................    53
  216.         D{UMP} Mn ........................................    53
  217.         P{OINTER} {seg1:}[reg1|wert1] ....................    53
  218.         A{DD} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ....    53
  219.         S{UB} {seg1:}[reg1|wert1],{seg2}[reg2|wert2] .....    53
  220.         a{dc} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ....    53
  221.         s{bc} {seg1:}[reg1|wert1],{seg2}[reg2|wert2] .....    54
  222.         + {seg1:}[reg1|wert1] ............................    54
  223.         - {seg1:}[reg1|wert1] ............................    54
  224.         > {seg1:}[reg1|wert1] ............................    54
  225.         < {seg1:}[reg1|wert1] ............................    54
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.     ────────────────────────────────────────────────────────────────────────────────
  240.     Inhalts-Verzeichnis                                                     I    2
  241.  
  242.  
  243.  
  244.  
  245.     Inhalt                                                 Seite
  246.     ────────────────────────────────────────────────────────────
  247.  
  248.  
  249.         » {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........    54
  250.         « {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........    55
  251.         & {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........    55
  252.         | {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........    55
  253.         ! {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........    55
  254.         T {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ........    55
  255.         N{EG} {seg1:}[reg1|wert1] ........................    55
  256.         M{OV} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2] ....    56
  257.         C{OP}Y ...........................................    56
  258.         I{NT} [reg|wert] .................................    56
  259.         B b1{{,}b2..{,}bn} ...............................    57
  260.         G{O} [reg|wert] ..................................    58
  261.         / hilfreg ........................................    59
  262.         \ hilfreg ........................................    59
  263.         # hilfreg ........................................    59
  264.         W{AIT} ...........................................    59
  265.         H{OME} {[reg|wert]} ..............................    60
  266.         H{...}N {[reg|wert]} .............................    60
  267.         ¿ [reg|wert] .....................................    61
  268.         ¿H [reg|wert] ....................................    62
  269.         F {n} ............................................    62
  270.         FX ...............................................    62
  271.         @ {...} ..........................................    62
  272.         Q{UIT} ...........................................    63
  273.         Q{UIT}R ..........................................    63
  274.         Q{UIT}L ..........................................    63
  275.         SH [suchmaske] {,}{...} ..........................    64
  276.       Bedeutung der Parameter ............................    69
  277.       Konstanten .........................................    73
  278.       Ausdruck ...........................................    75
  279.       Adressierung von Speicherstellen ...................    81
  280.       Syntax der Befehle .................................    81
  281.       Syntax der Operanden ...............................    84
  282.       Sonstiges ..........................................    84
  283.     Aufruf von MDEBUG im Graphikmodus ....................    86
  284.     Funktionen der Bildschirmtreiber .....................    87
  285.       Funktion 0  - Get Driver Status ....................    88
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.     ────────────────────────────────────────────────────────────────────────────────
  300.     Inhalts-Verzeichnis                                                     I    3
  301.  
  302.  
  303.  
  304.  
  305.     Inhalt                                                 Seite
  306.     ────────────────────────────────────────────────────────────
  307.  
  308.  
  309.       Funktion 1  - Init Driver ..........................    89
  310.       Funktion 2  - Save Graphik data ....................    89
  311.       Funktion 3  - Restore Graphik data .................    90
  312.       Funktion 4  - Show saved data ......................    90
  313.       Funktion 5  - Switch back to text screen ...........    91
  314.       Funktionen 06 bis 7Fh - reserviert .................    91
  315.       Funktionen 80h bis 0FFh - reserviert ...............    91
  316.     Erweiterungen von MDEBUG mittels Kommandotreiber .....    92
  317.     Funktionen der Kommandotreiber .......................    93
  318.       Funktion 0  - Get Status ...........................    94
  319.       Funktion 1  - Init Driver ..........................    95
  320.       Funktion 2  - Execute interpreter command ..........    96
  321.       Funktion 3  - Execute key in the monitor ...........   100
  322.       Funktion 4  - Execute key in the interpreter .......   101
  323.       Funktionen 05h bis 0Ah - reserviert ................   102
  324.       Funktionen 10h - Get adress of the old interrupt 
  325.     2Fh ..................................................   102
  326.       Funktion 11h - Start Driver ........................   103
  327.       Funktion 12h - End Driver ..........................   103
  328.       Funktionen 13h bis 7Fh - reserviert ................   104
  329.       Funktionen 80h bis 0FFh - reserviert ...............   104
  330.     Zusätzlicher User-Interrupt ..........................   105
  331.       Funktion 0 - Status ermitteln ......................   106
  332.       Funktion 1 - Ermittle Adresse der Hilfsregister ....   107
  333.       Funktion 2 - Status setzen .........................   108
  334.       Funktion 3 - Aufruf von MDEBUG .....................   109
  335.       Funktion 4 - Aufruf von MDEBUG mit den akt. Werten .   109
  336.       Funktion 5 - Lösche oder Setze Flags von MDEBUG ....   110
  337.       Funktion 6 - Ermittle Passwort-Status ..............   110
  338.       Funktion 7 - Ermittle aktiven Teil von MDEBUG ......   111
  339.       Funktionen 8 bis 0FFh - reserviert .................   111
  340.       Sonstiges zum User-Int .............................   111
  341.     Anhang A .............................................   112
  342.       Fehlermeldungen beim Aufruf von MDEBUG .............   113
  343.       Meldungen des Interpreters von MDEBUG ..............   121
  344.       Weitere Meldungen des Interpreters von MDEBUG ......   122
  345.     Anhang B .............................................   123
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.     ────────────────────────────────────────────────────────────────────────────────
  360.     Inhalts-Verzeichnis                                                     I    4
  361.  
  362.  
  363.  
  364.  
  365.     Inhalt                                                 Seite
  366.     ────────────────────────────────────────────────────────────
  367.  
  368.  
  369.       Programm-Interna ...................................   123
  370.       Hinweise für die Fehlersuche - Trouble-Shooting ....   124
  371.       Stack-Überlauf .....................................   131
  372.       Tastatur-Codes .....................................   132
  373.       Make-Code der Aufruf-Taste .........................   134
  374.       Verträglichkeit gegenüber anderen Programmen .......   135
  375.     Anhang C .............................................   136
  376.       Installieren von MDEBUG ............................   137
  377.       Ändern der Tastenbelegung von MDEBUG ...............   138
  378.     Anhang D .............................................   145
  379.     Utilities und Beispieldateien zu MDEBUG ..............   145
  380.       MDEBUG.HLP .........................................   146
  381.       MDHELP.INP  (VV) ...................................   146
  382.       MDMKHLP.COM  (VV) ..................................   146
  383.       MDSHELP.COM  (VV) ..................................   152
  384.       SETMD.EXE ..........................................   152
  385.       SETREGNR.EXE  (VV) .................................   153
  386.       CALLMDB.COM  (VV) ..................................   153
  387.       DISSTAT.COM  (VV) ..................................   157
  388.       TESTMD.PAS .........................................   158
  389.       TESTMD.EXE .........................................   158
  390.       CHECKMD.A86 ........................................   158
  391.       CHECKMD.OBJ ........................................   158
  392.       CALLMD.A86 .........................................   158
  393.       CALLMD.OBJ .........................................   158
  394.       MDCMD.A86 ..........................................   159
  395.       MDCMD.OBJ ..........................................   159
  396.       KONVERT.A86 ........................................   159
  397.       KONVERT.OBJ ........................................   159
  398.       UPSTR.BIN ..........................................   159
  399.       LOWSTR.BIN .........................................   159
  400.       UPSTR.A86 ..........................................   159
  401.       LOWSTR.A86 .........................................   159
  402.       SHOW2FP.COM ........................................   160
  403.       FREESTCK.COM .......................................   160
  404.       MDCGADRV.ASM  (VV) .................................   160
  405.       MDHGCDRV.ASM  (VV) .................................   160
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.     ────────────────────────────────────────────────────────────────────────────────
  420.     Inhalts-Verzeichnis                                                     I    5
  421.  
  422.  
  423.  
  424.  
  425.     Inhalt                                                 Seite
  426.     ────────────────────────────────────────────────────────────
  427.  
  428.  
  429.       MDDRIVER.ASM  (VV) .................................   161
  430.       MDBSPDRV.ASM  (VV) .................................   161
  431.       MDBSPDRV.INC  (VV) .................................   161
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.     ────────────────────────────────────────────────────────────────────────────────
  480.     Inhalts-Verzeichnis                                                     I    6
  481.  
  482.  
  483.  
  484.     Kurzbeschreibung von MDEBUG
  485.     ───────────────────────────
  486.  
  487.     MDEBUG ist  ein speicherresidentes Debugging-Tool für PCs bestehend
  488.     aus einem  Speichermonitor, einem  Interpreter mit eigener Program-
  489.     miersprache und einem interaktiven und selektiven DisAssembler.
  490.     MDEBUG  wurde ursprünglich für die Ermittlung  von undokumentierten
  491.     Strukturen des Betriebssystems MS-DOS  entwickelt,  kann aber viel-
  492.     fältig eingesetzt werden.  (z.B. zur Unterstützung bei der Program-
  493.     mierung).
  494.  
  495.     MDEBUG  sollte  nur von Programmierern mit gutem Wissen über  ihren
  496.     PC und dem Betriebssystem MS-DOS bzw. PC-DOS verwendet werden.
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.     ────────────────────────────────────────────────────────────────────────────────
  540.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    1
  541.  
  542.  
  543.  
  544.     Benutzung von MDEBUG
  545.     ────────────────────
  546.  
  547.     MDEBUG ist  ein  Shareware-Programm, dessen  Copyright  beim  Autor
  548.     liegt.
  549.  
  550.     Die Shareware-Version von MDEBUG kann für 4 Wochen getestet werden.
  551.     Danach  muß  entschieden werden, ob MDEBUG  weiter  benutzt  werden
  552.     soll oder  nicht. Falls  MDEBUG  nach der  Probezeit weiter benutzt
  553.     werden soll, muß die Vollversion erworben werden.
  554.  
  555.     Die Vollversion von MDEBUG kostet 75,- DM und kann mit dem Formular
  556.     aus der Datei MDEBUG.FRM bestellt werden.
  557.  
  558.     Die Vollversion von MDEBUG enthält:
  559.  
  560.     - die neueste  Version von  MDEBUG incl.  einer eigenen Registrier-
  561.       rungs-nummer. Die Vollversion  ist  identisch  mit der Shareware-
  562.       Version  von MDEBUG. Allerdings kann die  Shareware-Meldung  beim
  563.       Programmstart (incl. der 'Wartezeit')  entfernt werden. Zudem ist
  564.       der Parameter 'MAKE' nur in der Vollversion implementiert. (s.u.)
  565.  
  566.     - weitere  Utilities zur Unterstützung  von MDEBUG, teilweise incl.
  567.       Quellcode (siehe Anhang D)
  568.  
  569.     - Unterstützung bei Problemen mit MDEBUG und bei der Programmierung
  570.       von Bildschirm- oder Kommandotreibern für MDEBUG
  571.  
  572.     - die  Möglichkeit  zum  kostengünstigen Bezug  großer  Updates von
  573.       MDEBUG
  574.  
  575.     Ein großes Update  ist eine Erweiterung von MDEBUG um neue Funktio-
  576.     nen - erkennbar daran, daß  die Hauptversionsnummer geändert wurde.
  577.     Die  Hauptversionnummer  besteht aus  den  Vorkommastellen  und der
  578.     ersten Nachkommastelle der Versionsnummer (bei V1.70 ist die Haupt-
  579.     versionsnummer z.B. 1.7).
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.     ────────────────────────────────────────────────────────────────────────────────
  600.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    2
  601.  
  602.  
  603.  
  604.     Ein  kleines Update  ist eine Korrektur von MDEBUG zur Behebung von
  605.     kleinen Fehlern  und Mängeln - erkennbar  daran,  daß sich  nur die
  606.     Revisions-Nummer (= 2. Nachkommastelle) oder nur das  Release-Datum
  607.     ändert  (ein kleines Update wäre z.B. der Wechsel von Version V1.70
  608.     zu V1.71).
  609.  
  610.     Kleine Updates können  von Besitzern der Vollversion gegen  Erstat-
  611.     tung  der  Porto- und  Verpackungskosten  jederzeit bezogen werden,
  612.     falls die Hauptversion der Vollversion von MDEBUG mit der Hauptver-
  613.     sion der aktuellen Version von MDEBUG übereinstimmt.
  614.  
  615.     Besitzer der  Vollversion von MDEBUG  dürfen diese  auf bis zu zwei
  616.     (ihnen gehörenden!) Computern gleichzeitig benutzen.
  617.  
  618.     Hinweis:
  619.  
  620.     Ein  gedrucktes  Handbuch  für  MDEBUG ist  im  Moment  noch  nicht
  621.     verfügbar,  Besitzer der Vollversion erhalten aber  eine Mitteilung
  622.     falls ein Handbuch verfügbar ist.
  623.  
  624.  
  625.     Nichtgewerbliche Weitergabe von MDEBUG
  626.     ──────────────────────────────────────
  627.  
  628.     Kopien  der Original-Diskette mit der Shareware-Version  von MDEBUG
  629.     können  und  sollen (!) beliebig oft  weitergegeben  werden solange
  630.     keins der Programme und keine der Dateien auf der Diskette geändert
  631.     oder  gelöscht  werden  und  keine  Dateien oder Programme ohne das
  632.     Einverständnis des Autors hinzugefügt werden.
  633.  
  634.     Die Vollversion darf - mit Ausnahme der Datei  MDEBUG_3.EXE - unter
  635.     Berücksichtigung der für  die Shareware-Version  angegebenen Bedin-
  636.     gungen ebenfalls weiter gegeben werden.  Die nur in der Vollversion
  637.     enthaltene  Datei MDEBUG_3.EXE  darf auf keinen Fall weiter gegeben
  638.     werden!
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.     ────────────────────────────────────────────────────────────────────────────────
  660.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    3
  661.  
  662.  
  663.  
  664.     Vertrieb von MDEBUG über PD-Händler und Mailboxen
  665.     ─────────────────────────────────────────────────
  666.  
  667.     Jeder PD-Händler darf die  Shareware-Version von MDEBUG vertreiben,
  668.     solange folgende Punkte eingehalten werden:
  669.  
  670.     - Es dürfen  keine Dateien auf  der Diskette geändert oder gelöscht
  671.       werden.  D.h. alle in der Datei INHALT.LST  aufgelisteten Dateien
  672.       müssen in unveränderter Form vorhanden sein.
  673.  
  674.     - Außer kleineren Info- oder Werbedateien dürfen ohne Absprache mit
  675.       dem Autor keine weiteren Dateien auf die Diskette kopiert werden.
  676.  
  677.     - Es darf immer nur  die neueste  Version von MDEBUG vertrieben
  678.       werden. Händler, die MDEBUG vertreiben wollen, sollten sich daher
  679.       auf meine  Mailing-Liste für Update-Versionen setzen lassen.  Der
  680.       Bezug der Updates von MDEBUG kann auch über die  DS (Deutsche
  681.       Shareware) erfolgen.
  682.  
  683.     - Für den  Vertrieb von MDEBUG darf  eine Gebühr von bis zu 20,- DM
  684.       verlangt werden, solange sichergestellt ist, daß der Käufer weiß,
  685.       das es sich hierbei um  Gebühren des Vertriebs und  NICHT  um den
  686.       Preis von MDEBUG handelt.
  687.  
  688.     - Der Katalogeintrag für MDEBUG muß immer auch den Namen des Autors
  689.       - Bernd Schemmer - enthalten.  Zudem muß aus dem Katalog klar er-
  690.       sichtlich sein, daß es sich um eine Shareware-Version handelt.
  691.       Die Begriffe  Public Domain,  Freie Software oder Freeware dürfen
  692.       mit  Bezug auf MDEBUG weder schriftlich  noch mündlich  verwendet
  693.       werden.
  694.  
  695.     Für die  Katalog-Einträge  sollte  die  Datei 'MDEBUG.TXT' bzw. ein
  696.     Auszug aus dieser verwendet werden.
  697.  
  698.     Für den  Vertrieb  von  MDEBUG über Mailboxen  gelten ebenfalls die
  699.     obigen Bedingungen. Das  Packen ALLER  Dateien auf  der Diskette in
  700.     ein neues Archiv ist für den Vertrieb über Mailboxen gestattet.
  701.  
  702.     Ich  behalte mir  vor,  Vertrieben oder Mailboxen,  die gegen diese
  703.     Bedingungen verstoßen, den Vertrieb von MDEBUG zu untersagen.
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.     ────────────────────────────────────────────────────────────────────────────────
  720.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    4
  721.  
  722.  
  723.  
  724.     System-Vorraussetzungen
  725.     ───────────────────────
  726.  
  727.     Hardware:        IBM-PC/AT/Kompatibler mit einem beliebigem
  728.                      Graphikadapter (CGA, HGC, EGA, VGA, o.a.)
  729.                      Ein zweiter Bildschirm wird unterstützt.
  730.  
  731.                      MDEBUG belegt ca. 16 K Hauptspeicher
  732.                      (Minimum, ohne Online-Hilfe und Treiber)
  733.                      Für die Installation von MDEBUG werden 64 K
  734.                      freier Speicher benötigt.
  735.  
  736.  
  737.     Software:        Betriebssystem MS-DOS/PC-DOS ab Version 3.0
  738.                      oder ein kompatibles Betriebssystem.
  739.                      Für die Übersetzung der Quelltexte wird der
  740.                      Assembler A86 Version V3.22 benötigt.
  741.  
  742.  
  743.     Einschränkungen
  744.     ───────────────
  745.  
  746.     MDEBUG läuft  auf meinem  Rechner fehlerfrei.  Allerdings  kann ich
  747.     natürlich nicht dafür garantieren daß  es auf allen Rechnern läuft.
  748.     (insbesondere  die Verträglichkeit  mit anderen  TSRs,  siehe  auch
  749.     'Verträglichkeit gegenüber anderen Programmen')
  750.  
  751.     Falls  MDEBUG auf  einem  Rechner  nicht läuft  bzw.  nicht korrekt
  752.     läuft, kann ich  versuchen  den Fehler  zu  finden  und  zu beheben
  753.     - falls mir dies mitgeteilt wird. Dies gilt auch für die Shareware-
  754.     Version von MDEBUG.
  755.     Dazu benötige ich dann  die Daten  über die genaue  Ausstattung des
  756.     Rechners  (Speicherausbau,  Graphikadapter,  etc.), die  Namen  und
  757.     Versionsnummern der  normalerweise  geladenen  Programme (incl. der
  758.     DOS-Version) und, bei einer Fehlfunktion von MDEBUG, eine möglichst
  759.     ausführliche Beschreibung des Fehlers.
  760.  
  761.     Da es mit dem Programm MDEBUG prinzipiell auch möglich ist Software
  762.     und Hardware zu beschädigen, übernehme ich für Fehler des Benutzers
  763.     und  für  bisher  von  mir nicht bemerkte  Programmfehler und  sich
  764.     daraus eventuell ergebende Schäden keinerlei Haftung!
  765.  
  766.     Änderungs-, Erweiterungswünsche und Kritik zu MDEBUG sind mir immer
  767.     willkommen.
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.     ────────────────────────────────────────────────────────────────────────────────
  780.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    5
  781.  
  782.  
  783.  
  784.     Vorbereitungen vor dem Start
  785.     ────────────────────────────
  786.  
  787.  
  788.     Vor dem ersten Start von MDEBUG muß einiges beachtet werden:
  789.  
  790.  
  791.     Eintragen der Registrierungsnummer
  792.     ──────────────────────────────────
  793.  
  794.     Besitzer der  Vollversion sollten als erstes  ihre  Registrierungs-
  795.     nummer in die Datei MDEBUG.COM eintragen. Hierzu dient das Programm
  796.     SETREGNR.EXE. SETREGNR  benötigt  keine Parameter  und erfragt alle
  797.     Daten im Dialog mit dem Benutzer.
  798.  
  799.     Hinweis:
  800.  
  801.     Der Parameter  'MAKE' von MDEBUG  kann erst nach der Eintragung der
  802.     Registrierungsnmmer benutzt werden!
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.     ────────────────────────────────────────────────────────────────────────────────
  840.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    6
  841.  
  842.  
  843.  
  844.     Passwort
  845.     ────────
  846.  
  847.     MDEBUG  ist  zur  Sicherung  vor  unbefugten  Benutzern  mit  einer
  848.     (abschaltbaren) Passwort-Abfrage versehen.
  849.  
  850.     Falls die  Passwort-Abfrage aktiv ist, wird das  Passwort bei jedem
  851.     Aufruf über  den Hotkey und  jedem Aufruf  einer der Funktionen des
  852.     User-Ints (mit Ausnahme der Funktion 6, s.u.) abgefragt.
  853.     MDEBUG überprüft vor der Passwort-Abfrage den Bildschirmmodus.  Ist
  854.     dieser nicht korrekt, wird die  Eingabe abgebrochen.
  855.  
  856.                                                      ┌──── MDEBUG ────┐
  857.     Aufbau des Fensters zur Eingabe eines Passworts: │ Passwort: **** │
  858.                                                      └────────────────┘
  859.  
  860.     Das  Passwort ist 4  Zeichen lang und  besteht nur aus  Zeichen mit
  861.     einem ASCII-Code  größer  oder gleich 32 (= Leerzeichen).  Es  wird
  862.     verdeckt  eingegeben, wobei die  Cursorposition die aktuelle Stelle
  863.     im Passwort bei der  Eingabe wiedergibt.  Die  Schreibweise  (groß/
  864.     klein) des Passwortes muß übereinstimmen.
  865.  
  866.     Bei der Eingabe gilt  immer der  Overwrite-Modus; zum Positionieren
  867.     des Cursors können die Tasten
  868.  
  869.          <Home>, <CursorRight>, <CursorLeft> und <BackSpace>
  870.  
  871.     verwendet werden.
  872.  
  873.     <ESC>  bricht die  Abfrage (d.h. den Aufruf)  ab, <RETURN>  beendet
  874.     die Eingabe des Passwortes.
  875.  
  876.     Bei falscher  Eingabe, wird der Aufruf abgebrochen und eine Fehler-
  877.     meldung  (incl.  Fehlerton) ausgegeben. Die Fehlermeldung  muß  mit
  878.     einem Tastendruck  quittiert werden. Die gedrückte Taste wird igno-
  879.     riert.
  880.     Für die Eingabe des Passwortes im Dialog stehen maximal 10 Sekunden
  881.     zur Verfügung  -  nachdem  diese Zeitspanne  abgelaufen ist, bricht
  882.     MDEBUG die Passwort-Abfrage ab (->> der unterbrochene Prozess läuft
  883.     weiter).
  884.  
  885.                                       ┌──── MDEBUG ────┐
  886.     Ausgabe bei falschem Passwort:    │   INKORREKT    │
  887.                                       └────────────────┘
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.     ────────────────────────────────────────────────────────────────────────────────
  900.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    7
  901.  
  902.  
  903.  
  904.     Zur  Änderung  von Variablen  über  einen zweiten Aufruf von MDEBUG
  905.     mit dem Parameter 'SET'  müssen,  falls  die residente Version  mit
  906.     einem aktiven Passwort ausgestattet  ist, ebenfalls die  Passwörter
  907.     beider Versionen übereinstimmen.  Dies gilt auch für den Aufruf von
  908.     MDEBUG mit dem  Parameter 'EXIT'.
  909.  
  910.     Das  Passwort kann  nur in der Datei MDEBUG.COM durch  das Programm
  911.     SETMD.EXE  geändert  werden. Der Aktiv-Schalter des Passwortes kann
  912.     jederzeit während eines Aufrufes gesetzt oder gelöscht werden.
  913.     (s.u.)
  914.     Der Aktiv-Schalter  bestimmt, ob das Passwort abgefragt werden soll
  915.     ('ON') oder  nicht ('OFF'). Der Status des Aktiv-Schalters wird bei
  916.     installiertem Passwort auf dem oberen Rand des Interpreter-Fensters
  917.     angezeigt.
  918.  
  919.     Zu beachten ist, daß  nur immer EINE  Kopie von MDEBUG ein bestimm-
  920.     tes  Passwort hat.  D.h.  auch  wenn  über das  Programm SETMD ver-
  921.     schiedenen Kopien von MDEBUG.COM  das  gleiche  Passwort zugeordnet
  922.     wird, sind die Passwörter der Kopien  NICHT kompatibel.
  923.  
  924.     In der  Original-Version  von MDEBUG ist  noch kein Passwort einge-
  925.     richtet.
  926.  
  927.     Die Fenster zur  Passwort-Abfrage werden in der aktuellen Farbe des
  928.     Bildschirms  ausgegeben.
  929.  
  930.     Hinweis:
  931.  
  932.     Die Sicherheitskopie von MDEBUG sollte immer OHNE Passwort erstellt
  933.     werden!
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.     ────────────────────────────────────────────────────────────────────────────────
  960.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    8
  961.  
  962.  
  963.  
  964.     Prozessnummer überprüfen
  965.     ────────────────────────
  966.  
  967.     MDEBUG  benutzt zur Kommunikation mit den Bildschirm- und Kommando-
  968.     treibern den Multiplex-Interrupt 2Fh. (siehe unten)
  969.  
  970.     Die voreingestellten  Prozessnummern,  die MDEBUG zur Kommunikation
  971.     über den Interrupt 2Fh  belegt,  sind 0D0h und 0D1h.  Vor dem Start
  972.     von MDEBUG muß überprüft werden, ob diese Prozessnummern  schon von
  973.     einem anderen Programm benutzt werden.
  974.  
  975.     Die Überprüfung  der Prozessnummern  kann mit  dem Util SHOW2FP.COM
  976.     gemacht werden. (Vor der Überprüfung der Prozessnummer sollten alle
  977.     Gerätetreiber  und  speicherresidenten Programme, die normalerweise
  978.     benutzt werden, geladen sein.) Der Aufruf von SHOW2FP lautet dann:
  979.  
  980.          SHOW2FP D0 <RETURN>
  981.  
  982.     Sollte  SHOW2FP nun  melden,  daß  eine  der  beiden Prozessnummern
  983.     (die  als  Parameter  angegebene oder die auf diese folgende) schon
  984.     belegt ist,  müssen zuerst zwei freie  aufeinanderfolgende Prozess-
  985.     nummern gesucht werden (Ansonsten kann MDEBUG ohne Änderung benutzt
  986.     werden).
  987.     Dazu ruft mensch SHOW2FP einmal ohne Parameter auf. Also:
  988.  
  989.          SHOW2FP <RETURN>
  990.  
  991.     SHOW2FP gibt nun  alle  belegten  Prozessnummern  zwischen  C0h und
  992.     FFh aus. Nun müssen  zwei aufeinanderfolgende  freie Prozessnummern
  993.     (also  zwei  die  NICHT von SHOW2FP ausgegeben wurden) zwischen C0h
  994.     und FFh gewählt  werden.  Bei JEDER Installation von MDEBUG muß nun
  995.     die niedrigere der beiden Nummern als Prozessnummer für MDEBUG über
  996.     den Parameter 'PRO=nn' explizit angegeben werden.
  997.     Die neuen Prozessnummern müssen ebenfalls beim Aufruf der Kommando-
  998.     und Bildschirmtreiber über den Parameter '/Pnn' angegeben werden.
  999.  
  1000.     Besitzer  der Vollversion  können die  neue Prozessnummer natürlich
  1001.     auch über den Parameter 'MAKE' als neue  Prozessnummer in die Datei
  1002.     MDEBUG.COM eintragen. Sinnvollerweise sollten  die  neuen  Prozess-
  1003.     nummern  auch über  den Parameter '/I'  in  die Kommando- und Bild-
  1004.     schirmtreiber als Voreinstellungen übernommen werden.
  1005.  
  1006.     Es sei hier nochmals darauf hingewiesen,  daß eine falsche Prozess-
  1007.     nummer für MDEBUG das System zum Absturz bringen kann!
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.     ────────────────────────────────────────────────────────────────────────────────
  1020.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite    9
  1021.  
  1022.  
  1023.  
  1024.     Starten von MDEBUG
  1025.     ──────────────────
  1026.  
  1027.     Aufruf: MDEBUG {INT=[0|{nn}{,N}]} {KEY=X{n}}
  1028.                    {CoM=nn} {CoD=nn} {CoHm=nn} {CoC=nn{,mm}}
  1029.                    {RoM=nn} {RoD=nn} {RoH=nn}
  1030.                    {SEG=[nnnn|reg]} {OFF=[nnnn|reg]}
  1031.                    {STD} {STM} {STH}
  1032.                    {SET} {EXIT}
  1033.                    {&name{,{nnnn}}{,{mmmm}}{,N}}
  1034.                    {*name{,{nnnn}}{,{mmmm}}{,N}}
  1035.                    {TEXT{=nnnn}{,m}} {GRAPH} {PRO=nn}
  1036.                    {REALCURSOR=n} {LOAD{H|L}}
  1037.                    {HELP{={pfad}{name}}} {NOHELP} {BUF=nnnn}
  1038.                    {?} {#} {DEF} {MAKE}
  1039.                    {MF2} {NoMF2}
  1040.                    {@ kommentar}
  1041.  
  1042.     Hinweis:
  1043.  
  1044.     Beim  Aufruf  der  Shareware-Version  wird  eine  Shareware-Meldung
  1045.     ausgegeben und  eine kurze  Zeit gewartet. Die Wartezeit kann durch
  1046.     das Betätigen einer Taste beendet werden.
  1047.  
  1048.     Die  angegebenen  Voreinstellungen  beziehen  sich  alle  auf  eine
  1049.     Original-Version von MDEBUG. (siehe Parameter 'MAKE')
  1050.  
  1051.     Eine über den Parameter 'MAKE'  angepasste Version  von MDEBUG gibt
  1052.     zusätzlich bei jedem Aufruf die Meldung
  1053.  
  1054.          Version angepasst.
  1055.  
  1056.     auf die Standard-Ausgabe aus.
  1057.  
  1058.  
  1059.     Parameter für MDEBUG
  1060.  
  1061.  
  1062.     INT=[0|{nn}{,N}]
  1063.  
  1064.     'nn' ist die Nummer des  zusätzlich zu  installierenden Interrupts.
  1065.     (= User-Int, hex., Intervall: 60h .. 67h oder 0h, Voreinst.: 60h)
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.     ────────────────────────────────────────────────────────────────────────────────
  1080.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   10
  1081.  
  1082.  
  1083.  
  1084.     Der angegebene Interrupt darf noch nicht belegt sein  (d.h. Segment
  1085.     und Offset in der Interrupt-Tabelle müssen 0 sein!).
  1086.  
  1087.     Die  explizite Angabe von  0h als Interrupt-Nummer unterdrückt  die
  1088.     Installation eines zusätzlichen Interrupts.
  1089.     Da die  Routinen für den User-Int  aber trotzdem resident  gehalten
  1090.     werden, kann später ein  User-Int über den Aufruf mit dem Parameter
  1091.     'SET' eingerichtet werden.
  1092.  
  1093.     Der Zusatz ',N' verhindert die Überprüfung ob der angegebene Inter-
  1094.     rupt schon belegt ist.
  1095.  
  1096.  
  1097.     CoM=nn
  1098.  
  1099.     'nn' ist das Farb-Attribut des Monitors von MDEBUG
  1100.     (hex., Intervall: 0..0FFh, Voreinst.: 70h)
  1101.  
  1102.     Aufbau des Farb-Attributes:
  1103.     ┌────────┬────────────────────────────────────────┐
  1104.     │ Bit(s) │ Bedeutung                              │
  1105.     ╞════════╪════════════════════════════════════════╡
  1106.     │  0..3  │ Binärcodierung der Vordergrund-Farbe   │
  1107.     │        │ Intervall: 0..0Fh                      │
  1108.     │  4..6  │ Binärcodierung der Hintergrund-Farbe   │
  1109.     │        │ Intervall: 0..07h                      │
  1110.     │  7     │ 1 = Blinken, 0 = kein Blinken          │
  1111.     │        │ oder (je nach Modus der Graphik-Karte) │
  1112.     │        │ 1 = Hell, 0 = normal                   │
  1113.     └────────┴────────────────────────────────────────┘
  1114.  
  1115.  
  1116.     CoD=nn
  1117.  
  1118.     'nn' ist das Farb-Attribut des Interpreters von MDEBUG
  1119.     (hex., Intervall: 0..0FFh, Voreinst.: 70h)
  1120.     Aufbau des Attributes: siehe Parameter 'CoM'
  1121.  
  1122.  
  1123.     CoHm=nn
  1124.  
  1125.     'nn' ist das Farb-Attribut für die Hilfsfarbe m der Online-Hilfe
  1126.     von MDEBUG (m gleich 1, 2 oder 3).
  1127.     ('nn': hex., Invervall: 0..0FFh, Voreinstellungen:
  1128.      'm' = 1 -> 07h  'm' = 2 -> 0Fh  'm' = 3 -> 70h)
  1129.     Aufbau des Attributes: siehe Parameter 'CoM'
  1130.  
  1131.     Der Parameter wird ignoriert,  falls die Online-Hilfe nicht geladen
  1132.     ist.
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.     ────────────────────────────────────────────────────────────────────────────────
  1140.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   11
  1141.  
  1142.  
  1143.  
  1144.     CoC=nn{,mm}
  1145.  
  1146.     'nn' ist  das  Farb-Attribut für  den  Cursor  im Insert-Modus  des
  1147.     Interpreters (hex., Intervall: 0..0FFh, Voreinst.: F1h) und 'm' ist
  1148.     das Farb-Attribut des  Cursors im Overwrite-Modus (hex., Intervall:
  1149.     0..0FFh, Voreinst.: F9h).
  1150.     Falls 'mm' fehlt, bildet  MDEBUG  den  Wert  durch  Vertauschen der
  1151.     beiden Nibbles von 'nn'.
  1152.  
  1153.     Aufbau der Attribute: siehe Parameter 'CoM'
  1154.  
  1155.  
  1156.     RoM=nn
  1157.  
  1158.     'nn' ist die erste Zeile für die Anzeige des Monitors
  1159.     (hex., Intervall: 01h..0Eh, Voreinst.: 02h)
  1160.  
  1161.  
  1162.     RoD=nn
  1163.  
  1164.     'nn' ist die erste Zeile für die Anzeige des Interpreters
  1165.     (hex., Intervall: 01h..0Ch, Voreinst.: 0Ch)
  1166.  
  1167.  
  1168.     RoH=nn
  1169.  
  1170.     'nn' ist die erste Zeile für das Window der Online-Hilfe
  1171.     (hex., Intervall: 01..0Eh, Voreinst.: 01h);
  1172.  
  1173.     Der  Parameter  hat keine  Wirkung,  falls die  Online-Hilfe  nicht
  1174.     geladen ist.
  1175.  
  1176.  
  1177.     SEG=[nnnn|reg]
  1178.  
  1179.     'nnnn' ist die Voreinstellung für den Wert des Registers SE.
  1180.     (hex., Intervall: 0000h..FFFFh, Voreinst.: FE00h)
  1181.  
  1182.     'reg' ist der Name des Registers  aus dem das  Segment der Monitor-
  1183.     Start-Adresse ermittelt wird. 'reg' muß ein Wort-Register sein.
  1184.  
  1185.  
  1186.     OFF=[nnnn|reg]
  1187.  
  1188.     'nnnn' ist die Voreinstellung für den Wert des Registers OF.
  1189.     (hex., Intervall: 0000h..FFFFh, Voreinst.: 0000h)
  1190.  
  1191.     'reg'  ist der Name des Registers  aus dem  der Offset der Monitor-
  1192.     Start-Adresse  ermittelt  wird. 'reg'  muß ein Wort-Register sein.
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.     ────────────────────────────────────────────────────────────────────────────────
  1200.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   12
  1201.  
  1202.  
  1203.  
  1204.     STD
  1205.  
  1206.     Start beim Aufruf sofort im Interpreter
  1207.  
  1208.  
  1209.     STM
  1210.  
  1211.     Start beim Aufruf im Monitor (Voreinstellung)
  1212.  
  1213.  
  1214.     STH
  1215.  
  1216.     Start beim Aufruf sofort in der Online-Hilfe
  1217.     Der  Parameter  hat  keine Wirkung,  falls die  Online-Hilfe  nicht
  1218.     geladen ist.
  1219.  
  1220.  
  1221.     KEY=X{n}
  1222.  
  1223.     'X' ist die Hotkey-Taste von MDEBUG
  1224.     (Zeichen, Intervall: 'A'..'Z', Voreinstellung: 'Y')
  1225.     Der SCAN-Code wird von MDEBUG selbstständig ermittelt.
  1226.     'n' ist die  Codierung  der  Umschalttasten  bei  Aufruf von MDEBUG
  1227.     über den Hotkey als hexadezimaler Wert.
  1228.     (hex., Intervall: 01..0Fh; Voreinstellung: 0Ch (=8+4) = <CTRL-ALT>)
  1229.  
  1230.     Für die Codierung der Umschalttasten gelten folgende Werte:
  1231.  
  1232.     ┌─────────────────┬────────┐
  1233.     │  Taste          │   Wert │       Kombinationen der Umschalttasten
  1234.     ╞═════════════════╪════════╡       können durch  Addition  erreicht
  1235.     │ SHIFT rechts    │    01  │       werden.
  1236.     │ SHIFT links     │    02  │       Der  Status  der anderen Sonder-
  1237.     │ CTRL-Taste      │    04  │       tasten ist nicht abfragbar.
  1238.     │ ALT-Taste       │    08  │
  1239.     └─────────────────┴────────┘
  1240.  
  1241.  
  1242.     SET
  1243.  
  1244.     Die explizit  angegebenen Parameter werden an eine  schon residente
  1245.     Version weitergegeben,  MDEBUG  installiert sich nicht zum zweiten-
  1246.     mal.  Zur Änderung der  Werte einer  residenten  Version  MUSS  der
  1247.     Parameter angegeben werden (auch für die Parameter HELP, *name  und
  1248.     &name, s.u.).
  1249.  
  1250.     Falls  die residente  Version mit  einem aktiven  Passwort versehen
  1251.     ist,  muß  das Passwort  des residenten MDEBUG mit dem Passwort des
  1252.     transienten  MDEBUG  übereinstimmen.
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.     ────────────────────────────────────────────────────────────────────────────────
  1260.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   13
  1261.  
  1262.  
  1263.  
  1264.     Das Aktiv-Flag von MDEBUG und das Warte-Flag für den  automatischen
  1265.     Aufruf  falls DOS nicht  aktiv ist (s.u.)  werden auch bei falschem
  1266.     Passwort zurückgesetzt.
  1267.  
  1268.     Der Aufruf zur Änderung von Variablen einer residenten Version kann
  1269.     auch aus der DOS-Shell eines Programms erfolgen, da sich MDEBUG nur
  1270.     einmal installieren lässt.
  1271.  
  1272.     Ist  noch keine  Version installiert,  wird der Parameter ignoriert
  1273.     und MDEBUG wird mit den angegebenen Parametern installiert.
  1274.  
  1275.     Für die  Übergabe von Parametern an eine schon installierte Version
  1276.     gilt:
  1277.  
  1278.     Falls  ein neuer  User-Int  erfolgreich installiert wurde, wird der
  1279.     Eintrag in der Interrupt-Tabelle für den alten User-Interrupt auf 0
  1280.     zurückgesetzt.  Falls  der als Nummer für  den User-Int 0 angegeben
  1281.     wird, wird der User-Int temporär deaktiviert.
  1282.  
  1283.     Nicht berücksichtigt werden die Parameter
  1284.  
  1285.          'STD', 'STM', 'STH',
  1286.          'BUF', 'NOHELP', 'LOADx',
  1287.          'SEG=reg', 'OFF=reg'.
  1288.  
  1289.     Alle anderen  Parameter werden wie bei der Erst-Installation behan-
  1290.     delt und an die residente Version übergeben.
  1291.     Der Parameter  'SET'  arbeitet  unabhängig  davon, ob ein  User-Int
  1292.     installiert ist oder nicht.
  1293.  
  1294.  
  1295.     EXIT
  1296.  
  1297.     Entfernen von MDEBUG aus dem Speicher
  1298.  
  1299.     Vorraussetzung für  das Entfernen  von MDEBUG aus dem Speicher ist,
  1300.     daß  MDEBUG  das  letzte  Programm in  den Interrupt-Ketten für den
  1301.     Interrupt 08h  und dem  Interrupt 09h ist. Ist dies nicht der Fall,
  1302.     gibt  MDEBUG  eine  Fehlermeldung aus  und bleibt  resident und an-
  1303.     sprechbar.
  1304.  
  1305.     Der Parameter  wird bei  der Erstinstallation ignoriert,  ansonsten
  1306.     hat er Vorrang vor allen anderen  Parametern.  Eventuell zusätzlich
  1307.     angegebene Parameter werden  nur auf die Syntax geprüft, aber nicht
  1308.     ausgeführt.
  1309.     Vor dem  Entfernen von  MDEBUG  werden  die  Interrupts 09h und 08h
  1310.     wieder  auf die alte Routine gelenkt und die Adresse  eines instal-
  1311.     lierten User-Ints in der Interrupt-Tabelle wird auf die Adresse 0:0
  1312.     zurückgesetzt.  Falls  ein Passwort  installiert ist, gilt dasselbe
  1313.     wie für den Parameter 'SET'.
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.     ────────────────────────────────────────────────────────────────────────────────
  1320.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   14
  1321.  
  1322.  
  1323.  
  1324.     &name{,{nnnn}}{,{mmmm}}{,N}
  1325.  
  1326.     Einlesen einer Datei in das PSP von MDEBUG.
  1327.  
  1328.     'name' ist  der Name  (evtl. inclusive Pfad) der zu lesenden Datei.
  1329.     Hinter dem  '&' und vor und  hinter den Kommata dürfen  keine Leer-
  1330.     zeichen stehen.
  1331.  
  1332.     Die Datei wird beim Lesen folgendermaßen konvertiert:
  1333.  
  1334.     LineFeeds  (LF, ASCII-Code 0Ah)  werden  überlesen, CarriageReturns
  1335.     (CR, ASCII-Code 0Dh) werden  in Null-Bytes  umgewandelt und  hinter
  1336.     dem letzten gelesenen Zeichen fügt MDEBUG ein Null-Wort an.
  1337.     Das  Zeichen '@' gilt  als Kommentar-Einleitung, d.h. alle  Zeichen
  1338.     hinter einem '@' bis zum nächsten CR (= Zeilenende) in der Eingabe-
  1339.     datei werden überlesen. Zeilen die nur aus einem Kommentar bestehen
  1340.     werden vollständig überlesen, wobei auch das abschließende CR nicht
  1341.     übernommen wird. Falls das  Zeichen  '@' ins PSP  übernommen werden
  1342.     soll, muß es als '@@' angegeben werden.
  1343.  
  1344.     Beispiel für eine Eingabe-Datei für den Parameter '&name':
  1345.  
  1346.            0        1         2         3
  1347.     Spalte 123456789012345678901234567890...
  1348.            ─────────────────────────────────
  1349.            @ Kommentarzeile (wird nicht übernommen!)
  1350.            1. Zeile
  1351.            2. Zeile @ Kommentar (wird nicht übernommen)
  1352.            3. Zeile
  1353.            4. Zeile @@ kein Kommentar, wird übernommen
  1354.            5. Zeile @ weiterer Kommentar
  1355.            6. Zeile
  1356.            @ weitere Kommentarzeile
  1357.            @ weitere Kommentarzeile
  1358.            7. Zeile
  1359.            ...
  1360.  
  1361.     Bei der Erstinstallation wird durch diesen Parameter zusätzlich das
  1362.     Register SE mit dem PSP-Segment von MDEBUG und das  Register OF mit
  1363.     dem Wert 'nnnn' geladen.
  1364.     Falls  der  Parameter 'SE=nnnn' bzw. 'OF=nnnn' angegeben  ist, wird
  1365.     das entsprechende Register allerdings nicht überschrieben.
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.     ────────────────────────────────────────────────────────────────────────────────
  1380.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   15
  1381.  
  1382.  
  1383.  
  1384.     'nnnn' ist der Offset im PSP ab dem die Datei gelesen werden soll.
  1385.     (hex.,  Voreinstellung bei der Erstinstallation: 80h,  bei Aufrufen
  1386.      zur Änderung einer installierten Version: 00h;  Intervall  bei der
  1387.      Erstinstallation: 80h..0FDh,  bei Aufrufen  zur Änderung einer in-
  1388.      stallierten Version: 00h..0FDh)
  1389.  
  1390.     'mmmm' ist die Anzahl zu lesender Bytes.
  1391.     (dez.,  Voreinstellung: 256-nnnn, Intervall: 0..(256-nnnn))
  1392.  
  1393.     Der Zusatz ,N unterdrückt die Interpretierung der Zeichen der Datei
  1394.     (keine Kommentare,  keine Umwandlung von CR/LFs,  kein zusätzliches
  1395.     Null-Wort als Endekennung).
  1396.  
  1397.     Falls ein Schalter nicht angegeben werden  soll, ein folgender aber
  1398.     doch,  muß  der  weggelassene  Schalter  durch ein  Komma angegeben
  1399.     werden.
  1400.  
  1401.     Beispiel:  &psp.inp,,,n
  1402.  
  1403.     Es werden nur die ersten 1024 Bytes der Datei berücksichtigt.
  1404.  
  1405.     Die Zeilenlänge der Datei ist beliebig. Leerzeilen  in der Eingabe-
  1406.     Datei für '&name' führen zu einem Null-Wort im Speicher das bei der
  1407.     Sicherung  über den Parameter '*name'  ohne  den Schalter ',N'  als
  1408.     Ende-Kennung des  zu sichernden Speicherbereichs genommen wird.
  1409.  
  1410.     Falls  der  Parameter '&name' erfolgreich ausgeführt werden konnte,
  1411.     wird folgende Meldung auf die Standard-Ausgabe ausgegeben:
  1412.  
  1413.          xxxxx Bytes aus der Datei <name>
  1414.          nach nnnnh:mmmmh eingelesen
  1415.  
  1416.     Hierbei wird nnnn  durch  das  PSP-Segment der  veränderten MDEBUG-
  1417.     Version und mmmm durch den Offset ab dem die Datei eingelesen wurde
  1418.     ersetzt. xxxx ist die Anzahl der übernommen Bytes, also nicht unbe-
  1419.     dingt  die Anzahl  der  gelesenen Bytes da  CR und LF hier  als ein
  1420.     Zeichen gelten (falls der Schalter ',N' nicht angegeben ist).
  1421.  
  1422.     Falls der Parameter 'SET' angegeben ist,  wird das PSP der residen-
  1423.     ten Version als Zielbereich genommen (falls vorhanden).
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.     ────────────────────────────────────────────────────────────────────────────────
  1440.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   16
  1441.  
  1442.  
  1443.  
  1444.     *name{,{nnnn}}{,{mmmm}}{,N}
  1445.  
  1446.     Sichern des PSP einer residenten Version von MDEBUG in einer Datei.
  1447.  
  1448.     'name' ist  der  Name (evtl. inclusive  Pfad) der  zu  erstellenden
  1449.     Datei. Hinter dem '*'  und  vor und hinter den Kommata dürfen keine
  1450.     Leerzeichen stehen.
  1451.  
  1452.     Die Bytes im PSP ab dem Offset 'nnnn' bis zum ersten Null-Wort bzw.
  1453.     bis zum Offset 'nnnn+mmmm' werden in die Datei  'name' geschrieben.
  1454.     Dabei werden einzelne Null-Bytes in CR/LF-Sequenzen umgesetzt.
  1455.  
  1456.     'nnnn' ist  der Offset  im PSP ab  dem die  Byte geschrieben werden
  1457.     sollen.  (hex.,  Voreinstellung:  0h, Intervall: 0..0FFh)
  1458.  
  1459.     'mmmm' ist  die Anzahl  der  Bytes die  maximal  geschrieben werden
  1460.     sollen.  (dez., Voreinstellung: 256-nnnn, Intervall: 0..(256-nnnn))
  1461.  
  1462.     Der Zusatz ',N' unterdrückt die Umwandlung von Null-Bytes in CR/LF-
  1463.     Sequenzen und die Interpretierung von Null-Worten als Endekennung.
  1464.  
  1465.     Falls  ein Schalter nicht angegeben werden soll, ein folgender aber
  1466.     doch,  muß  der  weggelassene  Schalter  durch  ein Komma angegeben
  1467.     werden.
  1468.  
  1469.     Falls die Datei schon existiert, wird sie überschrieben.
  1470.  
  1471.     Falls  der Parameter '*name' erfolgreich  ausgeführt werden konnte,
  1472.     wird folgende Meldung auf die Standard-Ausgabe ausgegeben:
  1473.  
  1474.         xxxxx Bytes aus dem PSP ab nnnnh:mmmmh in die Datei
  1475.         <name> gespeichert.
  1476.  
  1477.     Hierbei  wird nnnn  durch  das  PSP-Segment der  benutzten  MDEBUG-
  1478.     Version,  mmmm durch den Offset ab dem die Bytes geschrieben wurden
  1479.     und  xxxx  durch  die Anzahl  der geschriebenen Bytes ersetzt. xxxx
  1480.     ist die  Größe  der Datei die größer  als der  Parameter mmmm  sein
  1481.     kann, da  hier CRs  und  LFs als jeweils ein Zeichen gezählt werden
  1482.     (falls der Parameter ',N' nicht angegeben wurde).
  1483.  
  1484.     Der Parameter ist nur wirksam bei Aufrufen zur Änderung einer schon
  1485.     installierten Version  von MDEBUG. Falls die Parameter  '&name' und
  1486.     '*name'  gleichzeitig  angegeben sind,  wird, falls möglich, zuerst
  1487.     der Parameter '*name' ausgeführt. Sollte in diesem Fall ein  Fehler
  1488.     beim Ausführen des Parameters '*name' auftreten, wird der Parameter
  1489.     '&name' auch nicht mehr ausgeführt.
  1490.     Die Dateinamen für '&name' und '*name' können identisch sein.
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.     ────────────────────────────────────────────────────────────────────────────────
  1500.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   17
  1501.  
  1502.  
  1503.  
  1504.     HELP{={pfad}{name}}
  1505.  
  1506.     Online-Hilfe installieren
  1507.  
  1508.     'name' ist der Name (inclusive Pfad) oder nur der Pfad (abgeschlos-
  1509.     sen mit '/', '\' oder ':') einer Hilfstextdatei. Vor und hinter dem
  1510.     Zeichen '=' darf kein Leerzeichen stehen.
  1511.  
  1512.     Voreinstellung für 'name' ist 'MDEBUG.HLP'.
  1513.     Diese  wird  im  aktuellen  Verzeichnis  und,  falls sie dort nicht
  1514.     gefunden wird,  im Verzeichnis in  dem die Datei 'MDEBUG.COM' steht
  1515.     gesucht.
  1516.     Der Inhalt  der gelesenen  Datei kann in MDEBUG über die Taste <F1>
  1517.     in einem separatem Fenster angezeigt werden.
  1518.  
  1519.     Nach der  Installation von  MDEBUG wird die  Datei nicht mehr benö-
  1520.     tigt.  Die Datei kann maximal 20480 Byte  groß  sein, bei  größeren
  1521.     Dateien  werden nur die ersten 20480 Bytes gelesen und es wird eine
  1522.     Warnung ausgegeben.  Der  Speicherbedarf  von MDEBUG steigt bei ge-
  1523.     ladener Online-Hilfe um ca. 3000  Byte plus die Anzahl Byte für den
  1524.     Puffer für den Hilfstext.
  1525.  
  1526.     Hinweis: Die Größe  des  eingerichteten  Puffers für  den Hilfstext
  1527.              kann  bis zu  15 Byte größer  als die Länge der Hilfstext-
  1528.              datei sein, da MDEBUG die Größe des Puffers so rundet, daß
  1529.              der  Speicherblock für MDEBUG genau auf einer Paragraphen-
  1530.              grenze endet.
  1531.  
  1532.     Falls schon eine Version von MDEBUG installiert  ist, kann über den
  1533.     Parameter 'HELP' eine neue Hilfstextdatei in  die residente Version
  1534.     eingelesen  werden.  In die  residente Version  werden  nur soviele
  1535.     Zeilen  übernommen,  wie in  deren Puffer  passen.  Der  Inhalt des
  1536.     Puffers der residenten Version wird dabei überschrieben.
  1537.  
  1538.  
  1539.     NOHELP
  1540.  
  1541.     Online-Hilfe nicht laden. (Voreinstellung)
  1542.     'NOHELP' setzt den Parameter 'BUF' nicht außer Kraft.
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.     ────────────────────────────────────────────────────────────────────────────────
  1560.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   18
  1561.  
  1562.  
  1563.  
  1564.     BUF=nnnn
  1565.  
  1566.     Routinen  für die  Online-Hilfe und  einen Puffer für den Hilfstext
  1567.     resident halten.
  1568.  
  1569.     'nnnn' ist die Größe des Puffers für den Hilfstext.
  1570.     (dez, Intervall: 256..20480 oder 0)
  1571.  
  1572.     Eine Hilfstextdatei wird durch diesen Parameter nicht geladen, d.h.
  1573.     die Online-Hilfe ist in  MDEBUG nicht verfügbar, solange  nicht ein
  1574.     Aufruf mit dem  Parameter 'HELP' erfolgt. Wird für 'nnnn' 0 angege-
  1575.     ben, so wird,  falls der  Parameter 'HELP' nicht angegeben ist, die
  1576.     Online-Hilfe nicht geladen.
  1577.  
  1578.     Falls  der Parameter  'HELP'  angegeben ist,  und die  durch diesen
  1579.     geladene  Hilfstextdatei größer als die Angabe für  den Puffer ist,
  1580.     wird  der  Parameter 'BUF' ignoriert.  Falls  der  angegebene  Wert
  1581.     größer  als die geladene Hilfstextdatei ist, wird ein dem bei 'BUF'
  1582.     angegebenen Wert entsprechender Puffer eingerichtet, so daß  später
  1583.     auch noch  größere  Hilfstextdateien  eingelesen werden können.
  1584.  
  1585.     Der Parameter 'BUF' überschreibt den Parameter 'NOHELP'.
  1586.  
  1587.     Hinweis: Die Größe  des  eingerichteten  Puffers für  den Hilfstext
  1588.              kann  bis zu  15 Byte größer  als der angegebene  Wert für
  1589.              den Parameter  'BUF' sein, da MDEBUG die Größe des Puffers
  1590.              so rundet, daß  der  Speicherblock  für  MDEBUG genau  auf
  1591.              einer Paragraphengrenze endet.
  1592.  
  1593.  
  1594.     TEXT{=nnnn}{,m}
  1595.  
  1596.     Keine Überprüfung ob der Bildschirm im Graphikmodus ist beim Aufruf
  1597.     über den Hotkey bzw. User-Int.
  1598.  
  1599.     'nnnn'  ist  das Segment des Bildschirmspeicher (hex, vierstellig).
  1600.     Falls 'nnnn' angegeben ist,  geht MDEBUG immer davon aus,  daß  der
  1601.     Bildschirmspeicher  bei 'nnnn:0000' beginnt. Die Voreinstellung für
  1602.     'nnnn' ist im Videomodus 7 (= HGC-Karte) B000h und sonst B800h.
  1603.  
  1604.     'm' ist die zu benutzende Bildschirmseite. (dez., Intervall: 0..9,)
  1605.     Falls 'm' nicht  angegeben ist,  wird die Bildschirmseite bei jedem
  1606.     Aufruf neu ermittelt.
  1607.  
  1608.     Falls  die zu  benutzende  Bildschirmseite  explizit angegeben ist,
  1609.     geht  MDEBUG immer davon aus, daß  eine  Bildschirmseite 4096 Bytes
  1610.     lang  ist,  d.h. der  Bildschirm in einem Modus mit 80 x 25 Zeichen
  1611.     ist. Falls die Bildschirmseite 2  angegeben ist und das Segment für
  1612.     den Bildschirmspeicher  mit  B800h  angegeben ist, beginnt die  von
  1613.     MDEBUG zu benutzende Bildschirmseite bei B800h + 200h = BA00h.
  1614.  
  1615.     Über den Parameter  'TEXT' können die  Ausgaben von MDEBUG auch auf
  1616.     einen zweiten Bildschirm  umgeleitet werden.  In diesem Fall sollte
  1617.     der Parameter immer in der Form 'TEXT=nnnn,m' angegeben werden.
  1618.  
  1619.     ────────────────────────────────────────────────────────────────────────────────
  1620.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   19
  1621.  
  1622.  
  1623.  
  1624.     GRAPH
  1625.  
  1626.     Überprüfung  des Bildschirm-  und Graphikmodus  und  Ermittlung der
  1627.     aktuellen  Bildschirmseite bei  jedem Aufruf  über den  Hotkey oder
  1628.     den User-Int. Falls der Parameter 'GRAPH' nach dem Parameter 'TEXT'
  1629.     angegeben  wird,  werden alle  durch den Parameter 'TEXT' gesetzten
  1630.     Werte zurückgesetzt. ('GRAPH' ist Voreinstellung)
  1631.  
  1632.  
  1633.     REALCURSOR=n
  1634.  
  1635.     Über  diesen  Parameter kann festgelegt  werden,  ob MDEBUG während
  1636.     eines Popup-Aufrufes  den Hardware-Cursor  ausschalten soll (n = 1)
  1637.     oder nicht (n = 0). Falls REALCURSOR=0 ist, benutzt MDEBUG im resi-
  1638.     denten Teil keinen BIOS-Interrupt.
  1639.  
  1640.  
  1641.     LOADx
  1642.  
  1643.     Mit diesem Parameter kann festgelegt werden,  ob der residente Teil
  1644.     von MDEBUG in einen  Speicherbereich oberhalb  von A000h verschoben
  1645.     werden soll (x = H) oder nicht (x = L). Voreinstellung für x ist L.
  1646.     Falls der Parameter  in  der Form  'LOAD' angegeben  wird, wird der
  1647.     aktuelle Wert von x umgeschaltet. Falls der Parameter 'LOADH' ange-
  1648.     geben wird, und kein freier Speicherbereich in der benötigten Größe
  1649.     oberhalb von A000h vorhanden ist (z.B.  bei DOS-Versionen  vor 5.00
  1650.     ohne speziellen Speichermanager oder falls alle Blöcke oberhalb von
  1651.     A000h schon  belegt sind),  wird der  residente Teil  von MDEBUG im
  1652.     Speicherbereich  unterhalb von A000h  belassen.  Der Parameter wird
  1653.     nur bei der Installation von MDEBUG berücksichtigt.
  1654.  
  1655.  
  1656.     PRO=nn
  1657.  
  1658.     Festlegen der Prozessnummern, über die MDEBUG mit externen Treibern
  1659.     kommuniziert. 'nn' ist die  Prozessnummer für die Kommunikation mit
  1660.     dem  Bildschirmtreiber. (hex., Intervall: C0h..FFh, Voreinst.: D0h)
  1661.     nn+1 ist die Prozessnummer für die  Kommunikation mit den Kommando-
  1662.     treibern.
  1663.  
  1664.     Hinweis:
  1665.  
  1666.     Die von MDEBUG zu benutzenden Prozessnummern dürfen nicht von ande-
  1667.     ren Programmen oder Prozessen belegt sein!
  1668.     (siehe  'Aufruf von MDEBUG im Graphikmodus' und  'Erweiterungen von
  1669.     MDEBUG')
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.     ────────────────────────────────────────────────────────────────────────────────
  1680.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   20
  1681.  
  1682.  
  1683.  
  1684.     ?
  1685.  
  1686.     Ausgabe der Syntaxhilfe für den Aufruf von MDEBUG
  1687.  
  1688.     Die eventuell zusätzlich angegebenen  Parameter  werden nur auf die
  1689.     Syntax geprüft und die  Voreinstellungen in der Syntaxhilfe  werden
  1690.     durch  sie  überschrieben.  Die Parameter  werden aber NICHT weiter
  1691.     bearbeitet.
  1692.     Da die Syntaxhilfe nicht auf eine Bildschirmseite passt, sollte sie
  1693.     über die  DOS-Ausgabe-Umleitung mittels  '>' oder '|' in eine Datei
  1694.     oder auf ein Gerät gelenkt werden.
  1695.  
  1696.     In einer geclonten Version von MDEBUG (siehe  Parameter 'MAKE')
  1697.     werden natürlich die veränderten Voreinstellungen angezeigt.
  1698.  
  1699.  
  1700.     DEF
  1701.  
  1702.     Der Parameter 'DEF' bewirkt die  Ausgabe der  aktuellen Voreinstel-
  1703.     lungen für die Parameter auf die Standard-Ausgabe. Die Aufrufsyntax
  1704.     von MDEBUG wird aber nicht ausgegeben.
  1705.     Die eventuell zusätzlich angegebenen  Parameter  werden nur auf die
  1706.     Syntax geprüft und die  Voreinstellungen in der Syntaxhilfe  werden
  1707.     durch  sie überschrieben.
  1708.  
  1709.  
  1710.     #
  1711.  
  1712.     Der Parameter '#' veranlasst MDEBUG  zur  Ausgabe mehrerer interner
  1713.     Tabellen. Nach der Ausgabe dieser wird das Programm sofort beendet.
  1714.     Alle anderen Parameter werden nicht ausgeführt.
  1715.     (siehe 'Ändern der Tastenbelegung von MDEBUG')
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.     ────────────────────────────────────────────────────────────────────────────────
  1740.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   21
  1741.  
  1742.  
  1743.  
  1744.     MAKE
  1745.  
  1746.     Erstellen einer neuen Version von MDEBUG.COM
  1747.  
  1748.     Mit  dem  Parameter  'MAKE' kann  eine neue  Version von MDEBUG.COM
  1749.     erstellt werden. In dieser sind dann die Voreinstellungen durch die
  1750.     zusätzlich zum Parameter 'MAKE' angegebenen  Parameter ersetzt.
  1751.  
  1752.     Die Voreinstellungen  für folgende  Parameter können  überschrieben
  1753.     werden:
  1754.  
  1755.          'INT', 'KEY', 'STD', 'STM',
  1756.          'CoM', 'CoD', 'CoHm', 'CoC'
  1757.          'RoM', 'RoD', 'RoH',
  1758.          'SEG=nnnn', 'SEG=reg', 'OFF=nnnn', 'OFF=reg',
  1759.          'TEXT', 'GRAPH', 'REALCURSOR', 'PRO',
  1760.          'HELP', 'NOHELP', 'BUF', 'LOADx'
  1761.  
  1762.     Die Parameter
  1763.  
  1764.          'STH', 'SET', 'EXIT','&name','*name', '#',
  1765.          'DEF' und '?'
  1766.  
  1767.     können nicht zusammen mit dem Parameter 'MAKE' angegeben werden.
  1768.     (siehe 'Installieren von MDEBUG')
  1769.  
  1770.     Die  neue  Version von 'MDEBUG.COM'  wird in das aktuelle Directory
  1771.     geschrieben. Eine dort  schon existierende  Kopie  von 'MDEBUG.COM'
  1772.     wird in 'MDEBUG.BAK' umbenannt; eine schon bestehende Datei mit dem
  1773.     Namen 'MDEBUG.BAK' wird in jedem Fall gelöscht. Nach der Erstellung
  1774.     der  neuen  Version  von MDEBUG.COM  wird das Programm beendet.
  1775.  
  1776.     Der Parameter 'MAKE' ist nur in der Vollversion von MDEBUG möglich!
  1777.  
  1778.  
  1779.     MF2
  1780.  
  1781.     veraltet, wird ignoriert (wg. Aufwärtskompabilität)
  1782.  
  1783.     NoMF2
  1784.  
  1785.     veraltet, wird ignoriert (wg. Aufwärtskompabilität)
  1786.  
  1787.  
  1788.     @
  1789.  
  1790.     Rest der Parameter ignorieren.
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.     ────────────────────────────────────────────────────────────────────────────────
  1800.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   22
  1801.  
  1802.  
  1803.  
  1804.  
  1805.     Die  Schreibweise  (groß/klein) und  die Reihenfolge der  Parameter
  1806.     sind  beliebig.  Die  Reihenfolge  der  Operanden  und Schalter der
  1807.     Parameter  muß  eingehalten  werden. Leerzeichen in einem Parameter
  1808.     sind nicht  erlaubt; Leerzeichen und Tabulatoren zwischen den Para-
  1809.     metern sind  erlaubt  aber nur hinter  Zahlenwerten notwendig.
  1810.     Falsche  Parameter  führen  zum  Programmabbruch;  bei  mehrmaliger
  1811.     Angabe eines Parameters, bzw. sich ausschließender  Parameter, gilt
  1812.     die  letzte  korrekte  Angabe.
  1813.     Eckige  Klammern  '[..]'  kennzeichnen eine Auswahl,  also entweder
  1814.     den  Teil vor  dem Zeichen  '|'  oder den  Teil danach. Geschweifte
  1815.     Klammern '{..}' zeigen an,  daß  der Parameter(-Teil) optional ist.
  1816.     Hexadezimale  Werte können  mit oder ohne abschliessendem 'H' (bzw.
  1817.     'h') eingegegeben werden.  Bei dezimalen  Werten  können Punkte zur
  1818.     Formatierung des Wertes benutzt werden.
  1819.  
  1820.     Fehlerfrei  angegebene  Parameter,  die  bei  der  Erstinstallation
  1821.     keine Bedeutung  haben,  führen nur zur Ausgabe einer Warnung (ohne 
  1822.     Abbruch des  Programms.  Das Gleiche  gilt  für Parameter,  die bei 
  1823.     Aufrufen  zur Änderung einer  installierten Version keine Bedeutung
  1824.     haben.
  1825.  
  1826.     Eine  mehrfache Installation  von MDEBUG  ist nicht  möglich, falls
  1827.     die  Kette der  MCBs  fehlerfrei  ist und  die  schon  installierte
  1828.     Version darüber auffindbar ist.
  1829.  
  1830.     Bei jedem Aufruf  gibt MDEBUG den Hotkey, die Nummer des  User-Ints
  1831.     (falls installiert),  die  Größe  des  Puffers  für  den  Hilfstext
  1832.     (falls installiert)  und die  Prozessnummern für  den Interrupt 2Fh
  1833.     auf die Standard-Ausgabe aus.
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.     ────────────────────────────────────────────────────────────────────────────────
  1860.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   23
  1861.  
  1862.  
  1863.  
  1864.     Errorlevel
  1865.     ──────────
  1866.  
  1867.     MDEBUG gibt beim  Programm-Ende  einen Errorlevel größer als 80 zu-
  1868.     rück, falls ein Fehler auftrat.
  1869.  
  1870.  
  1871.  
  1872.     Voreinstellungen
  1873.     ────────────────
  1874.  
  1875.     Folgende  Register und  Speicherstellen von  MDEBUG  werden bei der
  1876.     Installation mit einer Voreinstellung belegt:
  1877.  
  1878.     Im  Register R1  wird  von MDEBUG der Wert  80h und  im Register R2
  1879.     die  PSP-Adresse von MDEBUG gespeichert.
  1880.     Die internen  Speicherstellen, die über die Tasten <F6>, <SHFIT-F6>
  1881.     und <CTRL-F6> angesprochen werden (s.u.),  werden ebenfalls mit der
  1882.     Adresse PSP-Segment:0080h geladen.
  1883.  
  1884.     Im LowByte des Registers R3 (Register 3L) wird die Nummer des User-
  1885.     Ints  von  MDEBUG  gespeichert  und  im  Highbyte  des Registers R3
  1886.     (Register 3H) wird die Basis-Prozessnummer -  das ist die  Prozess-
  1887.     nummer für den Bildschirmtreiber - gespeichert.
  1888.  
  1889.     Die restlichen Hilfsregister werden auf 0 gesetzt.
  1890.  
  1891.     Die Register SE und OF werden mit der Adresse  FE00:0000 belegt.
  1892.     (falls die Werte für diese Register nicht durch einen Parameter an-
  1893.     gegeben sind)
  1894.  
  1895.     Die Register FS und FO werden mit der Adresse  FE00:0000 belegt.
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.     ────────────────────────────────────────────────────────────────────────────────
  1920.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   24
  1921.  
  1922.  
  1923.  
  1924.     Aufruf über den Hotkey
  1925.     ──────────────────────
  1926.  
  1927.     Nach  der  Installation  kann  MDEBUG  jederzeit  über  den  einge-
  1928.     richteten Hotkey  aufgerufen  werden. (siehe  auch  'Vorbereitungen
  1929.     vor dem Start' und 'Hinweise zur Benutzung')
  1930.  
  1931.     MDEBUG schaltet beim  Aufruf über den Hotkey sofort  (noch vor  der
  1932.     Passwort-Abfrage)  auf  einen  eigenen  Stack  um;  somit  ist  die
  1933.     Belastung des Stacks des unterbrochenen Prozesses minimal.
  1934.  
  1935.     Ein  Aufruf im Graphikmodus ist  nicht möglich.  Getestet  wird der
  1936.     Bildschirmmodus nur für  CGA- und  HGC-Karten,  d.h. ein Aufruf ist
  1937.     nur möglich falls einer der Bildschirmmodi 2, 3 (CGA)  oder 7 (HGC,
  1938.     Textmodus) eingestellt ist.
  1939.  
  1940.     Falls  der Aufruf  nicht  erlaubt  ist, weil sich der Bildschirm im
  1941.     Graphik-Modus befindet oder  aber  MDEBUG  noch  aktiv ist, wird er
  1942.     unterdrückt.  Beim  Aufruf im  Graphikmodus  ertönt  zusätzlich ein
  1943.     Fehlerton.
  1944.  
  1945.     Wenn   der  aktuelle  Bildschirm-Modus  von  MDEBUG  nicht  korrekt
  1946.     erkannt  wird,  muß  der  Parameter  'TEXT'  beim  Aufruf angegeben
  1947.     werden. (s.o., oder ein Bildschirmtreiber geladen werden, s.u.)
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.     ────────────────────────────────────────────────────────────────────────────────
  1980.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   25
  1981.  
  1982.  
  1983.  
  1984.  
  1985.     Beschreibung des Monitors
  1986.     ─────────────────────────
  1987.  
  1988.  
  1989.     Aufbau des Monitor-Fensters
  1990.     ───────────────────────────
  1991.  
  1992.     ┌──> oberes Window des Monitors
  1993.     │
  1994.     │┌──> 'Offset: 1CB3' ->> Offset der akt. Cursorposition (= Konstante CU, s.u.)
  1995.     ││                       [...] = Wert des akt. Bytes in verschiedenen Formaten
  1996.     ││                                                      ┌─> Monitor-Schalter
  1997.     ││                                                      │
  1998.     ││╔═══════════════════════════════ MDEBUG V2.05 ═══════[b*]════════════════════╗
  1999.     ││║ SE:OF  Adr.: B000:1CA0  SE: B000 OF: 1CA0    Suchen:                       ║
  2000.     │└╟──────┬─ Offset: 1CB3 [= 20h = #032 = ' ']───────────────┬──────────────────╢
  2001.     ├─║ 1CA0 │ 70 BA 70 BA 70 36 70 B3  70 20 70 30 70 30 70 30 │ p║p║p6p│p p0p0p0 ║
  2002.     │ ║ 1CB0 │ 70 30 70 20 70 B3 70 20  70 BA 70 20 70 42 70 75 │ p0p p│p p║p pBpu ║
  2003.     │ ║ 1CC0 │ 70 73 70 79 70 2D 70 46  70 6C 70 61 70 67 70 20 │ pspyp-pFplpapgp  ║
  2004.     └─║ 1CD0 │ 70 3D 70 20 70 30 70 30  70 20 70 20 70 44 70 49 │ p=p p0p0p p pDpI ║
  2005.     ┌─║      │ ── FS:FO => 3000:1A10 ────────────────────────── │                  ║
  2006.     │┌╢ 1A10 │ 70 4D 70 20 70 20 70 BA  70 20 70 38 70 20 70 30 │ pMp p p║p p8p p0 ║
  2007.     ││║ 1A20 │ 70 42 70 20 70 3D 70 20  70 30 70 32 70 36 70 31 │ pBp p=p p0p2p6p1 ║
  2008.     │├║ 1A30 │ 70 3A 70 30 70 30 70 31  70 45 70 20 70 20 70 4D │ p:p0p0p1pEp p pM ║
  2009.     ││╚══════╧══════════════[ (c) 1988 - 1992 Bernd Schemmer ]══╧══════════════════╝
  2010.     ││  ├──┘   ├──────────────────────────────────────────────┘   ├──────────────┘
  2011.     ││  │      │                                                  │
  2012.     ││  │      └──> Speicherinhalt in hexadezimalem Format        └──> Speicherinhalt
  2013.     ││  │                                                              als ASCII-Codes
  2014.     ││  └──> Offset des Speicherbereichs in der Zeile
  2015.     ││
  2016.     │└──> unteres Window des Monitors
  2017.     │
  2018.     └───> Statuszeile des unteren Windows des Monitors inclusive
  2019.           der Anzeige der Inhalte der Register FS und FO
  2020.  
  2021.     Hinweis:
  2022.  
  2023.     Für die folgenden Ausführungen gelten folgende Vereinbarungen:
  2024.  
  2025.     Mit 'Fenster' ist immer der gesamte  Monitor gemeint,  mit 'Window'
  2026.     immer  die 'Teilfenster'  zur  Anzeige  von jeweils einem Speicher-
  2027.     bereich im Monitor.
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.     ────────────────────────────────────────────────────────────────────────────────
  2040.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   26
  2041.  
  2042.  
  2043.  
  2044.     Der  Inhalt des  Monitor-Fensters, wird fortlaufend  aktualisiert -
  2045.     auch wenn der Interpreter aktiv ist.
  2046.  
  2047.     Ausnahme:
  2048.  
  2049.     Nach Eingabe des Prefixzeichens <CTRL-P> im Interpreter bzw. in der
  2050.     3. Spalte des Monitors ist  die Aktualisierung des Monitor-Inhaltes
  2051.     bis  zur   Eingabe  der  nächsten  Taste blockiert.
  2052.     Bei  der Eingabe eines Suchstrings, während der Suche eines Strings
  2053.     im  Monitor,  während  der Bearbeitung  eines oder  mehrerer Inter-
  2054.     preter-Befehl(e)  und während  des  Aufrufs  der Online-Hilfe  wird
  2055.     die Anzeige des Monitors ebenfalls nicht aktualisiert.
  2056.  
  2057.  
  2058.     Auf den oberen  Rahmen werden die akutellen Werte der  Schalter des
  2059.     Monitors angezeigt ([...]):
  2060.  
  2061.     ┌──────────┬───────┬──────────────────────────────────┬───────────┐
  2062.     │ Schalter │ Wert  │ Bedeutung                        │  Taste    │
  2063.     ╞══════════╪═══════╪══════════════════════════════════╪═══════════╡
  2064.     │ Monitor- │  b    │ direkte Änderungen im Monitor    │  <CTRL-B> │
  2065.     │ Mode     │       │ möglich                          │           │
  2066.     │          │  B    │ direkte Änderungen im Monitor    │           │
  2067.     │          │       │ NICHT möglich                    │           │
  2068.     ├──────────┼───────┼──────────────────────────────────┼───────────┤
  2069.     │ Update-  │  *    │ Monitor-Inhalt wird laufend      │   <F9>    │
  2070.     │ Mode     │       │ aktualisiert                     │           │
  2071.     │          │  -    │ Monitor-Inhalt wird nur nach     │           │
  2072.     │          │       │ einem Tastendruck aktualisiert   │           │
  2073.     └──────────┴───────┴──────────────────────────────────┴───────────┘
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.     ────────────────────────────────────────────────────────────────────────────────
  2100.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   27
  2101.  
  2102.  
  2103.  
  2104.     ■ Aufbau der ersten Statuszeile
  2105.  
  2106.                                  ┌─> Inhalt des Registers SE (hex.)
  2107.                                  │        ┌─> Inhalt des Registers OF
  2108.                                  │        │   (hex.)
  2109.     ╔════════════════════════════│════════│═════════════════...════════╗
  2110.     ║ SE:OF  Adr.: B000:1CA0  SE:│B000 OF:│1CA0    Suchen:             ║
  2111.     ╟ ┌───         ┌────────     └────    └────    ┌────────...        ╢
  2112.       │            │                               └─> Puffer für die
  2113.       │            │                                   Eingabe eines
  2114.       │            │                                   Suchstrings
  2115.       │            └─> Adresse des Speicherbereichs der im oberen Window
  2116.       │                angezeigt wird (Segment-Feld : Offset-Feld)
  2117.       │
  2118.       └─> Namen der Register, aus denen  die Start-Adresse des  Monitors
  2119.           ermittelt wird. Die hier stehende Register-Kombination wird im
  2120.           weiteren als Monitor-Start-Adresse bezeichnet.
  2121.  
  2122.  
  2123.     ■ Aufbau der zweiten Statuszeile
  2124.  
  2125.     ║       ── FS:FO => 3000:1A10 ──────────────────────────      ...  ║
  2126.                         ┌─── ┌───
  2127.                         │    └─> Inhalt des Registers FO (hex.)
  2128.                         └─> Inhalt des Registers FS (hex.)
  2129.  
  2130.     Die Register  FS und FO  bilden  die  Startadresse  für  das untere
  2131.     Monitor-Window.
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.     ────────────────────────────────────────────────────────────────────────────────
  2160.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   28
  2161.  
  2162.  
  2163.  
  2164.     Tastenbelegung im Monitor
  2165.     ─────────────────────────
  2166.  
  2167.  
  2168.     Die folgenden Tasten  sind in  allen Spalten  und  bei der direkten
  2169.     Eingabe des Segments und des Offsets verfügbar:
  2170.  
  2171.  
  2172.     ■ <F1>
  2173.  
  2174.     Aufruf der Online-Hilfe, falls sie geladen ist.
  2175.     Ansonsten hat die Taste keine Wirkung.
  2176.  
  2177.  
  2178.     ■ <CTRL-F1>
  2179.  
  2180.     Anzeige des DOS-Bildschirms und Warten auf  einen Tastendruck. Nach
  2181.     der Eingabe einer Taste fährt MDEBUG fort. Die gedrückte Taste wird
  2182.     ignoriert.
  2183.  
  2184.  
  2185.     ■ <CTRL-PgUp>, <CTRL-PgDn>
  2186.  
  2187.     Verschieben des Monitor-Fensters  um 1 Zeile nach  oben bzw. unten.
  2188.     Die neuen  Fensterkoordinaten  des  Monitors sind  bis zur nächsten
  2189.     Änderung gültig.
  2190.  
  2191.  
  2192.     ■ <F9>
  2193.  
  2194.     Laufende Aktualisierung der Monitor-Anzeige ein- oder  ausschalten.
  2195.     Falls die  laufende Monitor-Aktualisierung ausgeschaltet  ist, wird
  2196.     die  Anzeige  des Monitors nur nach jedem Tastendruck aktualisiert.
  2197.     Der  aktuelle Modus  wird immer auf  dem oberen Rahmen des Monitors
  2198.     angezeigt ('*' -> ein, '-' -> aus).
  2199.  
  2200.  
  2201.     ■ <ALT-F9>
  2202.  
  2203.     Bildschirmdaten neu ermitteln  und das Fenster neu aufbauen. Stellt
  2204.     MDEBUG bei der Ermittlung der Bildschirmdaten einen  falschen Bild-
  2205.     schirmmodus fest, so wird der Aufruf beendet.
  2206.                      
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.     ────────────────────────────────────────────────────────────────────────────────
  2220.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   29
  2221.  
  2222.  
  2223.  
  2224.     ■ <F2>
  2225.  
  2226.     Editieren  eines  Suchstrings, der im Speicher gesucht werden soll.
  2227.     Der Suchstring kann maximal 21 Zeichen lang sein.
  2228.  
  2229.     Gesucht wird ab dem zweiten im ersten Window des Monitors angezeig-
  2230.     ten Byte  bis zum  Ende des ersten  Megabytes des Speichers.  Falls
  2231.     der Suchstring gefunden  wird,  wird  die Monitor-Start-Adresse mit
  2232.     der Adresse des Suchstrings geladen und ein Ton ausgegeben.
  2233.     Die gefundene Adresse wird dabei folgendermaßen konvertiert:
  2234.  
  2235.     Falls die Adresse  VOR  dem ersten  MCB oder HINTER dem letzten MCB
  2236.     liegt, wird sie in die  Form 'nn00:nnnn' (n <= 0 <= F) konvertiert.
  2237.  
  2238.     Liegt die  Adresse in den ersten  65.535 Byte eines  Speicherblocks
  2239.     der über  die MCB-Kette  verwaltet  wird,  so  wird sie in die Form
  2240.     'seg:nnnn' konvertiert, wobei seg  das Segment des  Speicherblocks,
  2241.     in dem  die Adresse  liegt, ist. Sollte diese Form  für die Adresse
  2242.     nicht möglich sein, so wird sie in der Form 'nn00:nnnn' ausgegeben.
  2243.  
  2244.     Hinweis:
  2245.  
  2246.     Die für die Suche benötigte Zeit wird bestimmt durch die Häufigkeit
  2247.     des ersten direkt angegebenen Zeichens im Suchstring.
  2248.  
  2249.     Die  Suche kann  über die  BREAK-Taste  abgebrochen werden.  (siehe
  2250.     Beschreibung des Interpreters)
  2251.  
  2252.  
  2253.     ■ <SHIFT-F2>
  2254.  
  2255.     Suche des Suchstrings ab  dem zweiten Byte in dem im ersten  Window
  2256.     angezeigten   Speicherbereich  fortsetzen.  Falls  der   Suchstring
  2257.     gefunden  wird,  wird die  Monitor-Start-Adresse auf  die gefundene
  2258.     Speicherstelle gesetzt. Ansonsten wird die Anzeige nicht verändert.
  2259.  
  2260.     Die  Suche kann  über die  BREAK-Taste  abgebrochen werden.  (siehe
  2261.     Beschreibung des Interpreters)
  2262.  
  2263.  
  2264.     ■ <F4>
  2265.  
  2266.     Aufruf des Interpreters
  2267.  
  2268.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.     ────────────────────────────────────────────────────────────────────────────────
  2280.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   30
  2281.  
  2282.  
  2283.  
  2284.     ■ <SHIFT-F6>
  2285.  
  2286.     Speichern der aktuellen Monitor-Start-Adresse.
  2287.     Eine Schachtelung ist nicht möglich.
  2288.  
  2289.  
  2290.     ■ <F6>
  2291.  
  2292.     Restaurieren  der  Monitor-Start-Adresse  mit der  durch <SHIFT-F6>
  2293.     gespeicherten Adresse.
  2294.  
  2295.  
  2296.     ■ <CTRL-F6>
  2297.  
  2298.     Vertauschen der  aktuellen  Monitor-Start-Adresse mit der durch die
  2299.     Taste <SHIFT-F6> gespeicherten Adresse.
  2300.  
  2301.  
  2302.     ■ <ALT-CursorUp>, <ALT-CursorDown>
  2303.  
  2304.     Zeilenweises Scrollen des unteren Windows des Monitors.
  2305.  
  2306.  
  2307.     ■ <ALT-PgUp>, <ALT-PgDn>
  2308.  
  2309.     Seitenweises Scrollen des unteren Windows des Monitors.
  2310.  
  2311.  
  2312.     ■ <CTRL-CursorDown>, <CTRL-CursorUp>
  2313.  
  2314.     Verkleinern bzw. Vergrößern des unteren Windows
  2315.  
  2316.  
  2317.     ■ <ESC>
  2318.  
  2319.     Verlassen von MDEBUG
  2320.     Der  durch den Aufruf von  MDEBUG unterbrochene  Prozess wird fort-
  2321.     gesetzt. Ein Neuaufruf von MDEBUG startet im Monitor.
  2322.  
  2323.  
  2324.     ■ <F10>
  2325.  
  2326.     Verlassen  von MDEBUG,  ein Neuaufruf von MDEBUG  startet im Inter-
  2327.     preter.
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.     ────────────────────────────────────────────────────────────────────────────────
  2340.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   31
  2341.  
  2342.  
  2343.  
  2344.     Zusätzliche Tastenbelegung in der 2. und 3. Spalte:
  2345.  
  2346.  
  2347.     ■ Cursor-Tasten
  2348.  
  2349.     Verändern  des  Offsets des im oberen Windows angezeigten Speicher-
  2350.     ausschnittes. (nach 0FFFFh folgt 0h - ohne Veränderung des Segments
  2351.     im  Segment-Register, das  obere Window  wird also  gescrollt) Beim
  2352.     Scrollen  des  Windows  wird  der  Wert  des Registers, aus dem der
  2353.     Offset für das Window ermittelt wird, verändert.
  2354.  
  2355.     Zur  Positionierung des Cursors und zum Scrollen des Windows können
  2356.     folgende Tasten verwendet werden:
  2357.  
  2358.     ■ <CursorRight>, <CursorLeft>, <CursorDown>, <CursorUp>
  2359.       <Blank>, <BackSpace>, <PgDn>, <PgUp>, <Home>, <End>
  2360.  
  2361.     In der 2. Spalte können  zusätzlich  die  Tasten  <Tab> (Sprung zum
  2362.     Zeilenende)  und  <SHIFT-Tab>  (Sprung zum  Zeilenanfang) verwendet
  2363.     werden.
  2364.     Zur Änderung des Segments muß dieses explizit geändert werden.
  2365.  
  2366.  
  2367.     ■ <F8>
  2368.  
  2369.     Teilen des Monitors ab der Zeile über dem Cursor. Im unteren Window
  2370.     wird  der  Speicherbereich ab der Adresse auf der  der Cursor steht
  2371.     angezeigt. D.h.  die  Register  FS und FO werden mit dieser Adresse
  2372.     geladen.
  2373.     Falls schon eine Teilung in Kraft ist, wird sie gelöscht. Die Taste
  2374.     <F8> ist in der ersten Zeile des Fensters gesperrt.
  2375.  
  2376.  
  2377.     ■ <SHIFT-F8>
  2378.  
  2379.     Schließen des unteren Windows
  2380.  
  2381.  
  2382.     ■ <CTRL-F8>
  2383.  
  2384.     Vertauschen der Adressen der Windows.
  2385.  
  2386.  
  2387.     ■ <F3>
  2388.  
  2389.     Wechseln zwischen der Spalte 2 (editieren der  Hex-Darstellung) und
  2390.     der Spalte 3 (editieren der ASCII-Anzeige) des Monitors.
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.     ────────────────────────────────────────────────────────────────────────────────
  2400.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   32
  2401.  
  2402.  
  2403.  
  2404.     In der Spalte 2 können folgende Tasten benutzt werden:
  2405.  
  2406.     ■ <+>, <->
  2407.  
  2408.     Erhöhen bzw. Vermindern des Offsets der Monitor-Start-Adresse um 1.
  2409.  
  2410.     ■ <0>..<9>, <A>..<F>, <a>..<f>
  2411.  
  2412.     Direkte und  SOFORTIGE  Änderung der aktuellen Speicherstelle falls
  2413.     der  angezeigte Speicherbereich im RAM liegt. (jeweils ein  Nibble,
  2414.     d.h. ein Halbbyte)
  2415.     Im ROM oder in unbelegten Speicherbereichen kann  keine Veränderung
  2416.     vorgenommen werden. Ein Byte wird jeweils mit 2 Zeichen angezeigt -
  2417.     für jedes Nibble eins.
  2418.  
  2419.  
  2420.     ■ <O>
  2421.  
  2422.     Direkte Veränderung des Offset  des anzuzeigenden  Speicherbereichs
  2423.     im Offset-Feld.
  2424.  
  2425.  
  2426.     ■ <S>
  2427.  
  2428.     Direkte Veränderung des Segments des anzuzeigenden Speicherbereichs
  2429.     im Segment-Feld.
  2430.  
  2431.  
  2432.     ■ <Z>
  2433.  
  2434.     Wort  an der  aktuellen  Cursorposition  als  neuen  Offset für die
  2435.     Anzeige  des oberen  Windows nehmen.  Geeignet zum  Durchlaufen von
  2436.     mit NEAR-Zeigern verketteten Speicherstrukturen.
  2437.  
  2438.  
  2439.     ■ <W>
  2440.  
  2441.     Wort  an der aktuellen  Cursorposition  als neues Segment  für  die
  2442.     Anzeige des oberen Windows nehmen.
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.     ────────────────────────────────────────────────────────────────────────────────
  2460.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   33
  2461.  
  2462.  
  2463.  
  2464.     ■ <P>
  2465.  
  2466.     Doppelwort an der aktuellen Cursorposition als neue Adresse für die
  2467.     Anzeige  des  oberen  Windows nehmen. Geeignet zum  Durchlaufen von
  2468.     mit FAR-Zeigern verketteten Speicherstrukturen.
  2469.  
  2470.  
  2471.     ■ <M>
  2472.  
  2473.     Falls das Byte an  der aktuellen Cursorposition  den ASCII-Code 'M'
  2474.     enthält, wird das Wort an der Stelle  'Cursor-Position + 3' auf das
  2475.     Segment der  Monitor-Start-Adresse addiert und diese inkrementiert.
  2476.     Der Offset der Monitor-Start-Adresse wird auf 0 gesetzt.
  2477.     Falls  sich also  der  Cursor auf dem Kennbyte eines MCBs befindet,
  2478.     kann mit der Taste <M> die Adresse des nächsten MCB geladen werden.
  2479.     Enthält das Byte an  der Monitor-Start-Adresse nicht den ASCII-Code
  2480.     'M', so wird  die Monitor-Start-Adresse  mit der Adresse des ersten
  2481.     MCBs geladen.
  2482.  
  2483.  
  2484.     ■ <Y>
  2485.  
  2486.     Ermittelt  den nächsten MCB  analog zur  Taste <M>  aber ohne Über-
  2487.     prüfung, ob der Cursor auf dem Kennzeichen eines MCBs steht.
  2488.  
  2489.  
  2490.     ■ <L>
  2491.  
  2492.     Setzt die Monitor-Start-Adresse auf den letzten MCB.
  2493.     (max. werden 255 MCBs durchlaufen)
  2494.  
  2495.  
  2496.     ■ <T>
  2497.  
  2498.     Übernimmt die Adresse  des Bytes, auf dem der Cursor steht als neue
  2499.     Monitor-Start-Adresse.
  2500.  
  2501.  
  2502.     ■ <X>
  2503.  
  2504.     Restaurieren der letzten Start-Adresse des Monitors. MDEBUG sichert
  2505.     die Start-Adresse  des Monitors  vor der Ausführung der Tasten <M>,
  2506.     <P>, <Z>, <L>, <T> und <W>.
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.     ────────────────────────────────────────────────────────────────────────────────
  2520.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   34
  2521.  
  2522.  
  2523.  
  2524.     ■ <CTRL-B>
  2525.  
  2526.     Erlaubt oder unterbindet direkte  Änderungen im Monitor.  Der aktu-
  2527.     elle Modus wird  auf dem  oberen  Rahmen des  Fensters des Monitors
  2528.     ausgegeben und ist  an  der Cursorform  erkennbar (Overwrite-Cursor
  2529.     ->> Änderungen erlaubt, Insert-Cursor ->> Änderungen nicht erlaubt,
  2530.     siehe Parameter CoC=nn{,mm}').
  2531.  
  2532.  
  2533.     In der Spalte 3 gilt folgende Tastenbelegung:
  2534.  
  2535.  
  2536.     ■ <CTRL-P>
  2537.  
  2538.     Prefixzeichen, d.h. die nach <CTRL-P>  eingegebene Taste wird nicht
  2539.     interpretiert sondern so übernommen.
  2540.  
  2541.  
  2542.     ■ <ESC>
  2543.  
  2544.     Verlassen von MDEBUG
  2545.  
  2546.  
  2547.     ■ Alle anderen  Tasten verändern SOFORT die aktuelle Speicherstelle
  2548.       (auch Steuerzeichen wie <Tab>, <RETURN>, usw.)
  2549.  
  2550.  
  2551.     Die Tastenbelegung bei der Eingabe von Segment oder Offset ist fol-
  2552.     gendermaßen:
  2553.  
  2554.  
  2555.     ■ <0>..<9>, <A>..<F>, <a>..<f>
  2556.  
  2557.     Hexadezimale  Eingabe des  neuen Wertes des aktuellen des Register-
  2558.     Wertes. Die Anzeige wird  nach  jeder Änderung eines Nibbles sofort
  2559.     angepasst.
  2560.  
  2561.  
  2562.     ■ <CursorLeft>, <CursorRight>, <End>, <Home>
  2563.  
  2564.     Cursor-Positionierung,  durch  die   Eingabe  von  <CursorLeft>  am
  2565.     Anfang des Offset-Feldes kann in  das Segment-Feld  und  durch  die
  2566.     Eingabe   von <CursorRight>  am Ende des Segment-Feldes kann in das
  2567.     Offset-Feld gewechselt werden.
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.     ────────────────────────────────────────────────────────────────────────────────
  2580.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   35
  2581.  
  2582.  
  2583.  
  2584.     ■ <O>
  2585.  
  2586.     Eingabe eines neuen Offsets für das obere Window im Offset-Feld.
  2587.  
  2588.  
  2589.     ■ <S>
  2590.  
  2591.     Eingabe eines neuen Segments für das obere Window im Segment-Feld.
  2592.  
  2593.  
  2594.     ■ <RETURN>
  2595.  
  2596.     Rückkehr in die Spalte 2 bzw. 3.
  2597.  
  2598.  
  2599.     Die Tastenbelegnung bei der Eingabe des Suchstrings ist:
  2600.  
  2601.     ■ Erlaubt sind  alle  Zeichen. Zeichen mit einem ASCII-Code kleiner
  2602.       als 32 (dez.) müssen über <ALT-ASCIINummer> eingegeben werden.
  2603.       Die Zeichen  mit den ASCII-Codes  13  (<RETURN>),  27 (<ESC>) und
  2604.       8 (<BackSpace>)  müssen  nach  dem Prefix-Zeichen <CTRL-P> einge-
  2605.       geben werden.  Funktionstasten  ohne Bedeutung werden  ignoriert.
  2606.       Leerzeichen  im Suchstring sind erlaubt, der Suchstring kann aber
  2607.       nicht mit einem Leerzeichen enden. Das Zeichen ■ (ASCII-Code 254)
  2608.       gilt als Joker im Suchstring.
  2609.  
  2610.  
  2611.     ■ <F1>
  2612.  
  2613.     Aufruf der Online-Hilfe, falls sie geladen ist.
  2614.     Ansonsten hat die Taste keine Wirkung. (s.o.)
  2615.  
  2616.  
  2617.     ■ Die Tasten
  2618.  
  2619.          <CursorRight>, <CursorLeft>, <Home>, <End>, <Delete>,
  2620.          <BackSpace>
  2621.  
  2622.       können bei der Eingabe zum Positionieren des Cursor im Suchstring
  2623.       benutzt werden. Die Eingabe erfolgt immer im INSERT-Modus.
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.     ────────────────────────────────────────────────────────────────────────────────
  2640.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   36
  2641.  
  2642.  
  2643.  
  2644.     ■ <CTRL-End>
  2645.  
  2646.     Löschen des Eingabepuffers für den Suchstring ab der Cursorposition
  2647.     bis zum Schluß.
  2648.  
  2649.  
  2650.     ■ <ESC>
  2651.  
  2652.     Editieren des Suchstrings abbrechen, der Suchstring wird aber nicht
  2653.     gelöscht.
  2654.  
  2655.  
  2656.     ■ <RETURN>
  2657.  
  2658.     Editieren des Suchstrings beenden und Suchvorgang starten.
  2659.  
  2660.  
  2661.     Hinweis:
  2662.  
  2663.     Falls im Monitor  der  Inhalt  des  Registers  FS bzw. FO verändert
  2664.     werden soll, muß mensch folgendermaßen vorgehen:
  2665.  
  2666.     Zuerst die Windows des  Monitors  durch <CTRL-F8> vertauschen.  Nun
  2667.     über die  Taste <O> bzw. <S> ins Segment- bzw. Offset-Feld springen
  2668.     und den Wert  ändern.  Und zum Schluß über die Taste <CTRL-F8>  die
  2669.     Windows wieder tauschen.
  2670.  
  2671.     Analog  muß vorgegangen werden, falls direkte Änderungen in  dem im
  2672.     unteren  Fenster  angezeigten  Speicherbereich  vorgenommen  werden
  2673.     sollen.
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.     ────────────────────────────────────────────────────────────────────────────────
  2700.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   37
  2701.  
  2702.  
  2703.  
  2704.   Beschreibung der Online-Hilfe
  2705.     ─────────────────────────────
  2706.  
  2707.  
  2708.     Aufbau des Fensters der Online-Hilfe
  2709.     ────────────────────────────────────
  2710.  
  2711.     ┌────────────── Text der Online-Hilfe (akt. Ausschnitt)
  2712.     │ ┌────────── Überschrift der Online-Hilfe (wird immer angezeigt)
  2713.     │ │
  2714.     │ │  ┌─ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  ─┐
  2715.     │ └─>. ───  Hilfstext für MDEBUG V2.05  ───────────────  (c) 1992 Bernd Schemmer  ─── .
  2716.     ├───>.                      Tastenbelegung im Monitor                                 .
  2717.     │    .                                                                                .
  2718.     │    .  CTRL-PgUp   - Fenster nach oben         CTRL-PgDn    - Fenster nach unten     .
  2719.     │    .  CTRL-F1     - Programm-Pause            ALT-F9       - Fenster neu aufbauen   .
  2720.     │    .  F2          - Suchen eines Strings      SHIFT-F2     - Suche wiederholen      .
  2721.     │    .  F3          - Wechsel der akt. Spalte   F4           - Interpreter aufrufen   .
  2722.     │    .  F9          - lfd. Akt. ein/aus         F6           - akt. Adr. rest.        .
  2723.     │    .  SHIFT-F6    - akt. Adresse speichern    CTRL-F6      - akt. Adr. tauschen     .
  2724.     │    .  F8          - Monitor-Fenster an der akt. Stelle teilen                       .
  2725.     └───>.  SHIFT-F8    - unteres Monitor-Fenster schliessen                              .
  2726.     ┌───>.░░░9░^░░░░░2░░░░░3░░░░░░4░░░░░░░5░░░░░░░░░░░░░░░░░░░░░6░░░░░░7░░░░8░░░░░░░░░░░░░.
  2727.     │ ┌─>   ,  , PgDn, PgUp, Home, End -> Scrollen  <n>/<ALT-n> [Marker] F10, ESC -> exit
  2728.     │ │  └─ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  ─┘
  2729.     │ │
  2730.     │ └────────── Tastenbelegung in der Online-Hilfe
  2731.     └────────────── Scrollbar der Online-Hilfe
  2732.  
  2733.  
  2734.     Die aktuelle Position im Hilfstext  wird im  Scrollbar durch  einen
  2735.     einfachen oder  doppelten Pfeil  (je nach aktueller Position) ange-
  2736.     zeigt (in der obigen  Abbildung  wird der Pfeil durch das Zeichen ^
  2737.     repräsentiert),  die  Positionen  der Marker  werden durch die ent-
  2738.     sprechende Nummer im Scrollbar angezeigt. Falls mehrere Marker  auf
  2739.     einer  Position stehen, wird immer nur der Marker mit der kleinsten
  2740.     Nummer im Scrollbar angezeigt.
  2741.  
  2742.     Ein Rahmen um das Fenster der Online-Hilfe wird nicht ausgegeben.
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.     ────────────────────────────────────────────────────────────────────────────────
  2760.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   38
  2761.  
  2762.  
  2763.  
  2764.     Tastenbelegung in der Online-Hilfe
  2765.     ──────────────────────────────────
  2766.  
  2767.  
  2768.     Während eines  Aufrufes der  Online-Hilfe  gelten  folgende Tasten-
  2769.     belegungen:
  2770.  
  2771.  
  2772.     ■ <CursorUp>, <CursorDown>,  <PgDn>, <PgUp>
  2773.  
  2774.     Zeilen- bzw. Seitenweises Scrollen des Hilfstextes
  2775.  
  2776.  
  2777.     ■ <Home>, <End>
  2778.  
  2779.     Sprung zur ersten bzw. letzten Zeile des Hilfstextes
  2780.  
  2781.  
  2782.     ■ 0
  2783.  
  2784.     Anzeige der zuletzt angezeigten Seite
  2785.  
  2786.  
  2787.     ■ <ALT-1> .. <ALT-9>
  2788.  
  2789.     Setzen des Markers # (1...9) auf die erste Zeile im Window
  2790.  
  2791.  
  2792.     ■ <1> .. <9>
  2793.  
  2794.     Sprung zum Marker # (1 .. 9).
  2795.  
  2796.  
  2797.     ■ <CTRL-PgUp>, <CTRL-PgDn>
  2798.  
  2799.     Verschieben des Fensters für die Online-Hilfe um jeweils eine Zeile
  2800.     nach oben bzw. unten.
  2801.  
  2802.  
  2803.     ■ <ESC>
  2804.  
  2805.     Verlassen der Online-Hilfe
  2806.  
  2807.  
  2808.     ■ <F10>
  2809.  
  2810.     Verlassen von MDEBUG, Neustart in der Online-Hilfe
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.     ────────────────────────────────────────────────────────────────────────────────
  2820.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   39
  2821.  
  2822.  
  2823.  
  2824.  
  2825.    Beschreibung des Interpreters
  2826.     ─────────────────────────────
  2827.  
  2828.     Aufbau des Interpreter-Fensters
  2829.     ───────────────────────────────
  2830.  
  2831.     ┌─────────> Inhalt der Hilfsregister R1 bis R7
  2832.     │┌──────> PSP- und Code-Segment von MDEBUG (= Wert der Konstanten CS)
  2833.     ││┌───> Puffer für die Eingabe von Befehlen (max. 66 Zeichen)
  2834.     ││└────────────────┐                                     ┌─> Interpreter-Schalter
  2835.     ││           ┌─────┴─────────────────────────────────────│────────────────────────┐
  2836.     ││  ╔══════════════════════════════════ MDEBUG V2.05 ════[UQI]═════════════════════╗
  2837.     ││  ║ Befehl:                                                                      ║
  2838.     ││  ╟────────┬──────────────────────────────────────────────────M──────────────────╢
  2839.     │└──║CS: 2390│ ╓─────────── Register ─────────────────────────╖ 1 0DC9:0000 LASTBUF║
  2840.     │   ║R┬──────┤ ║ AX = 0100  BX = 0324  CX = 0001  DX = 022C   ║ 2 0974:0000 1. MCB ║
  2841.     ├───║1│ 0080 │ ║ SI = 001C  DI = 035E  DS = 09E6  ES = 022C   ║ 3 022C:7420 1. DPB ║
  2842.     ├───║2│ 2390 │ ║ BP = 2DB2  SS = 022C  SP = 09CC              ║ 4 022C:0098 SDL    ║
  2843.     ├───║3│ D061 │ ║ Flags =  ....__I__Z___E._                    ║ 5 0070:01A4 CLOCK  ║
  2844.     ├───║4│ 0000 │ ║    R0 = $1000000001000101 = 8045             ║ 6 09E6:0000 CON    ║
  2845.     ├───║5│ 0000 │ ║    R8 = #34150  (-#31386) = 8566 = 'áf'      ║ 7 0D24:0000 BUF    ║
  2846.     ├───║6│ 0000 │ ║ Ruecksprung-Adresse = F000:E830              ║ 8 0F76:0000 PRet   ║
  2847.     └───║7│ 0000 │ ║ Busy-Flag = 01  DIB = 022C:001E              ║ 9 0A6B:0000 PFileT ║
  2848.         ╚═╧══════╧═╩═══════════[ (c) 1988 - 1992 Bernd Schemmer ]═╩═╩══════════════════╝
  2849.                      └─────────────────────┬─────────────────────┘  └──────┬──────────┘
  2850.     ┌──────────────────────────────────────┘                        ┌──────┘
  2851.     └─> AX .. SP : Inhalt der Prozessorregister                     └─> wichtige Adressen
  2852.         Flags    : Inhalt des Flagregisters                             aus dem DIB
  2853.         R0       : Inhalt des Hilfsregisters R0 (binär und hex.)    (= Memory-Speicher
  2854.         R8       : Inhalt des Hilfsregisters R8 (dezimal mit und       1 bis 9)
  2855.                    ohne Voreichen, hexadezimal und als ASCII-Codes)
  2856.         Ruecksprung-
  2857.         Adresse  : Adresse, an der der aktuelle Prozess nach dem Ende
  2858.                    des Aufrufs von MDEBUG fortgesetzt wird.  Der Wert
  2859.                    vor dem  Doppelpunkt  kann über die  Konstante RS,
  2860.                    der Wert hinter dem Doppelpunkt über die Konstante
  2861.                    RO benutzt werden.
  2862.         Busy-Flag:  = 0 -> DOS-Aufrufe sind erlaubt
  2863.                    <> 0 -> DOS-Aufrufe sind nicht erlaubt
  2864.                    Das  Busy-Flag (= Konstante DO)  ist der  Wert des
  2865.                    DOS-Busy-Flags verODERt mit dem Wert des Critical-
  2866.                    Error-Flags.
  2867.         DIB      : Adresse des DOS-Info-Blocks (DIB, = Memory-Speicher 0)
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.     ────────────────────────────────────────────────────────────────────────────────
  2880.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   40
  2881.  
  2882.  
  2883.  
  2884.     Die Bedeutungen der angezeigten Adressen aus dem DIB sind wie folgt:
  2885.     (ab DOS 3.3, DIB = DOS-Info-Block oder auch 'List of Lists')
  2886.  
  2887.     ┌─┬────────┬─────────────────────────────────────────────┐
  2888.     │M│ Name   │ Bedeutung                                   │
  2889.     ╞═╪════════╪═════════════════════════════════════════════╡
  2890.     │1│LASTBUF │ Adresse des letzten (= aktuellen) Puffers   │
  2891.     │2│1. MCB  │ Adresse des ersten Memory-Control-Blocks    │
  2892.     │3│1. DPB  │ Adresse des ersten Disk-Parameter-Blocks    │
  2893.     │4│SDL     │ Adresse der System-Dateienliste             │
  2894.     │5│CLOCK   │ Adresse des CLOCK-Device-Headers            │
  2895.     │6│CON     │ Adresse des CON-Device-Headers              │
  2896.     │7│BUF     │ Adresse des ersten Puffers                  │
  2897.     │ │        │ (DOS 4+: Adresse des Puffer-Info-Blocks)    │
  2898.     │8│PRet    │ Adresse der Laufwerks-Tabelle               │
  2899.     │9│PFileT  │ Adresse der FCB-Liste                       │
  2900.     └─┴────────┴─────────────────────────────────────────────┘
  2901.  
  2902.  
  2903.     Für die Anzeige der Flags werden folgende Zeichen verwendet:
  2904.  
  2905.     ┌──────────┬────────────────────────┐  Falls ein Flag gesetzt  ist,
  2906.     │Buchstabe │ gesetztes Flag         │  wird der entsprechende Buch-
  2907.     ╞══════════╪════════════════════════╡  stabe,  bzw. ein Punkt falls
  2908.     │     O    │ Overflow-Flag          │  das Flag ohne Bedeutung ist,
  2909.     │     D    │ Direction-Flag         │  angezeigt.   Nicht  gesetzte
  2910.     │     I    │ Interrupt-Enable-Flag  │  Flags  werden  durch   einen
  2911.     │     T    │ Trap-Flag              │  Unterstrich angezeigt.
  2912.     │     S    │ Sign-Flag              │
  2913.     │     Z    │ Zero-Flag              │  Hinweis für 80286er/80386er:
  2914.     │     A    │ Auxiliary-Flag         │
  2915.     │     E    │ Parity-Even-Flag       │  Es werden nur die Flags, die
  2916.     │     C    │ Carry-Flag             │  auch dem 8086  bekannt  sind
  2917.     └──────────┴────────────────────────┘  angezeigt.
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.     ────────────────────────────────────────────────────────────────────────────────
  2940.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   41
  2941.  
  2942.  
  2943.  
  2944.     Alle expliziten  Werte ohne  Formatkennzeichen ('#','$') sind hexa-
  2945.     dezimal. Falls  ein  Passwort  installiert  ist wird der Status des
  2946.     Passwortes ('ON' oder 'OFF') auf dem  oberen Rand (über 'Befehl: ')
  2947.     ausgegeben.  Alle  Meldungen  von MDEBUG werden  ebenfalls auf  den
  2948.     oberen  Rand des Fensters  des  Interpreters angezeigt.  Sie müssen
  2949.     durch eine Taste  quittiert  werden.  Vor der Ausgabe einer Fehler-
  2950.     meldung wird der Tastaturpuffer gelöscht.
  2951.  
  2952.     Die aktuellen Werte  verschiedener Schalter von MDEBUG werden eben-
  2953.     falls auf den oberen Rand des Fensters ausgegeben ([...]):
  2954.  
  2955.     ┌──────────┬───────┬──────────────────────────────────┬───────────┐
  2956.     │ Schalter │ Wert  │ Bedeutung                        │  Taste    │
  2957.     ╞══════════╪═══════╪══════════════════════════════════╪═══════════╡
  2958.     │ Upcase-  │  U    │ Buchstaben werden in Großbuch-   │  <CTRL-U> │
  2959.     │ Mode     │       │ staben konvertiert               │           │
  2960.     │          │  u    │ Buchstaben werden NICHT in Groß- │           │
  2961.     │          │       │ buchstaben konvertiert           │           │
  2962.     ├──────────┼───────┼──────────────────────────────────┼───────────┤
  2963.     │ Quiet-   │  Q    │ akustische Ausgaben sind aus-    │  <CTRL-Q> │
  2964.     │ Mode     │       │ geschaltet                       │           │
  2965.     │          │  q    │ akustische Ausgben sind ein-     │           │
  2966.     │          │       │ geschaltet                       │           │
  2967.     ├──────────┼───────┼──────────────────────────────────┼───────────┤
  2968.     │ Input-   │  I    │ Eingaben erfolgen im INSERT-     │  <INSERT> │
  2969.     │ Mode     │       │ Modus                            │           │
  2970.     │          │  i    │ Eingaben erfolgen im OVERWRITE-  │           │
  2971.     │          │       │ Modus                            │           │
  2972.     └──────────┴───────┴──────────────────────────────────┴───────────┘
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.     ────────────────────────────────────────────────────────────────────────────────
  3000.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   42
  3001.  
  3002.  
  3003.  
  3004.     Tasten-Belegung im Interpreter
  3005.     ──────────────────────────────
  3006.  
  3007.     ■ BREAK-Taste
  3008.  
  3009.     Die  BREAK-Taste dient zum  Abbrechen  von  verschiedenen  Befehlen
  3010.     des Interpreters und  des Monitors von MDEBUG.  Die BREAK-Taste ist
  3011.     in MDEBUG die Tastenkombination <CTRL-ScrollLock>.
  3012.  
  3013.  
  3014.     ■ <F1>
  3015.  
  3016.     Aufruf der Online-Hilfe, falls sie geladen ist.
  3017.     Ansonsten hat die Taste keine Wirkung.
  3018.  
  3019.  
  3020.     ■ <CTRL-F1>
  3021.  
  3022.     Anzeige  des DOS-Bildschirms  und Warten auf einen Tastendruck. Die
  3023.     gedrückte Taste wird nicht weiter bearbeitet.
  3024.  
  3025.  
  3026.     ■ <CTRL-PgUp>, <CTRL-PgDn>
  3027.  
  3028.     Fenster eine Zeile nach oben/unten verschieben
  3029.  
  3030.     Die neuen Fensterkoordinaten sind bis zur nächsten Änderung gültig.
  3031.  
  3032.  
  3033.     ■ <CursorDown>, <CursorUp>, <PgDn>, <PgUp>
  3034.  
  3035.     Scrollen des oberen Windows des Monitors.
  3036.  
  3037.  
  3038.     ■ <GREY->, <GREY+> (aus den Nummernblock)
  3039.  
  3040.     Erhöhen bzw. Vermindern des Offsets der Monitor-Start-Adresse um 1.
  3041.  
  3042.  
  3043.     ■ <F9>
  3044.  
  3045.     Laufende  Aktualisierung  des  Monitors ein- oder ausschalten.
  3046.     Der  aktuelle Modus  wird immer auf  dem oberen Rahmen des Monitors
  3047.     angezeigt ('*' -> ein, '-' -> aus)
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.     ────────────────────────────────────────────────────────────────────────────────
  3060.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   43
  3061.  
  3062.  
  3063.  
  3064.     ■ <ALT-F9>
  3065.  
  3066.     Bildschirmdaten neu  ermitteln  und  beide  Fenster  neu  aufbauen.
  3067.     Stellt MDEBUG  hierbei einen falschen Bildschirmmodus fest, so wird
  3068.     der Aufruf beendet. In diesem Fall ist  die Fensterstruktur  beider
  3069.     Fenster sehr wahrscheinlich zerstört und  muß  beim nächsten Aufruf
  3070.     von  MDEBUG im  richtigen  Bildschirmmodus  über die Taste <ALT-F9>
  3071.     jeweils  restauriert  werden.  Durch  die  Taste <ALT-F9> wird  der
  3072.     Eingabe-Puffer des  Interpreters und  der Puffer für den Suchstring
  3073.     im Monitor gelöscht.
  3074.  
  3075.  
  3076.     ■ <F3>  -  Passwort-Abfrage einschalten
  3077.  
  3078.     ■ <F4>  -  Passwort-Abfrage ausschalten
  3079.  
  3080.     Falls ein  Passwort  installiert ist,  kann  es mit  diesen  beiden
  3081.     Tasten ein- oder ausgeschaltet werden. Ist  kein  Passwort  instal-
  3082.     liert, haben die Tasten keine Bedeutung.
  3083.  
  3084.  
  3085.     ■ <F2>
  3086.  
  3087.     Die  Werte der  aktuellen  Register-Kombination  für  die  Monitor-
  3088.     Start-Adresse werden in die Register SE und OF übernommen. Als neue
  3089.     Register-Kombination für die  Monitor-Start-Adresse wird das Regis-
  3090.     terpaar SE:OF genommen.
  3091.  
  3092.  
  3093.     ■ <SHIFT-F2>
  3094.  
  3095.     Die Register SE und OF werden  als  Monitor-Start-Adresse genommen.
  3096.     (Short-Cut für den Befehl 'V SE,OF', siehe unten)
  3097.  
  3098.  
  3099.     ■ <SHIFT-F6>
  3100.  
  3101.     Speichern der aktuellen Monitor-Start-Adresse.
  3102.     Eine Schachtelung ist nicht möglich.
  3103.  
  3104.  
  3105.     ■ <F6>
  3106.  
  3107.     Restaurieren  der  Monitor-Start-Adresse  mit der  durch <SHIFT-F6>
  3108.     gespeicherten Adresse.
  3109.  
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.  
  3119.     ────────────────────────────────────────────────────────────────────────────────
  3120.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   44
  3121.  
  3122.  
  3123.  
  3124.     ■ <CTRL-F6>
  3125.  
  3126.     Vertauschen der  aktuellen  Monitor-Start-Adresse mit der durch die
  3127.     Taste <SHIFT-F6> gespeicherten Adresse.
  3128.  
  3129.  
  3130.     ■ <F7>
  3131.  
  3132.     Hilfsregister R1 bis R8 löschen, d.h. auf 0 setzen.
  3133.  
  3134.  
  3135.     ■ <F8>
  3136.  
  3137.     Prozessor-Register auf die Werte beim Aufruf von MDEBUG setzen.
  3138.  
  3139.  
  3140.     ■ <SHIFT-F8>
  3141.  
  3142.     Prozessor-Register auf die  Werte vor dem  Beenden des letzten Auf-
  3143.     rufs von MDEBUG setzen.
  3144.  
  3145.     MDEBUG sichert  vor jedem  Beenden  eines  Aufrufes die  Werte  der
  3146.     Prozessor-Register.  Diese können über  die Taste  <SHIFT-F8>  beim
  3147.     nächsten Aufruf wieder geladen werden.
  3148.  
  3149.  
  3150.     ■ <CTRL-F8>
  3151.  
  3152.     Vertauschen der Adressen der beiden Monitor-Windows.
  3153.  
  3154.  
  3155.     ■ <ALT-CursorUp>, <ALT-CursorDown>
  3156.  
  3157.     Mit  diesen beiden  Tasten kann  das  untere  Window  des  Monitors
  3158.     zeilenweise gescrollt werden. Der Inhalt des Registers FO wird ver-
  3159.     ändert.
  3160.  
  3161.  
  3162.     ■ <ALT-PgUp>, <ALT-PgDn>
  3163.  
  3164.     Seitenweises Scrollen des unteren Windows. Der Inhalt des Registers
  3165.     FO wird verändert.
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.     ────────────────────────────────────────────────────────────────────────────────
  3180.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   45
  3181.  
  3182.  
  3183.  
  3184.     ■ <CTRL-CursorDown>, <CTRL-CursorUp>
  3185.  
  3186.     Mit  diesen beiden  Tasten kann  das  untere Window jeweils um eine
  3187.     Zeile verkleinert bzw. vergrößert werden.
  3188.  
  3189.  
  3190.     ■ Cursor-Tasten
  3191.  
  3192.     Zur  Steuerung des  Cursors bei der Eingabe der Befehle können fol-
  3193.     gende Tasten verwendet werden:
  3194.  
  3195.          <CursorRight>, <CursorLeft>,
  3196.          <Home>, <End>,
  3197.          <CTRL-CursorRight>, <CTRL-CursorLeft>,
  3198.          <Delete>, <BackSpace>
  3199.  
  3200.  
  3201.     ■ <Insert>
  3202.  
  3203.     Umschalten zwischen Insert- und Overwrite-Modus. Der aktuelle Modus
  3204.     ist an  der  Cursorform erkenntlich (siehe Parameter 'CoC=nn{,mm}')
  3205.     Zudem  wird der  aktuelle  Modus  auf dem  oberen Rahmen des Inter-
  3206.     preter-Fensters angezeigt.
  3207.  
  3208.  
  3209.     ■ <CTRL-U>
  3210.  
  3211.     Konvertierung der Zeichen in Großbuchstaben ein- oder  ausschalten.
  3212.     Der aktuelle  Modus  wird auf  dem oberen  Rahmen des  Interpreter-
  3213.     Fensters angezeigt.
  3214.  
  3215.  
  3216.     ■ <CTRL-Q>
  3217.  
  3218.     Ein- oder ausschalten der akustischen Ausgabe von MDEBUG.
  3219.     Der aktuelle  Modus  wird auf  dem oberen  Rahmen des  Interpreter-
  3220.     Fensters angezeigt.
  3221.  
  3222.  
  3223.     ■ <CTRL-End>
  3224.  
  3225.     Löschen der Eingabe ab der Cursor-Position bis zum Ende des Puffers.
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.     ────────────────────────────────────────────────────────────────────────────────
  3240.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   46
  3241.  
  3242.  
  3243.  
  3244.     ■ <CTRL-Home>
  3245.  
  3246.     Löschen der gesamten Eingabe.
  3247.  
  3248.  
  3249.     ■ <CTRL-RETURN>
  3250.  
  3251.     Letzte Eingabe nochmal bearbeiten (ohne Editiermöglichkeit).
  3252.  
  3253.  
  3254.     ■ <SHIFT-RETURN>
  3255.  
  3256.     Letzte Eingabe wieder zum Editieren freigeben.
  3257.  
  3258.  
  3259.     ■ <RETURN>
  3260.  
  3261.     Eingabe bearbeiten
  3262.  
  3263.  
  3264.     ■ <ALT-RETURN>
  3265.  
  3266.     Eingabe  bearbeiten,  aber nicht in den internen Puffer übernehmen,
  3267.     d.h.  die  'letzte Eingabe' für  <SHIFT-RETURN>  und  <CTRL-RETURN>
  3268.     wird nicht verändert.
  3269.  
  3270.     Hinweis:  Diese Tastenkombination funktioniert  nicht auf allen PCs
  3271.               korrekt.
  3272.  
  3273.  
  3274.     ■ <ALT-F5>
  3275.  
  3276.     Verlassen  von MDEBUG mit automatischem Neuaufruf von MDEBUG sobald
  3277.     DOS nicht aktiv ist.  Falls ein aktives  Passwort  installiert ist,
  3278.     wird vor dem neuem Aufruf von MDEBUG das Passwort abgefragt.
  3279.  
  3280.     Ein erneuter  Versuch MDEBUG  über  den Hotkey aufzurufen setzt den
  3281.     Wartezustand wieder zurück.
  3282.     Der  Wartezustand  wird  auch  zurückgesetzt,  falls ein Aufruf der
  3283.     Funktionen 3, 4 oder 5 des User-Ints erfolgreich war.
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.     ────────────────────────────────────────────────────────────────────────────────
  3300.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   47
  3301.  
  3302.  
  3303.  
  3304.     ■ <F10>
  3305.  
  3306.     Verlassen  von MDEBUG, ein  Neuaufruf  von MDEBUG startet im Inter-
  3307.     preter.
  3308.  
  3309.  
  3310.     ■ <ESC>
  3311.  
  3312.     Interpreter verlassen, Rückkehr in den Monitor
  3313.  
  3314.  
  3315.     ■ <ALT-F10>
  3316.  
  3317.     MDEBUG verlassen  mit geänderten Register-Werten, d.h. mit den der-
  3318.     zeit angezeigten Register-Werten. Ein Neuaufaufruf von MDEBUG star-
  3319.     tet im Interpreter.
  3320.  
  3321.     Normalerweise werden die Register vor dem Verlassen  von MDEBUG auf
  3322.     die Werte beim Start des Aufrufs gesetzt.
  3323.  
  3324.     Warnung: Diese  Taste  sollte  nur mit  großer Vorsicht  eingesetzt
  3325.              werden!
  3326.  
  3327.  
  3328.     ■ <CTRL-F10>
  3329.  
  3330.     Abbrechen  des  beim Aufruf  unterbrochenen Prozesses. MDEBUG führt
  3331.     hierzu die Funktion 4Ch des DOS-Interrupts 21h aus.
  3332.     Dabei  wird ausgenutzt,  daß DOS immer noch  davon ausgeht, daß  es
  3333.     sich  im unterbrochenen  Prozess befindet  und  somit der Interrupt
  3334.     sich auf diesen Prozess bezieht.
  3335.     Als Fehlercode (Errorlevel) wird der aktuelle Wert aus dem Register
  3336.     AL zurückgegeben.  Die Funktion dient u.a. dazu, Endlosschleifen zu
  3337.     beenden.
  3338.     Sie sollte nur angewendet werden,  wenn DOS nicht aktiv ist. (siehe
  3339.     auch 'Stack-Überlauf')  Falls der unterbrochene Prozess die oberste
  3340.     Shell-Ebene des COMMAND.COM ist, ist die Funktion nicht möglich.
  3341.     (siehe auch 'Programm-Interna')
  3342.  
  3343.  
  3344.     ■ <ALT-End>
  3345.  
  3346.     Löschen des Original-Tastaturpuffers.
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.     ────────────────────────────────────────────────────────────────────────────────
  3360.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   48
  3361.  
  3362.  
  3363.  
  3364.     Tastenumbelegungen im Interpreter
  3365.     ─────────────────────────────────
  3366.  
  3367.  
  3368.     Hinweis:
  3369.  
  3370.     Mit  der Angabe '#nn'  ist jeweils  das  Zeichen mit dem ASCII-Code
  3371.     nn (dezimal) gemeint. Die so dargestellten Zeichen gelten normaler-
  3372.     weise als Drucker-  bzw. Datei-Steuerzeichen  und  stören somit den
  3373.     Ausdruck der Dokumentation.
  3374.  
  3375.  
  3376.                                                    ┌──────────────────┐
  3377.     Folgende Tasten sind im Interpreter umbelegt:  │     Belegung     │
  3378.     ─────────────────────────────────────────────  │   alt       neu  │
  3379.                                                    ╞══════════╤═══════╡
  3380.     Falls die Original-Belegung erwünscht ist, muß │ <CTRL-O> │  <|>  │
  3381.     vor der Eingabe der  Taste  das  Prefixzeichen │   <ä>    │  <«>  │
  3382.     <CTRL-P> eingegeben werden.                    │   <Ä>    │  <»>  │
  3383.     Das Zeichen <CTRL-P> muß über <CTRL-P><CTRL-P> │   <ö>    │  <[>  │
  3384.     eingegeben werden.                             │   <Ö>    │  <]>  │
  3385.                                                    │   <ü>    │ <#27> │
  3386.     Die Umbelegungen sind nur verfügbar, falls ein │   <Ü>    │ <#26> │
  3387.     deutscher Tastaturtreiber geladen ist.         │   <ß>    │  <¿>  │
  3388.                                                    │   <_>    │  <¬>  │
  3389.                                                    └──────────┴───────┘
  3390.  
  3391.  
  3392.     Befehle des Interpreters
  3393.     ────────────────────────
  3394.  
  3395.     Hinweis:
  3396.  
  3397.     Das Flag-Register ist  ein impliziter  Operand aller  logischen und
  3398.     arithmetischen  Befehle.  D.h.  MDEBUG  benutzt  das  Flag-Register
  3399.     analog zur CPU.  Direkte Operationen auf das  Flag-Register sollten
  3400.     daher im Normalfall über den MOV-Befehl erfolgen.
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.     ────────────────────────────────────────────────────────────────────────────────
  3420.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   49
  3421.  
  3422.  
  3423.  
  3424.     ?{...}
  3425.     ───────────────────────────────────────────────────────────────────
  3426.  
  3427.        Ausgabe  der Nummer  des User-Ints  (oder 0  falls kein User-int
  3428.        installiert ist) im Register AL und des Aufruf-Modus im Register
  3429.        AH.  Für den Aufruf-Modus gilt:
  3430.  
  3431.             AH = 1 ->> Der Aufruf erfolgte über den Hotkey
  3432.             AH = 2 ->> Der Aufruf erfolgte über den User-Int
  3433.             AH = 3 ->> Der Aufruf erfolgte über den automatischen
  3434.                        Aufruf (Taste <ALT-F5>)
  3435.             AH = 4 ->> Der Aufruf erfolgte über einen zusätzlichen
  3436.                        Interrupt (über den Einsprung-Offset)
  3437.  
  3438.        im Register  BX wird  der  Einsprung-Offset  von MDEBUG  zurück-
  3439.        gegeben. Die aus diesem Wert als Offset und dem  Codesegment von
  3440.        MDEBUG als  Segment gebildetete Adresse  muß  aufgerufen  werden
  3441.        (per  Interrupt-Aufruf), falls der  Aufruf von MDEBUG über einen
  3442.        zusätzlichen Interrupt erfolgen soll.  Vor dem  Aufruf  muß  die
  3443.        aufrufende Routine schon,  falls nötig, den  Interrupt bestätigt
  3444.        haben. Eine  Überprüfung, ob  MDEBUG schon  aktiv ist, ist nicht
  3445.        erforderlich da diese durch MDEBUG selbst erfolgt.
  3446.  
  3447.        MDEBUG verhält sich nach einem Aufruf über den Einsprung-Offset,
  3448.        analog zu einen Aufruf über  den Hotkey.  (inclusive Bildschirm-
  3449.        modus- und Passwortüberprüfung)
  3450.  
  3451.        Beispiel:
  3452.  
  3453.        Aufruf von MDEBUG auch über den Hardware-Interrupt 0Ch (COM1):
  3454.  
  3455.        ; diese Routine muß über einen  Int-Befehl aufgerufen werden!
  3456.            Int0ChRoutine:
  3457.  
  3458.        ; Aufruf der alten Int-Routine per simulierten Int-Aufruf 
  3459.          pushf
  3460.          cli
  3461.          call OldIntSegment:OldIntOffset
  3462.  
  3463.        ; Die durch  den eigentlichen Int-Befehl auf den Stack gebrachte
  3464.        ; Rückkehr-Adresse  und  Flags stehen immer noch dort und werden
  3465.        ; von MDEBUG als Rückkehradresse und gesicherte Flags  verwendet
  3466.        ; Der Segment-Wert  für den JMP-Befehl  kann z.B. über den User-
  3467.        ; Int ermittelt werden.
  3468.        ; Auf dem Stack darf nur noch die Rückkehr-Adresse für den IRET-
  3469.        ; Befehl stehen!
  3470.          jmp CS:EinsprungOffset
  3471.  
  3472.        ; hier kommt die Routine niemals hin!
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.     ────────────────────────────────────────────────────────────────────────────────
  3480.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   50
  3481.  
  3482.  
  3483.  
  3484.        weiteres Beispiel:
  3485.  
  3486.        Aufruf von MDEBUG auch über den Software-Interrupt 7Eh:
  3487.  
  3488.        ; Hierzu  reicht  es aus, die  Adresse für den  Interrupt 7Eh in
  3489.        ; der Interrupt-Tabelle bei 0:0 zu ändern, z.B.
  3490.  
  3491.          mov dx,EinsprungOffset
  3492.          mov ds,CS_of_MDEBUG  ; DS:DX = neue Adresse für den Interrupt
  3493.          mov ax,0257Eh        ; Interrupt über DOS umsetzen
  3494.          int 021h
  3495.  
  3496.  
  3497.     V{...} {reg1}{,}{reg2}
  3498.     ───────────────────────────────────────────────────────────────────
  3499.  
  3500.        Setzt  das  Register  reg1 als  Segment-Register  für  das obere
  3501.        Fenster des Monitors und, falls angegeben, das Register reg2 als
  3502.        Offset-Register.
  3503.        reg1 und reg2 müssen Wort-Register sein.
  3504.  
  3505.        Falls der Operand  reg1 korrekt  erkannt wird,  der Operand reg2
  3506.        aber nicht, wird nur das Segment-Register des Monitors geändert.
  3507.  
  3508.  
  3509.     #26{...} {seg1:}[reg1|wert1] {...}{#26}
  3510.     ───────────────────────────────────────────────────────────────────
  3511.  
  3512.        Sichern der Befehlszeile ab dem ersten Zeichen hinter dem ersten
  3513.        Operanden das kein Leerzeichen ist.Gesichert werden alle Zeichen
  3514.        bis  zum nächsten  '#26'-Zeichen oder  bis zum Ende des Eingabe-
  3515.        Puffers (nicht der Eingabe). Hinter der gesicherten Zeichenkette
  3516.        wird von MDEBUG noch ein Null-Byte als Endekennung gesetzt.
  3517.        Die gesicherte  Zeichenkette belegt  max. 67 Zeichen; das '#26'-
  3518.        Zeichen wird nicht mitgesichert.
  3519.  
  3520.        Der  Zielbereich für  die Sicherung befindet sich im Speicher ab
  3521.        der  durch  den ersten Operanden angegebenen Adresse.  Der erste
  3522.        Operand muß mit mindestens einem Leerzeichen enden.  Die gesich-
  3523.        erten Zeichen werden nicht weiter bearbeitet. Sie können mit dem
  3524.        Befehl  '#27' oder '#27'H (s.u.) neu  in den Eingabepuffer über-
  3525.        nommen werden.
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.     ────────────────────────────────────────────────────────────────────────────────
  3540.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   51
  3541.  
  3542.  
  3543.  
  3544.        Beispiel:
  3545.  
  3546.        Die Eingabe
  3547.  
  3548.             M OF,80 ^ #26 OF+2    M R7,BX ^ ? #26 ^ M CX,0
  3549.  
  3550.        wird folgendermaßen bearbeitet:
  3551.  
  3552.        1. Das Register OF wird auf den Wert 80h gesetzt.
  3553.  
  3554.        2. Als Offset  für den Befehl zum  Sichern der Eingabezeile wird
  3555.           82h  ermittelt,  als Segment  wird  das Segment  des Monitors
  3556.           genommen.  Die  Leerzeichen hinter dem ersten  Operanden  des
  3557.           '#26'-Befehls ('OF+2') werden überlesen.
  3558.  
  3559.        3. Die Teileingabe
  3560.  
  3561.                 'M R7,BX ^ ? '
  3562.  
  3563.           wird in den Speicher ab der Adresse MonitorSegment:0082h, mit
  3564.           einem  Null-Byte  als Endekennung  versehen, übertragen.  Die
  3565.           Teil-Eingabe wird nicht weiter bearbeitet.
  3566.  
  3567.        4. Das Register CX wird auf 0 gesetzt.
  3568.  
  3569.        Das Zeichen '#26' liegt im Interpreter auf der Taste <Ü>.
  3570.  
  3571.  
  3572.     #27{...} {seg1:}[reg1|wert1]
  3573.     ───────────────────────────────────────────────────────────────────
  3574.  
  3575.        Restaurieren  des  Eingabe-Puffers  aus  dem  Null-String ab der
  3576.        Speicherstelle die der Operand bezeichnet.
  3577.  
  3578.        Falls  der String  zu lang ist, werden nur die ersten 66 Zeichen
  3579.        des Strings übernommen. Der gelesene String kann nach dem Befehl
  3580.        im Eingabepuffer editiert werden.
  3581.        Der Eingabe-Puffer wird vor  der Übernahme gelöscht. Das Zeichen
  3582.        '#27'  liegt im Interpreter  auf der Taste <ü>.  Der Befehlsname
  3583.        darf nicht mit einem 'H' enden.
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.     ────────────────────────────────────────────────────────────────────────────────
  3600.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   52
  3601.  
  3602.  
  3603.  
  3604.     #27{...}H {seg1:}[reg1|wert1]
  3605.     ───────────────────────────────────────────────────────────────────
  3606.  
  3607.        Der Befehl arbeitet äquivalent zum '#27'-Befehl, allerdings wird
  3608.        die geladene  Befehlszeile sofort  bearbeitet.  Der  Befehlsname
  3609.        muß mit einem 'H' enden.
  3610.        Falls  eine  Endlos-Schleife  programmiert  wurde, kann sie über
  3611.        die BREAK-Taste abgebrochen werden.
  3612.  
  3613.  
  3614.     D{UMP} Mn
  3615.     ───────────────────────────────────────────────────────────────────
  3616.  
  3617.        Der Inhalt des  Memory-Speichers  mit der Nummer n (0 <= n <= 9)
  3618.        wird als  neue  Monitor-Start-Adresse (Segment:Offset) genommen.
  3619.        Falls n gleich '0' ist, wird der Monitor auf die Adresse des DIB
  3620.        (DOS-Info-Block) gesetzt.
  3621.        Hinter dem 'M' darf kein Leerzeichen folgen.
  3622.  
  3623.  
  3624.     P{OINTER} {seg1:}[reg1|wert1]
  3625.     ───────────────────────────────────────────────────────────────────
  3626.  
  3627.        Das Doppelwort, auf das der Operand zeigt wird als neue Monitor-
  3628.        Start-Adresse genommen. (INTEL-Format)
  3629.  
  3630.  
  3631.     A{DD} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3632.     ───────────────────────────────────────────────────────────────────
  3633.  
  3634.        Addiert den Wert des 2. Operanden auf den Wert des 1. Operanden.
  3635.  
  3636.  
  3637.     S{UB} {seg1:}[reg1|wert1],{seg2}[reg2|wert2]
  3638.     ───────────────────────────────────────────────────────────────────
  3639.  
  3640.        Subtrahiert den Wert des 2. Operanden vom Wert des 1. Operanden.
  3641.  
  3642.  
  3643.     a{dc} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3644.     ───────────────────────────────────────────────────────────────────
  3645.  
  3646.        Addiert den  Wert des  2. Operanden und  den Wert des Carryflags
  3647.        auf den Wert des 1. Operanden. (entspricht ADC-Befehl)
  3648.  
  3649.  
  3650.  
  3651.  
  3652.  
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658.  
  3659.     ────────────────────────────────────────────────────────────────────────────────
  3660.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   53
  3661.  
  3662.  
  3663.  
  3664.     s{bc} {seg1:}[reg1|wert1],{seg2}[reg2|wert2]
  3665.     ───────────────────────────────────────────────────────────────────
  3666.  
  3667.        Subtrahiert  den Wert  des 2. Operanden  und den Wert des Carry-
  3668.        flags vom Wert des 1. Operanden. (entspricht SBB-Befehl)
  3669.  
  3670.  
  3671.     + {seg1:}[reg1|wert1]
  3672.     ───────────────────────────────────────────────────────────────────
  3673.  
  3674.        Erhöht den Wert des Operanden um 1 (entspricht INC-Befehl)
  3675.  
  3676.  
  3677.     - {seg1:}[reg1|wert1]
  3678.     ───────────────────────────────────────────────────────────────────
  3679.  
  3680.        Vermindert den Wert des Operanden um 1 (entspricht DEC-Befehl)
  3681.  
  3682.  
  3683.     > {seg1:}[reg1|wert1]
  3684.     ───────────────────────────────────────────────────────────────────
  3685.  
  3686.        Wert des Operanden um 1 Bit nach rechts shiften (entspricht SHR-
  3687.        Befehl; Wirkung: op:= op DIV 2)
  3688.  
  3689.  
  3690.     < {seg1:}[reg1|wert1]
  3691.     ───────────────────────────────────────────────────────────────────
  3692.  
  3693.        Wert des Operanden um 1 Bit nach  links shiften (entspricht SHL-
  3694.        Befehl; Wirkung: op:= op MUL 2)
  3695.  
  3696.  
  3697.     » {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3698.     ───────────────────────────────────────────────────────────────────
  3699.  
  3700.        Wert des 1. Operanden um n Bits  nach rechts shiften wobei n der
  3701.        Wert des 2. Operanden ist (immer  Byte). Falls n  größer  als 15
  3702.        ist, ist  das  Ergebnis immer 0. Das Zeichen '«' liegt im Inter-
  3703.        preter auf der Taste <Ä>.
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.     ────────────────────────────────────────────────────────────────────────────────
  3720.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   54
  3721.  
  3722.  
  3723.  
  3724.     « {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3725.     ───────────────────────────────────────────────────────────────────
  3726.  
  3727.        Wert des 1. Operanden um n Bits nach  links shiften wobei  n der
  3728.        Wert des 2. Operanden ist (immer Byte). Falls  n  größer  als 15
  3729.        ist, ist  das Ergebnis  immer 0. Das Zeichen '«' liegt im Inter-
  3730.        preter auf der Taste <ä>.
  3731.  
  3732.  
  3733.     & {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3734.     ───────────────────────────────────────────────────────────────────
  3735.  
  3736.        AND-Verknüpfung zwischen  dem  Wert des 1. und des 2. Operanden,
  3737.        der Wert des 1. Operanden wird geändert.
  3738.  
  3739.  
  3740.     | {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3741.     ───────────────────────────────────────────────────────────────────
  3742.  
  3743.        OR-Verknüpfung zwischen dem  Wert des 1. und  des  2. Operanden,
  3744.        der Wert des 1. Operanden  wird geändert. Das Zeichen  '|' liegt
  3745.        im Interpreter auf der Taste <CTRL-O>.
  3746.  
  3747.  
  3748.     ! {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3749.     ───────────────────────────────────────────────────────────────────
  3750.  
  3751.        XOR-Verknüpfung zwischen dem Wert  des 1. und des  2. Operanden,
  3752.        der Wert des 1. Operanden wird geändert.
  3753.  
  3754.  
  3755.     T {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3756.     ───────────────────────────────────────────────────────────────────
  3757.  
  3758.        AND-Verknüpfung  zwischen  dem  Wert des 1. und des 2. Operanden
  3759.        ohne  Änderung  des Wertes des 1. Operanden.  Es werden also nur
  3760.        die Flags gesetzt. (entspricht TEST-Befehl)
  3761.  
  3762.  
  3763.     N{EG} {seg1:}[reg1|wert1]
  3764.     ───────────────────────────────────────────────────────────────────
  3765.  
  3766.        Wert des Operanden negieren (Zweierkomplement)
  3767.  
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.     ────────────────────────────────────────────────────────────────────────────────
  3780.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   55
  3781.  
  3782.  
  3783.  
  3784.     M{OV} {seg1:}[reg1|wert1],{seg2:}[reg2|wert2]
  3785.     ───────────────────────────────────────────────────────────────────
  3786.  
  3787.        Kopiert den Wert des 2. Operanden in den 1. Operanden
  3788.  
  3789.  
  3790.     C{OP}Y
  3791.     ───────────────────────────────────────────────────────────────────
  3792.  
  3793.        Kopieren von CX Bytes von DS:SI nach ES:DI.
  3794.        Entspricht dem Befehl REP MOVSB.
  3795.  
  3796.        Vor dem  Befehl  werden  alle  Register  geladen (auch das Flag-
  3797.        Register!)  nach der Ausführung werden die Register-Werte korri-
  3798.        giert. Es finden keinerlei Überprüfungen statt,  so daß z.B. die
  3799.        korrekte  Richtung der  Kopieraktion vom  Benutzer ermittelt und
  3800.        über den Wert des Direction-Flags gesetzt werden muß.
  3801.  
  3802.  
  3803.     I{NT} [reg|wert]
  3804.     ───────────────────────────────────────────────────────────────────
  3805.  
  3806.        Führt  den  angegebenen Interrupt  mit den angezeigten Register-
  3807.        Werten aus. Der  Wert des  Operanden  muß  zwischen  01h und FFh
  3808.        liegen. Die Angabe einer Speicheradresse ist nicht möglich.
  3809.  
  3810.        Beachtet werden muß  hierbei, daß  DOS immer noch davon ausgeht,
  3811.        im unterbrochenen  Prozess zu sein, da die PSP-Adresse, die DTA-
  3812.        Adresse und ähnliches nicht umgesetzt werden.
  3813.  
  3814.        Der Interrupt 0h kann nur über den Befehl
  3815.  
  3816.             B CD,00
  3817.  
  3818.        aufgerufen werden.
  3819.  
  3820.        Die Funktionen  4Ch (Beende Prozess),  00h (Beende Programm) und
  3821.        31h (Beende Prozess, aber behalte ihn im Speicher) des Interrupt
  3822.        21h, der Interrupt  20h (Beende Programm),  die  Interrupts 22h,
  3823.        23h,  24h  und der  Interrupt 27h  (Beende  Programm mit  einge-
  3824.        schränkter  Speicherfreigabe) sollten auf keinen Fall ausgeführt
  3825.        werden.  In  diesem  Fall  würde das  AKTIV-Flag immer  noch auf
  3826.        'Aktiv' stehen und somit kein Neuaufruf  von MDEBUG mehr möglich
  3827.        sein.
  3828.        Dieser  Mißstand kann allerdings  durch  den erneuten Aufruf von
  3829.        MDEBUG mit dem Parameter 'SET' bzw. über den Aufruf der Funktion
  3830.        05h des User-Ints geändert werden.
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.     ────────────────────────────────────────────────────────────────────────────────
  3840.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   56
  3841.  
  3842.  
  3843.  
  3844.     B b1{{,}b2..{,}bn}
  3845.     ───────────────────────────────────────────────────────────────────
  3846.  
  3847.        Führt die angegebenen Maschinencodes mit den aktuellen Register-
  3848.        Werten aus. b1..bn müssen hexadezimale Werte zwischen 0 und 0FFh
  3849.        sein. (Register,  Konstante und alle  anderen  Schreibweisen von
  3850.        Werten sind nicht erlaubt)
  3851.  
  3852.        Leerzeichen  zwischen den  Bytes  sind  nicht erlaubt (ein Leer-
  3853.        zeichen  wird  als Ende  der Operanden gewertet!),  als  Trenner
  3854.        zwischen  den  Bytes darf ein  Komma gesetzt  werden; jedes Byte
  3855.        muß  mit ZWEI hexadezimalen   Zeichen  angegeben  werden - evtl.
  3856.        mit einer führenden Null.
  3857.  
  3858.        Die Maschinencodes werden  in  der angegebenen Reihenfolge byte-
  3859.        weise in das  Codesegment  von MDEBUG eingepatcht und, falls bei
  3860.        der Ermittlung der Maschinen-Codes kein Fehler auftrat, in EINEM
  3861.        Durchgang ausgeführt. Der Befehl kann nicht abgebrochen werden.
  3862.  
  3863.        Bei  Ausführen  eines  Interrupts (über 'B CD,nn') sind die Ein-
  3864.        schränkungen wie  beim I-Befehl  zu beachten.  Maximal können in
  3865.        einen Befehl 32 Byte  Maschinencode eingegeben werden.  Nach der
  3866.        Ausführung des  B-Befehls wird die Anzeige des Monitors  automa-
  3867.        tisch aktualisiert.
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877.  
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.     ────────────────────────────────────────────────────────────────────────────────
  3900.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   57
  3901.  
  3902.  
  3903.  
  3904.     G{O} [reg|wert]
  3905.     ───────────────────────────────────────────────────────────────────
  3906.  
  3907.        Ausführen von Maschinen-Code.
  3908.        Der Wert  des Operanden ist die explizite  Länge des  Maschinen-
  3909.        Codes  in Byte.  Das  Maximum  für die Länge des Maschinen-Codes
  3910.        ergibt sich aus der Formel
  3911.  
  3912.            (Monitor-Offset + Maschinencode-Länge + 5) <= 0FFFFh
  3913.  
  3914.        da der  gesamte auszuführende Code in einem Segment  liegen muß.
  3915.        (5 = Länge eines FAR-JMPs) Der auszuführende Maschinen-Code  muß
  3916.        bei der Monitor-Start-Adresse beginnen.Der Maschinen-Code sollte
  3917.        im  RAM sein, überprüft  wird nur, ob der Rücksprung eingepatcht
  3918.        werden  kann.  MDEBUG arbeitet beim G-Befehl  nur mit  Sprungan-
  3919.        weisungen,  d.h.  die 'normalen'  Debugger-Interrupts  für diese
  3920.        Aufgabe werden  nicht  verwendet.  Vor dem  G-Befehl werden alle
  3921.        Register mit den angezeigten Werten geladen, nach der Ausführung
  3922.        werden die geänderten Registerwerte angezeigt und der angezeigte
  3923.        Speicherausschnitt im Monitor wird aktualisiert.
  3924.        Der Befehl ist  nur mit  äußerster  Vorsicht zu benutzen. Der G-
  3925.        Befehl kann  über  die  BREAK-Taste abgebrochen  werden.  Da der
  3926.        Abbruch aber einen  STACK-Frame  kostet,  gilt hier  das gleiche
  3927.        wie für den Prozess-Abbruch  durch <CTRL-F10>.  Vor der Ausführ-
  3928.        ung eines G-Befehls sollte das Interrupt-Flag gesetzt sein.
  3929.  
  3930.  
  3931.  
  3932.  
  3933.  
  3934.  
  3935.  
  3936.  
  3937.  
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.     ────────────────────────────────────────────────────────────────────────────────
  3960.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   58
  3961.  
  3962.  
  3963.  
  3964.     / hilfreg
  3965.     ───────────────────────────────────────────────────────────────────
  3966.  
  3967.        Speichern der Monitor-Start-Adresse in zwei Hilfsregistern wobei
  3968.        der Offset des  Monitors im Register hilfreg und das Segment des
  3969.        Monitors im folgenden Hilfsregister gespeichert wird.
  3970.  
  3971.  
  3972.     \ hilfreg
  3973.     ───────────────────────────────────────────────────────────────────
  3974.  
  3975.        Restaurieren  der Monitor-Start-Adresse aus  zwei Hilfsregistern
  3976.        wobei der Offset  aus  dem  Register hilfreg und das Segment aus
  3977.        dem folgenden Hilfsregister restauriert wird.
  3978.  
  3979.  
  3980.     # hilfreg
  3981.     ───────────────────────────────────────────────────────────────────
  3982.  
  3983.        Vertauschen  der  Monitor-Start-Adresse  mit zwei Hilfsregistern
  3984.        wobei der Offset mit  dem Wert des Register hilfreg und das Seg-
  3985.        ment mit dem Wert des folgenden Hilfsregisters getauscht werden.
  3986.  
  3987.  
  3988.     W{AIT}
  3989.     ───────────────────────────────────────────────────────────────────
  3990.  
  3991.        Aktualisieren  der Registerwerte und des Monitors und warten auf
  3992.        einen Tastendruck bevor  die Ausführung der Befehlszeile fortge-
  3993.        setzt wird.  Auf dem oberen Rand des Fenster wird eine blinkende
  3994.        Wartemeldung angezeigt.  Die  eingegebene  Taste wird folgender-
  3995.        maßen interpretiert:
  3996.  
  3997.        <ESC>         -  Abbruch der Ausführung
  3998.        <Backspace>   -  Bearbeitung der Befehlszeile ab dem Anfang
  3999.        andere Tasten -  Bearbeitung der Befehlszeile fortsetzen
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.     ────────────────────────────────────────────────────────────────────────────────
  4020.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   59
  4021.  
  4022.  
  4023.  
  4024.     H{OME} {[reg|wert]}
  4025.     ───────────────────────────────────────────────────────────────────
  4026.  
  4027.        Nochmalige  Ausführung der  Befehlszeile ab  dem ersten Zeichen.
  4028.        Vor der Fortsetzung der Bearbeitung der  Befehlszeile werden der
  4029.        Monitor-Inhalt  und  die angezeigten Registerwerte aktualisiert.
  4030.        Der  Wert des Operanden  ist die  Anzahl von  Warteschleifen die
  4031.        vor dem H-Befehl  ausgeführt werden sollen.  (Voreinstellung: 0)
  4032.  
  4033.        Der  H-Befehl sollte  nur in Verbindung  mit dem W-oder ¿-Befehl
  4034.        verwendet werden,  da sonst  eine  Endlos-Schleife  programmiert
  4035.        wird.  Geschieht  dies  doch  einmal, kann diese über die BREAK-
  4036.        Taste abgebrochen werden.
  4037.  
  4038.        Beispiel für den H-Befehl:
  4039.  
  4040.             MOV AH,0 ^ I 16 ^ ¿ (AL ¬ #27) ^ H
  4041.  
  4042.             Die Schleife wird durch Eingabe von <ESC> beendet.
  4043.  
  4044.             ADD SE,4 ^ H 2
  4045.  
  4046.             Die Schleife muß mit der BREAK-Taste abgebrochen werden.
  4047.  
  4048.        Der Befehlsname darf nicht mit einem 'N' enden.
  4049.  
  4050.  
  4051.     H{...}N {[reg|wert]}
  4052.     ───────────────────────────────────────────────────────────────────
  4053.  
  4054.        Der HN-Befehl arbeitet äquivalent zum H-Befehl.
  4055.        Der einzige Unterschied ist, daß  beim  HN-Befehl der Inhalt des
  4056.        Monitors vor der Ausführung des Befehls nicht upgedatet wird.
  4057.        Der Update des Monitors  geschieht hier nur nach dem Beenden des
  4058.        Befehls  bzw. nach dem Abbruch der Schleife.  Der  HN-Befehl ist
  4059.        deshalb entsprechend schneller als der H-Befehl. Da aber nur die
  4060.        im  Interpreter  angezeigten  Register-Werte  vor  dem HN-Befehl
  4061.        jeweils aktualisiert  werden,  sollte  möglichst  zur  optischen
  4062.        Kontrolle  immer eines dieser Register z.B. als Zähler verändert
  4063.        werden. Der Befehlsname muß mit einem 'N' enden.
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.     ────────────────────────────────────────────────────────────────────────────────
  4080.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   60
  4081.  
  4082.  
  4083.  
  4084.     ¿ [reg|wert]
  4085.     ───────────────────────────────────────────────────────────────────
  4086.  
  4087.        Bearbeitung  der  Befehlszeile  fortsetzen,  falls der  Wert des
  4088.        Operanden ungleich 0 ist, ansonsten die Bearbeitung abbrechen.
  4089.        Das Zeichen '¿' liegt auf der Taste <ß>.
  4090.  
  4091.        Der Befehlsname darf nicht mit einem 'H' enden.
  4092.  
  4093.        Mit Hilfe des ¿-Befehls können auch kleine Schleifen mit beding-
  4094.        ter Ausführung programmiert werden.
  4095.  
  4096.        Beispiel:
  4097.  
  4098.        Füllen des  Speicherbereichs bei DS:BX mit den ASCII-Codes von 0
  4099.        bis 255 (256 Byte):
  4100.  
  4101.        Vorbereitung: M AL,0
  4102.  
  4103.        Ausführung:   M DS:[BX+AL],AL ^+ AL ^¿ AL ^H
  4104.  
  4105.        Bemerkung:
  4106.  
  4107.        Der  H-Befehl wird  nur ausgeführt,  falls AL ungleich 0 ist. Da
  4108.        aber  der  Befehl '+ AL' das  Register AL  auf 0 setzt sobald AL
  4109.        gleich 255 ist, wird dadurch also die Ausführung beendet.
  4110.  
  4111.        Falls  der Inhalt einer  Speicherstelle geprüft werden soll, muß
  4112.        dieser zuerst in ein Register gebracht werden.
  4113.  
  4114.        Beispiel:
  4115.  
  4116.        Incrementieren von AX bis die Taste <CTRL> gedrückt wird:
  4117.  
  4118.        Ausführung:   + AX ^ M BL,040:017 ^¿ ((BL & 04) ! 04) ^H
  4119.                      oder
  4120.                      + AX ^M BL,040:017 ^¿ (BL % 2)¬1 ^H
  4121.  
  4122.        Bemerkung:
  4123.  
  4124.        Hier  wird vor  dem ¿-Befehl erst der Inhalt  der Speicherstelle
  4125.        040h:017h in das Register BL geladen, damit dann im ¿-Befehl das
  4126.        Bit 2 dieser geprüft werden kann.
  4127.  
  4128.  
  4129.  
  4130.  
  4131.  
  4132.  
  4133.  
  4134.  
  4135.  
  4136.  
  4137.  
  4138.  
  4139.     ────────────────────────────────────────────────────────────────────────────────
  4140.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   61
  4141.  
  4142.  
  4143.  
  4144.     ¿H [reg|wert]
  4145.     ───────────────────────────────────────────────────────────────────
  4146.  
  4147.        Bearbeitung der Befehlszeile fortsetzen, falls der Wert des Ope-
  4148.        randen ungleich Null ist, ansonsten die Befehlszeile noch einmal
  4149.        von  vorne bearbeiten. Das  Zeichen '¿' liegt auf der Taste <ß>.
  4150.  
  4151.        Der Befehlsname muß mit einem 'H' enden.
  4152.  
  4153.  
  4154.     F {n}
  4155.     ───────────────────────────────────────────────────────────────────
  4156.  
  4157.        Verändern des unteren Windows des Monitors.
  4158.  
  4159.        Der  Befehl arbeitet  äquivalent zur  Taste <F8> im Monitor, die
  4160.        Werte der Register FS und FO werden aber nicht verändert. n  ist
  4161.        die Anzahl der Zeilen für das untere Window des Monitors.
  4162.        (1 <= n <= 6), fehlt n wird das untere Window geschlossen)
  4163.  
  4164.  
  4165.     FX
  4166.     ───────────────────────────────────────────────────────────────────
  4167.  
  4168.        Vertauschen der Adressen der Monitor-Windows.
  4169.  
  4170.  
  4171.     @ {...}
  4172.     ───────────────────────────────────────────────────────────────────
  4173.  
  4174.        Kommentarbefehl, d.h. die Parameter werden ignoriert.
  4175.  
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.     ────────────────────────────────────────────────────────────────────────────────
  4200.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   62
  4201.  
  4202.  
  4203.  
  4204.     Q{UIT}
  4205.     ───────────────────────────────────────────────────────────────────
  4206.  
  4207.        MDEBUG verlassen, Wirkung wie die Taste <F10>
  4208.  
  4209.        Der Befehlsname darf nicht mit einem 'R' oder 'L' enden.
  4210.  
  4211.  
  4212.     Q{UIT}R
  4213.     ───────────────────────────────────────────────────────────────────
  4214.  
  4215.        MDEBUG verlassen mit  automatischen Neuaufruf  von  MDEBUG falls
  4216.        DOS nicht aktiv ist. Wirkung wie die Taste <ALT-F5>.
  4217.  
  4218.        Der Befehlsname muß mit einem 'R' enden.
  4219.  
  4220.  
  4221.     Q{UIT}L
  4222.     ───────────────────────────────────────────────────────────────────
  4223.  
  4224.        Wird MDEBUG über  diesen  Befehl  verlassen, so  beendet  es den
  4225.        Aufruf  und sperrt  die Tastatur. Der unterbrochene Prozeß läuft
  4226.        danach ganz normal weiter - allerdings führt jeder Versuch, eine
  4227.        Taste über  die Tastatur einzugeben dazu,  daß MDEBUG zuerst das
  4228.        Passwort abfrägt. Erst nach der korrekten Eingabe des Passwortes
  4229.        gibt MDEBUG die  Tastatur  wieder frei.  Die Sperrung  wird auch
  4230.        wieder aufgehoben  durch den Aufruf von MDEBUG über die Funktion
  4231.        3 bzw. 4 des User-Ints  oder  einen Aufruf von MDEBUG über einen
  4232.        zusätzlichen Interrupt.
  4233.        Der Befehl dient vor allem dazu, den PC  für kurze Zeit für Ein-
  4234.        gaben zu  sperren ohne  eine evtl.  Programmausführung zu unter-
  4235.        brechen.
  4236.  
  4237.        Der Befehl 'QL' funktioniert nur, falls ein aktives Passwort für
  4238.        MDEBUG installiert ist. Da MDEBUG bei der Abfrage des Passwortes
  4239.        den Bildschirmmodus in diesem Fall nicht berücksichtigt, kann es
  4240.        vorkommen, daß das Passwort blind eingegeben werden muß. Während
  4241.        der  Sperrung  ist  auch  die  Tastenkombination  <CTRL-ALT-DEL>
  4242.        gesperrt.  Auch hier stehen für die Eingabe des Passwortes  max.
  4243.        10 Sekunden zur Verfügung.
  4244.        Der Befehlsname muß mit einem 'L' enden.
  4245.  
  4246.        Hinweis: Maus-Eingaben  werden nicht unterbunden und TSRs können
  4247.                 teilweise noch über ihren Hotkey aufgerufen werden.
  4248.  
  4249.  
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259.     ────────────────────────────────────────────────────────────────────────────────
  4260.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   63
  4261.  
  4262.  
  4263.  
  4264.     SH [suchmaske] {,}{...}
  4265.     ───────────────────────────────────────────────────────────────────
  4266.  
  4267.        Der Befehl  SH  dient  zum Suchen  einer Bytefolge  im Speicher.
  4268.        Gesucht wird  ab dem zweiten im ersten Window des Monitors ange-
  4269.        zeigten Byte  bis zum  Ende des ersten  Megabytes des Speichers.
  4270.        Falls  die  Bytefolge  gefunden  wird,  wird  die Monitor-Start-
  4271.        Adresse mit der Adresse der Bytefolge geladen.
  4272.        Die gefundene Adresse wird folgendermaßen konvertiert:
  4273.  
  4274.        Falls die Adresse VOR dem ersten MCB oder HINTER dem letzten MCB
  4275.        liegt,  wird  sie  in  die  Form  'nn00:nnnn'  konvertiert. (mit
  4276.        n <= 0 <= F) und das Register AX wird auf 0 gesetzt.
  4277.  
  4278.        Liegt die Adresse in den ersten 65.535 Byte eines Speicherblocks
  4279.        der über die MCB-Kette  verwaltet wird,  so wird sie in die Form
  4280.        'seg:nnnn' konvertiert, wobei seg das Segment des Speicherblocks
  4281.        in dem die Adresse liegt ist. Sollte diese Form  für die Adresse
  4282.        nicht möglich sein,  so wird sie in die Form 'nn00:nnnn' konver-
  4283.        tiert.  Im Register AX  steht in  beiden Fällen  das Segment des
  4284.        MCBs des Speicherblocks in dem die Adresse liegt.
  4285.  
  4286.        Hinweis:
  4287.  
  4288.        Falls die zu suchende Bytefolge nicht  mindestens ein direkt an-
  4289.        gegebenes  Byte (also  OHNE Joker,  Prefixe und Intervalle) ent-
  4290.        hält, kann  die Suche auf langsameren Rechnern  mehrere  Minuten
  4291.        dauern. (Normalerweise  dauert die Suche ca. 1 - 40 Sekunden, je
  4292.        nach  der  Häufigkeit  des  ersten direkt  angegebenen Bytes  im
  4293.        Speicher und nach der Anzahl der Joker, Prefixe und Intervalle.)
  4294.        Zur Beschleunigung der Suche  sollte  daher immer mindestens ein
  4295.        Byte des  Suchstrings  OHNE Prefixe,  Joker und Intervalle ange-
  4296.        geben werden.
  4297.        Die Suche kann über die BREAK-Taste abgebrochen werden.
  4298.  
  4299.        Aufbau von suchmaske:
  4300.  
  4301.             {string}{,}{¬}{bytemaske}{,}{|{¬}bytemaske}{...}
  4302.  
  4303.        Aufbau von string
  4304.  
  4305.        string ist eine in Hochkommata oder Gänsefüßchen angegebene Zei-
  4306.        chenkette.
  4307.  
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.     ────────────────────────────────────────────────────────────────────────────────
  4320.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   64
  4321.  
  4322.  
  4323.  
  4324.        Aufbau von bytemaske
  4325.  
  4326.            bytewert-bytewert    ->> Byte muß im Intervall liegen
  4327.            bytewert             ->> Byte muß übereinstimmen
  4328.            n?                   ->> nur oberes Nibble wird geprüft
  4329.            ?n                   ->> nur unteres Nibble wird geprüft
  4330.            ??                   ->> Byte wird ignoriert
  4331.  
  4332.  
  4333.        Aufbau von bytewert:
  4334.  
  4335.             nn                  ->> Hexadezimaler Wert, es sind
  4336.                                         mindestens und höchstens zwei
  4337.                                         Ziffern pro Byte nötig.
  4338.             'x'                 ->> ASCII-Zeichen
  4339.  
  4340.        mit:
  4341.  
  4342.             n = Hexziffer (0..9, A..F, a..f)
  4343.  
  4344.             ? = Joker, d.h. der Wert des Nibbles ist egal
  4345.  
  4346.             ¬ = NOT-Prefix, d.h. das Byte darf der Bytemaske nicht
  4347.                 entsprechen
  4348.  
  4349.             | = ODER-Prefix,  d.h. die mit | verketteten Bytemasken
  4350.                 gelten alle für ein Byte. Falls eine der Bytemasken
  4351.                 stimmt, ist das Byte okay.
  4352.  
  4353.             x = ASCII-Zeichen, das Zeichen '■' ist hier kein Joker!
  4354.  
  4355.  
  4356.  
  4357.        Beispiele für Suchmasken:
  4358.  
  4359.        40
  4360.        ->> ist wahr, falls das Byte den Wert 40h hat
  4361.  
  4362.        4?
  4363.        ->> ist wahr, falls das obere Nibble des Bytes 4 ist
  4364.            (z.B. 41h, 42h oder 4Fh)
  4365.  
  4366.        ?5
  4367.        ->> ist wahr, falls das untere Nibble des Bytes 5 ist
  4368.            (z.B. 45h oder F5h)
  4369.  
  4370.        ??
  4371.        ->> ist immer wahr (d.h. das Byte wird ignoriert)
  4372.  
  4373.  
  4374.  
  4375.  
  4376.  
  4377.  
  4378.  
  4379.     ────────────────────────────────────────────────────────────────────────────────
  4380.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   65
  4381.  
  4382.  
  4383.  
  4384.        ¬45
  4385.        ->> ist wahr, falls das Byte NICHT den Wert 45h hat
  4386.  
  4387.        ¬4?
  4388.        ->> ist wahr, falls das obere Nibble des Bytes NICHT 4 ist
  4389.  
  4390.        ¬??
  4391.        ->> sinnlos, Fehler!
  4392.  
  4393.        'A'
  4394.        ->> ist wahr, falls das Byte den Wert 'A' (= 40h) hat
  4395.  
  4396.        'A'-'Z'
  4397.        ->> ist wahr, falls das Byte im Intervall 40h (= 'A') und
  4398.            5Ah (= 'Z') inclusive liegt.
  4399.  
  4400.        ¬'0'-'9'
  4401.        ->> ist wahr, falls das Byte NICHT im Intervall 30h (= '0')
  4402.            und 39h (= '9') liegt.
  4403.  
  4404.        'A'-'F'|'a'-'f'|'0'-'9'
  4405.        ->> ist wahr falls das Byte im Intervall 'A' bis 'F' ODER im
  4406.            Intervall 'a' bis 'f' ODER im Intervall '0' bis '9' liegt.
  4407.  
  4408.  
  4409.        Beispiele für Suchstrings:
  4410.  
  4411.        SH 40,41,42
  4412.        ->> Sucht die Bytefolge  für  die gilt:  Das erste Byte ist 40h,
  4413.            das zweite Byte ist 41h und das dritte Byte ist 42h.
  4414.  
  4415.        SH 40-5?
  4416.        ->> Sinnlos, Fehler!
  4417.            (möglich ist: SH 40-5F)
  4418.  
  4419.        SH 40-??
  4420.        ->> Sinnlos, Fehler!
  4421.            (möglich ist: SH 40-FF)
  4422.  
  4423.        SH 34-20
  4424.        ->> Fehler, die untere Grenze muß kleiner als die obere
  4425.            Grenze sein! Die Maske kann ersetzt werden durch SH ¬21-33
  4426.  
  4427.        SH 'TMP=',¬00
  4428.        ->> Sucht die Bytefolge mit dem Inhalt 'TMP=' hinter der ein
  4429.            Byte ungleich 0 folgen muß
  4430.  
  4431.  
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.     ────────────────────────────────────────────────────────────────────────────────
  4440.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   66
  4441.  
  4442.  
  4443.  
  4444.        SH 'A'-'Z','0'-'9','0'-'9'
  4445.        ->> Sucht die Bytefolge für die gilt:
  4446.            Das erste Byte ist ein Zeichen zwischen 'A' und 'Z' (incl.)
  4447.            und die folgenden beiden Bytes sind jeweils Ziffern im
  4448.            Intervall zwischen '0' und '9'
  4449.  
  4450.        SH 00,00,30|40|50
  4451.        ->> Sucht eine Folge von zwei Nullbytes hinter denen ein Byte
  4452.            mit dem Wert 30h ODER 40h ODER 50h folgen muss.
  4453.  
  4454.        SH ¬00-7F|40,45
  4455.        ->> Sucht die Bytefolge für die gilt:
  4456.            Das erste Byte ist nicht im Intervall 00h bis 7Fh ODER 40h
  4457.            und das folgende Byte ist 45h
  4458.  
  4459.       SH 00,F0,'11/09/87','a'-'z'
  4460.       ->> Sucht die Bytefolge für die gilt:
  4461.           Das erste Byte ist 00h, das zweite Byte ist F0h, darauf folgt
  4462.           der String  '11/09/87' gefolgt von einem Zeichen im Intervall
  4463.           'a' bis 'z'.
  4464.  
  4465.           Aber: Der Suchstring ist nicht optimal gewählt!
  4466.                 Da  nämlich das erste direkt  angegebene Byte den  Wert
  4467.                 00h hat und dieser Wert relativ häufig im Speicher vor-
  4468.                 kommt dauert die Suche unnötig lange!
  4469.                 Sinnvoller wäre:
  4470.  
  4471.                 SH 00|00,F0,'11/09/87','a'-'z'
  4472.                      ┌──
  4473.                      │ (!)
  4474.                      └─────────────────────────────┐
  4475.                 Hier dient  die Angabe  der zweiten Maske für das erste
  4476.                 Byte nur dazu, daß das Byte F0h als erstes direkt ange-
  4477.                 gebenes Byte genommen wird.  Da das Byte  F0h normaler-
  4478.                 weise seltener als das  Byte 00h im Speicher  vorkommt,
  4479.                 geht die Suche so bedeutend schneller.
  4480.                 Probieren Sie's aus  -  möglichst mit einer eindeutigen
  4481.                 Bytefolge im BIOS und der Suche bei 0:0 beginnend.
  4482.  
  4483.                 Getestete Werte auf einen XT mit 8 MHZ:
  4484.  
  4485.                 Start-Adresse der Suche: 0000:0000
  4486.                 Bytefolge gefunden bei:  FF00:0FF3
  4487.                 benötigte Zeit für 'SH 00,F0, ...'    :  13 sec.
  4488.                 benötigte Zeit für 'SH 00|00,F0, ...' :   2 sec. (!)
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.     ────────────────────────────────────────────────────────────────────────────────
  4500.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   67
  4501.  
  4502.  
  4503.  
  4504.       SH 'COMSPEC='
  4505.       ->> Sucht die Zeichenfolge 'COMSPEC='
  4506.  
  4507.           Aber: Da MDEBUG jede mit <RETURN> abgeschlossene Befehlszeile
  4508.                 in einen internen Puffer speichert,  wird die  Zeichen-
  4509.                 folge in diesem  Puffer auf  jeden Fall gefunden, falls
  4510.                 die Start-Adresse für die Suche  kleiner als CS:0 ist.
  4511.                 (CS = Codesegment von MDEBUG)
  4512.                 Soll dies unterdrückt werden, muß einfach nur ein  Byte
  4513.                 des Suchstrings in hexadezimaler Form angegeben werden:
  4514.                 (hier: 43h = ASCII-Code von 'C')
  4515.  
  4516.                 SH 43,'OMPSEC='
  4517.  
  4518.                 oder der Suchstring getrennt werden:
  4519.  
  4520.                 SH 'C','OMSPEC='
  4521.  
  4522.  
  4523.  
  4524.  
  4525.  
  4526.  
  4527.  
  4528.  
  4529.  
  4530.  
  4531.  
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.     ────────────────────────────────────────────────────────────────────────────────
  4560.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   68
  4561.  
  4562.  
  4563.  
  4564.     Bedeutung der Parameter
  4565.     ───────────────────────
  4566.  
  4567.     seg1:
  4568.  
  4569.     Segment-Prefix (erlaubt: bei reg1, reg2, wert1 und wert2)
  4570.  
  4571.     In  MDEBUG ist für  alle  Speicheradressen  das  aktuelle  Segment-
  4572.     Register  des oberen Monitor-Windows  als  Segment der  angegebenen
  4573.     Adresse  voreingestellt.  Diese Voreinstellung  kann aber durch ein
  4574.     Segment-Prefix überschrieben werden. Das Prefix  muß  ein Register,
  4575.     ein expliziter Wert oder ein Ausdruck sein.
  4576.  
  4577.     Beispiele:  MOV BL,AX:[BX]  oder MOV BL,AX:BX
  4578.                 MOV AL,40:*[17] oder MOV AL,40:*17
  4579.                 MOV BL,CS-1:[0] oder MOV BL,CS-1:0
  4580.  
  4581.  
  4582.     reg, reg1, reg2
  4583.  
  4584.     Name eines Registers, möglich sind folgende Namen:
  4585.  
  4586.     Prozessor-Register: AX,BX,CX,DX,DI,SI,ES,DS,BP,SP,SS,FL
  4587.  
  4588.     Die  Register AX .. DX  können  auch byteweise  angesprochen werden
  4589.     (AH, AL .. DH, DL). Mit FL ist das Flag-Register gemeint.
  4590.  
  4591.  
  4592.     Hilfsregister: R1, R2, R3, R4, R5, R6, R7, R8
  4593.  
  4594.     Die  Hilfsregister können  auch unter  folgenden Namen angesprochen
  4595.     werden:
  4596.  
  4597.          1X,2X,3X,4X,5X,6X,7X,8X
  4598.  
  4599.     In dieser  Schreibweise  ist  auch  ein  byteweiser  Bezug, wie bei
  4600.     AX .. DX, möglich.
  4601.  
  4602.          (z.B.) 1L = Lowbyte von R1          5H = Highbyte von R5
  4603.  
  4604.  
  4605.     Binär-Register: R0
  4606.  
  4607.     Das  Binär-Register kann  wie jedes  andere Hilfsregister verwendet
  4608.     werden. (auch  byteweiser  Bezug  über '0L' bzw. '0H')  Der einzige
  4609.     Unterschied ist die binäre Anzeige des Registerwertes.
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  
  4619.     ────────────────────────────────────────────────────────────────────────────────
  4620.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   69
  4621.  
  4622.  
  4623.  
  4624.     Sonder-Register: SE, OF
  4625.  
  4626.     Unter diesen beiden Bezeichnern können die  voreingestellten Regis-
  4627.     ter des Monitors  für das  obere Window  als normale Register ange-
  4628.     sprochen werden (nur als Wort-Register).
  4629.  
  4630.  
  4631.     Versteckte Register: FS, FO
  4632.  
  4633.     Unter diesen beiden Bezeichnern  können  die Register, in denen die
  4634.     Adresse für das untere Window  des Monitors  gespeichert ist, ange-
  4635.     sprochen werden. (nur als Wort-Register)
  4636.  
  4637.     Der Inhalt  dieser  Register  wird nur  angezeigt, falls das untere
  4638.     Window des Monitors eingeschaltet ist.
  4639.  
  4640.  
  4641.     Pseudo-Register
  4642.  
  4643.     Falls als zu verändernder Operand eines  Befehls  weder  ein Regis-
  4644.     ter noch eine  Speicherstelle  angegeben wird, wird das Ergebnis im
  4645.     ersten Pseudo-Register gespeichert.
  4646.     Falls  der zweite Operand ein expliziter Wert, eine  Konstante oder
  4647.     ein Ausdruck ist, wird dieser für die Berechnung im zweiten Pseudo-
  4648.     Register zwischengespeichert.
  4649.  
  4650.     Das erste Pseudo-Register kann z.B. dazu benutzt werden, den Inhalt
  4651.     des  Flag-Registers  nach einem Befehl zu ermitteln ohne einen Ope-
  4652.     randen zu verändern.  Falls  der  Inhalt der Pseudo-Register weiter
  4653.     verwendet  werden  soll,  kann  er über die  Konstanten P1 (Pseudo-
  4654.     Register für den ersten Operanden) und  P2 (Pseudo-Register für den
  4655.     zweiten Operanden) angesprochen werden.
  4656.  
  4657.     Beispiel:
  4658.  
  4659.          Simulation des Befehls 'CMP AX,BX':
  4660.  
  4661.          SUB AX-0,BX
  4662.              ────
  4663.              Ausdruck  als  zu verändernder  Operand,  es wird also das
  4664.              Pseudo-Register für das Ergebnis benutzt und nur das Flag-
  4665.              Register verändert.
  4666.  
  4667.  
  4668.  
  4669.  
  4670.  
  4671.  
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.  
  4678.  
  4679.     ────────────────────────────────────────────────────────────────────────────────
  4680.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   70
  4681.  
  4682.  
  4683.  
  4684.     hilfreg
  4685.  
  4686.     Name  eines  Hilfsregisters,  wobei  das  Register R8 und Adressen-
  4687.     angaben nicht erlaubt sind. Es kann nur  ein Wortregister angegeben
  4688.     werden.
  4689.  
  4690.  
  4691.     wert
  4692.  
  4693.     Explizit angegebener Wert. Explizite Werte können in fünf verschie-
  4694.     denen Formaten angegeben werden.
  4695.  
  4696.     Sind  führende Hochkommata  oder  Gänsefüßchen  vorhanden, wird der
  4697.     Wert als String behandelt. Strings können max. 2 Zeichen lang sein;
  4698.     die  Eingabe  von Steuerzeichen  ist  nur  nach dem  Prefix-Zeichen
  4699.     <CTRL-P>  möglich. Das Verkettungs-Zeichen '^' kann auf keinem Fall
  4700.     in einem String vorkommen.
  4701.     Der  String muß  mit  dem  einleitenden Zeichen  (Hochkommata  oder
  4702.     Gänsefüßchen) abgeschlossen sein. Zur Eingabe von Hochkommata (bzw.
  4703.     Gänsefüßchen) muß als  String-Begrenzer das  Gänsefüßchen (bzw. das
  4704.     Hochkommata) genommen werden. Gänsefüßchen und Hochkommata in einem
  4705.     String sind nicht möglich.
  4706.  
  4707.     Ist kein führendes Gänsefüßchen oder Hochkommata vorhanden wird der
  4708.     Wert  als Zahl  interpretiert.  Fehlt ein Formatkennzeichen für die
  4709.     Zahl,  wird  diese als  Hexadezimalwert interpretiert.  Maximum für
  4710.     eine hexadezimalen Wert  ist 0FFFFh.  Negative  Werte können  durch
  4711.     ein führendes  Minuszeichen  '-'  gekennzeichnet  werden.  Zwischen
  4712.     dem Minuszeichen und dem Wert darf kein Leerzeichen stehen.
  4713.  
  4714.     Zahlen im dezimalen Format können  direkt  eingegben  werden, indem
  4715.     vor dem Wert das Formatkennzeichen '#'  eingegeben wird; für Zahlen
  4716.     im binärem Format muß vor dem Wert ein '$' angegeben werden.
  4717.  
  4718.     Zahlen mit einer Basis zwischen 2 und 15 können auch in der Form
  4719.  
  4720.          b#n{...}
  4721.  
  4722.     angegeben werden, wobei b die Basis für die Zahl ist und n{...} die
  4723.     Zahl selbst (mit 2 <= b <= F und 0 <= n < b).
  4724.     Vorzeichen müssen jeweils direkt vor dem  Formatkennzeichen stehen.
  4725.  
  4726.     Bei  negativen Werten wird  das Zweierkomplement  gebildet  und bei
  4727.     Byte-Werten  wird nur der angegebene Wert modulo 256 übernommen.
  4728.     Zur Formatierung von Zahlen kann in allen Formaten  das Zeichen '.'
  4729.     verwendet werden.
  4730.  
  4731.  
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737.  
  4738.  
  4739.     ────────────────────────────────────────────────────────────────────────────────
  4740.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   71
  4741.  
  4742.  
  4743.  
  4744.     Beispiele:
  4745.  
  4746.          MOV AX,#12       -> AX = 000C  =  12 (dez)
  4747.  
  4748.          MOV BX,-#12      -> AX = FFF4  = -12 (dez)
  4749.  
  4750.          MOV AL,+#34      -> AL = 22    =  34 (dez)
  4751.  
  4752.          MOV CL,#1.234    -> CL = D2    = 210 (dez)
  4753.                                             = (1234 MOD 256)
  4754.  
  4755.          MOV CL,-#1.234   -> CL = 2E    =  46 (dez)
  4756.                                  -1234 = FB2Eh, FB2Eh MOD 100h = 2Eh
  4757.  
  4758.          MOV AX,$11.1100  -> AX = 003C
  4759.  
  4760.          MOV BL,-$01      -> BL = FF
  4761.  
  4762.          MOV AX,5#100     -> AX = 19    =  25 (dez)
  4763.                                             = 100 zur Basis 5
  4764.  
  4765.          MOV BX,F#101     -> BX = E2    = 226 (dez)
  4766.                                             = 101 zur Basis 15
  4767.  
  4768.          MOV CX, -3#121   -> CX = FFF0  = - 16 (dez)
  4769.                                             = -121 zur Basis 3
  4770.  
  4771.  
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792.  
  4793.  
  4794.  
  4795.  
  4796.  
  4797.  
  4798.  
  4799.     ────────────────────────────────────────────────────────────────────────────────
  4800.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   72
  4801.  
  4802.  
  4803.  
  4804.     Konstanten
  4805.     ──────────
  4806.  
  4807.     Überall wo die  Angabe  eines  expliziten  Wertes erlaubt ist, kann
  4808.     auch eine Konstante angegeben werden.
  4809.  
  4810.     Ausnahme:
  4811.  
  4812.     Bei den B- und SH-Befehlen ist eine Konstante nicht erlaubt.
  4813.  
  4814.     Folgende Konstanten sind definiert:
  4815.  
  4816.     ■ CS
  4817.  
  4818.     Segment-Adresse des geladenen MDEBUGs
  4819.     CS wird beim  Installieren  von MDEBUG  gesetzt  und verändert sich
  4820.     danach nicht mehr.
  4821.  
  4822.  
  4823.     ■ RS
  4824.  
  4825.     Segment der Rücksprung-Adresse
  4826.  
  4827.     ■ RO
  4828.  
  4829.     Offset der Rücksprung-Adresse
  4830.  
  4831.     Die  Konstanten  RS und RO  werden bei jedem Aufruf von MDEBUG über
  4832.     den Hotkey, dem User-Int, dem  automatischen Aufruf oder über einen
  4833.     zusätzlichen Interrupt neu ermittelt.
  4834.  
  4835.  
  4836.     ■ P1
  4837.  
  4838.     Inhalt des Pseudoregisters für den ersten Operanden
  4839.  
  4840.     ■ P2
  4841.  
  4842.     Inhalt des Pseudoregisters für den zweiten Operanden
  4843.  
  4844.  
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851.  
  4852.  
  4853.  
  4854.  
  4855.  
  4856.  
  4857.  
  4858.  
  4859.     ────────────────────────────────────────────────────────────────────────────────
  4860.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   73
  4861.  
  4862.  
  4863.  
  4864.     ■ P3
  4865.  
  4866.     Die Konstante  P3 enthält  den Offset  der Variablen 'MDebugColors'
  4867.     von  MDEBUG  (Format: Wort,  Aufbau:  Highbyte: Farbe des Monitors,
  4868.     Lowbyte:  Farbe des  Interpreters).  Durch  Ändern  dieser Variable
  4869.     können  während eines  Aufrufes von MDEBUG  die Farben des Monitors
  4870.     und des Interpreters verändert werden.
  4871.     ('MOV CS:*[P3],nn'   ->> Farbe des Interpreters ändern,
  4872.      'MOV CS:*[P3+1],nn' ->> Farbe des Monitors ändern)
  4873.  
  4874.     Nach einer Änderung der  Farben müssen die  Fenster von MDEBUG über
  4875.     die Taste <ALT-F9> neu aufgebaut werden, damit die Änderungen wirk-
  4876.     sam werden.
  4877.  
  4878.  
  4879.     ■ P4
  4880.  
  4881.     Die Konstante  P4 enthält  den Offset der  Variablen 'MDebugCursor'
  4882.     von MDEBUG. Diese Variable enthält das Attribut  für den Cursor von
  4883.     MDEBUG (Word, Lowbyte = Attribut für den Overwrite-Modus, Highbyte
  4884.     = Attribut für  den Insert-Modus).  Diese  Variable kann  jederzeit
  4885.     geändert werden (z.B. durch 'MOV CS:P4,9ECE').
  4886.  
  4887.     Beachtet werden  sollte, daß MDEBUG  zur Unterscheidung des Insert-
  4888.     und Overwrite-Modus im Interpreter und zur Anzeige, ob der  Monitor
  4889.     blockiert  oder  frei  ist  das  Bit 7 des Cursorfarbattributes um-
  4890.     schaltet.
  4891.  
  4892.  
  4893.     ■ P5
  4894.  
  4895.     Die Konstante  P5 enthält  den Offset der  Variablen 'DontHide' von
  4896.     MDEBUG (Byte).  Falls  der  Inhalt dieser Variablen ungleich 0 ist,
  4897.     wird der Bildschirm vor dem Beenden des aktuellen Popup-Aufrufs von
  4898.     MDEBUG NICHT restauriert.  Die Variable wird bei jeden Popup-Aufruf
  4899.     wieder auf 0 gesetzt.
  4900.  
  4901.  
  4902.     ■ DO
  4903.  
  4904.     Die Konstante DO enthält  den Wert  des DOS-Busyflags  verODERt mit
  4905.     den  Wert  des  Critical-Error-Flags.  Nicht  wiedereintrittsfähige
  4906.     Funktionen  des  DOS-Interrupts 21h  sollten nur ausgeführt werden,
  4907.     falls der Wert der Konstanten DO Null ist.
  4908.  
  4909.  
  4910.     ■ CU
  4911.  
  4912.     Diese Konstante enthält den Offset des Bytes,  auf dem  im  Monitor
  4913.     der Cursor  steht (oder 0,  falls der Interpreter  aus dem Segment-
  4914.     oder  Offset-Feld des Monitors aufgerufen wurde).
  4915.  
  4916.  
  4917.  
  4918.  
  4919.     ────────────────────────────────────────────────────────────────────────────────
  4920.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   74
  4921.  
  4922.  
  4923.  
  4924.     Ausdruck
  4925.     ────────
  4926.  
  4927.     Überall wo die Angabe eines  expliziten  Wertes  erlaubt ist,  kann
  4928.     auch ein Ausdruck angegeben werden.  (ausgenommen beim B- und  beim
  4929.     SH-Befehl)
  4930.     Ein Ausdruck besteht aus mindestens einem Teil-Ausdruck.  Ein Teil-
  4931.     Ausdruck  ist eine arithmetische oder  logische Operation  mit zwei
  4932.     Operanden die  Werte, Register,  Konstante oder Teil-Ausdrücke sein
  4933.     können bzw. ein Operand mit mindestens einer Klammer-Ebene.
  4934.     Explizite  Werte können in  allen vier Schreibweisen  (hexadezimal,
  4935.     dezimal, binär oder  als String)  angegeben werden, negative  Werte
  4936.     können ebenfalls  verwendet  werden.  Es können  alle  Register und
  4937.     Konstanten verwendet werden.  In einem  Teil-Ausdruck  können keine
  4938.     Speicherstellen verwendet werden.
  4939.  
  4940.     Verändert wird nur der erste Operand eines Teil-Ausdrucks.
  4941.  
  4942.     Implementiert sind folgende Operatoren:
  4943.  
  4944.     ┌─────────────────────────────────────────────────────────────────┐
  4945.     │ Arithmetische Operatoren                                        │
  4946.     ├──────┬────────────────┬─────────────────────────────────────────┤
  4947.     │ Op.  │ Funktion       │ Kommentar                               │
  4948.     ╞══════╪════════════════╪═════════════════════════════════════════╡
  4949.     │ +    │ Addition       │ keine Berücksichtigung eines Übertrages │
  4950.     │ -    │ Subtraktion    │ keine Berücksichtigung eines Übertrages │
  4951.     │ /    │ Division       │ nur ganzzahlig                          │
  4952.     │      │                │ Eine Division durch 0 ist nicht möglich.│
  4953.     │ \    │ Modulo         │ ganzzahiger Rest einer Division         │
  4954.     │      │                │ Eine Division durch 0 ist nicht möglich.│
  4955.     │ *    │ Multiplikation │ keine Berücksichtigung eines Übertrages │
  4956.     └──────┴────────────────┴─────────────────────────────────────────┘
  4957.  
  4958.  
  4959.  
  4960.  
  4961.  
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.  
  4968.  
  4969.  
  4970.  
  4971.  
  4972.  
  4973.  
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979.     ────────────────────────────────────────────────────────────────────────────────
  4980.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   75
  4981.  
  4982.  
  4983.  
  4984.     ┌─────────────────────────────────────────────────────────────────┐
  4985.     │ Logische Operatoren                                             │
  4986.     ├──────┬────────────────┬─────────────────────────────────────────┤
  4987.     │ Op.  │ Funktion       │ Kommentar                               │
  4988.     ╞══════╪════════════════╪═════════════════════════════════════════╡
  4989.     │ &    │ AND            │ Verknüpfen der Operanden mit AND        │
  4990.     │ |    │ OR             │ Verknüpfen der Operanden mit OR         │
  4991.     │ !    │ XOR            │ -"- mit einem exklusiven OR             │
  4992.     │ »    │ Shift rechts   │ Verschieben des ersten Operanden um n   │
  4993.     │      │                │ Bits nach rechts (n ist der 2. Operand) │
  4994.     │      │                │ Werte größer als 15 für den zweiten     │
  4995.     │      │                │ Operanden führen immer zum Ergebnis 0   │
  4996.     │ «    │ Shift links    │ Verschieben des ersten Operanden um n   │
  4997.     │      │                │ Bits nach links (n ist der 2. Operand)  │
  4998.     │      │                │ Werte größer als 15 für den zweiten     │
  4999.     │      │                │ Operanden führen immer zum Ergebnis 0   │
  5000.     │ %    │ Ermittelt den  │ Die  Bits des Operanden sind dabei von  │
  5001.     │      │ Wert eines     │ rechts nach links mit 0 bis  15 durch-  │
  5002.     │      │ bestimmten     │ nummeriert. Werte  größer  als 15  für  │
  5003.     │      │ Bits des ersten│ den zweiten Operanden führen immer zum  │
  5004.     │      │ Operanden      │ Ergebnis 0                              │
  5005.     └──────┴────────────────┴─────────────────────────────────────────┘
  5006.  
  5007.  
  5008.     ┌─────────────────────────────────────────────────────────────────┐
  5009.     │ Vergleichsoperatoren (ohne Berücksichtigung eines Vorzeichens)  │
  5010.     ├──────┬──────────────────────────────────────────────────────────┤
  5011.     │ Op.  │ Funktion                                                 │
  5012.     ╞══════╪══════════════════════════════════════════════════════════╡
  5013.     │ <    │ Falls der erste Operand kleiner als der zweite Operand   │
  5014.     │      │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0    │
  5015.     ├──────┼──────────────────────────────────────────────────────────┤
  5016.     │ >    │ Falls der erste Operand größer als der zweite Operand    │
  5017.     │      │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0    │
  5018.     ├──────┼──────────────────────────────────────────────────────────┤
  5019.     │ =    │ Falls der erste Operand gleich dem zweiten Operanden     │
  5020.     │      │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0    │
  5021.     ├──────┼──────────────────────────────────────────────────────────┤
  5022.     │ ¬    │ Falls der erste Operand ungleich dem zweiten Operanden   │
  5023.     │      │ ist, ist das Ergebnis 1, ansonsten ist das Ergebnis 0    │
  5024.     │      │ Das Zeichen '¬' liegt im Interpreter auf der Taste <_>   │
  5025.     └──────┴──────────────────────────────────────────────────────────┘
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.     ────────────────────────────────────────────────────────────────────────────────
  5040.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   76
  5041.  
  5042.  
  5043.  
  5044.     Ein  Operationszeichen  muß  immer  zwischen  den Operanden stehen.
  5045.     Falls der erste Operand fehlt, wird als  erster Operand 0 genommen,
  5046.     der zweite Operand muß auf jeden Fall angegeben sein.
  5047.     Wird  zwischen  zwei Teil-Ausdrücken  kein Operations-Zeichen ange-
  5048.     geben, werden  die Werte  der  Teil-Ausdrücke  addiert. Jeder Teil-
  5049.     Ausdruck   wird  von  links  nach  rechts ohne Berücksichtigung von
  5050.     Operator-Präferenzen   (z.B.  'Punkt vor Strich')  berechnet.  Eine
  5051.     Klammerung  zur  Änderung  der Berechnungs-Reihenfolge ist möglich.
  5052.     Maximal sind 5 Klammer-Ebenen erlaubt.
  5053.  
  5054.     Beispiele für Teil-Ausdrücke:
  5055.     sei AX = 0102h, BX = 0304h und CX = FFF8h
  5056.  
  5057.     ┌────────────────────────┬────────┬──────────────────────────────┐
  5058.     │ Teil-Ausdruck          │ Wert   │ Kommentar                    │
  5059.     ╞════════════════════════╪════════╪══════════════════════════════╡
  5060.     │  3+4                   │     7h │                              │
  5061.     │  3+2*2                 │    0Ah │ kein 'Punkt vor Strich'      │
  5062.     │  3+(2*2)               │     7h │ Klammer-Ebene berücksichtigt │
  5063.     │  #35\(4*(2+2))         │     3h │ Klammer-Ebenen -"-           │
  5064.     │  ()                    │     0h │ leere Klammer-Ebene          │
  5065.     │  (())                  │     0h │ leere Klammer-Ebenen         │
  5066.     │  (4)                   │     4h │ voreingestellt ist 0 als  1. │
  5067.     │                        │        │ Operand und die Addition als │
  5068.     │                        │        │ Operation                    │
  5069.     │  4--5                  │     9h │ das  zweite  Minus  ist  ein │
  5070.     │                        │        │ Vorzeichen                   │
  5071.     │  AL*(-BL)              │  FFF8h │ -8   dez.                    │
  5072.     │  AL*-04                │  FFF8h │ Minus ist Vorzeichen         │
  5073.     │  AL*AX                 │   204h │ +516 dez.                    │
  5074.     │  (4)(5)                │     9h │ Addition ist  Voreinstellung │
  5075.     │  (ALBL)                │     6h │ Addition ist  Voreinstellung │
  5076.     │  (AL BL)               │     6h │ Addition ist  Voreinstellung │
  5077.     │  (AX203)               │  0305h │ Addition ist  Voreinstellung │
  5078.     │  (AL234)               │   236h │ Addition ist  Voreinstellung │
  5079.     │  (234AL)               │  Fehler│ Das  'A'  wird  als  weitere │
  5080.     │                        │        │ Hex-Ziffer interpretiert.    │
  5081.     │  (1234SI)              │  Fehler│ Das  'S'  wird  als  weitere │
  5082.     │                        │        │ Hex-Ziffer interpretiert.    │
  5083.     │  $1+#1234+0A+'A'-41    │  04DDh │ 1245 dez, die  Zahlenformate │
  5084.     │                        │        │ können gemischt werden       │
  5085.     │  CS-1                  │        │ Segment des  MCBs von MDEBUG │
  5086.     │  -AX-1                 │  FEFDh │ Einerkomplement von AX       │
  5087.     │  (AX ! 0FFFF)          │  FEFDh │ Einerkomplement von AX       │
  5088.     │  (AX+F)/10             │    11h │ Umrechnung  eines Wertes auf │
  5089.     │                        │        │ nächste Paragraphen-Grenze   │
  5090.     └────────────────────────┴────────┴──────────────────────────────┘
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096.  
  5097.  
  5098.  
  5099.     ────────────────────────────────────────────────────────────────────────────────
  5100.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   77
  5101.  
  5102.  
  5103.  
  5104.     ┌────────────────────────┬────────┬──────────────────────────────┐
  5105.     │ Teil-Ausdruck          │ Wert   │ Kommentar                    │
  5106.     ╞════════════════════════╪════════╪══════════════════════════════╡
  5107.     │  BX*AX                 │  0A08h │ Übertrag  wird nicht berück- │
  5108.     │                        │        │ sichtigt.                    │
  5109.     │  AX/(AX-0102)          │  Fehler│ durch  0 kann  nicht geteilt │
  5110.     │                        │        │ werden                       │
  5111.     │  ((BL % 7)*-1 « 8)|BL  │     4h │ liefert den vorzeichengerecht│
  5112.     │  oder                  │        │ auf Wortgröße erweiterten    │
  5113.     │  -(BL % 7)«8|BL        │        │ Wert von BL                  │
  5114.     │  ( (BL » 3) & 1)       │     0h │ Ergebnis: 3. Bit von BL      │
  5115.     │  (BL % 2)              │     1h │ 2. Bit von BL                │
  5116.     │  AX-(AX / 4 * 4)       │     2h │ Simulation des MOD-Operators │
  5117.     │  -2*(CX » 0F)*CX+CX    │     8h │ liefert immer d. Absolutwert │
  5118.     │                        │        │ d. benutzten Registers (hier │
  5119.     │                        │        │ CX),  da  der  Teil-Ausdruck │
  5120.     │                        │        │ -2*(CX » 0F)*CX für negative │
  5121.     │                        │        │ Werte 0 wird                 │
  5122.     │  ¬AX                   │     1h │ als erster Operand wird hier │
  5123.     │                        │        │ implizit 0 angenommen        │
  5124.     │  ¬(CX+8)               │     0h │ als erster Operand wird hier │
  5125.     │                        │        │ implizit 0 angenommen        │
  5126.     │  /AX                   │     0h │ als erster Operand wird hier │
  5127.     │                        │        │ implizit 0 angenommen        │
  5128.     └────────────────────────┴────────┴──────────────────────────────┘
  5129.  
  5130.     Die Berechnung eines Ausdruckes erfolgt immer  im Wort-Format; d.h.
  5131.     alle  Operanden  werden  vor  jeder  Berechnung  in das Wort-Format
  5132.     konvertiert.  Eine  eventuelle  Konvertierung  des  Ergebnisses ins
  5133.     Byte-Format erfolgt  erst nach  der vollständigen  Berechnung eines
  5134.     Ausdrucks.  Die Berechnung  eines Ausdrucks  geschieht  vollständig
  5135.     intern, d.h. es werden hierbei keine Register  oder Speicherstellen
  5136.     verändert.
  5137.  
  5138.  
  5139.  
  5140.  
  5141.  
  5142.  
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.  
  5154.  
  5155.  
  5156.  
  5157.  
  5158.  
  5159.     ────────────────────────────────────────────────────────────────────────────────
  5160.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   78
  5161.  
  5162.  
  5163.  
  5164.     Byte-Operanden werden vor der Berechnung in Wortwerte umgewandelt.
  5165.  
  5166.     Beispiel:
  5167.  
  5168.          sei BX = 00FFh und AX = 0001h und CX = 0103h
  5169.  
  5170.     dann wird (intern) aus
  5171.  
  5172.          -BL -> FF01     ; der Wert 00FFh wird negiert
  5173.           BL -> 00FF     ; keine Übernahme des 7. Bits ins High-Byte
  5174.          -AL -> FFFF     ; Negiert wird intern der Wert als Wort
  5175.          -CL -> FFFD     ; der Wert 03h (als Wort) wird negiert
  5176.           CL -> 0003
  5177.  
  5178.     Die Anzahl der Teil-Ausdrücke eines  Ausdrucks ist nicht  begrenzt.
  5179.     Die einzelnen Komponenten eines  Teil-Ausdrucks  können durch Leer-
  5180.     zeichen  getrennt  sein  falls  aus dem  Teil vor  dem  Leerzeichen
  5181.     erkennbar ist, daß der Teil-Ausdruck noch nicht beendet ist.
  5182.  
  5183.     Beispiele:
  5184.  
  5185.          MOV AX,BX + 4
  5186.  
  5187.          Leerzeichen erlaubt, ABER: Da der Teil vor dem Leerzeichen ein
  5188.          korrekter Operand  ist und mit einem  Leerzeichen  abschließt,
  5189.          wird der Teil  ' + 4' als  Kommentar erkannt und nicht berück-
  5190.          sichtigt!
  5191.  
  5192.          MOV AX,(BX + 4)
  5193.  
  5194.          Korrekt, da eine Klammer noch nicht geschlossen
  5195.  
  5196.          MOV AX,BX+  5
  5197.  
  5198.          Korrekt, da ein Operand noch nicht bearbeitet ist
  5199.  
  5200.          MOV AX,[BX + 5]
  5201.  
  5202.          Leerzeichen erlaubt, ABER: Da der Teil vor dem Leerzeichen ein
  5203.          korrekter Operand ist,  mit  einem Leerzeichen abschließt  und
  5204.          das Zeichen '[' nicht klammert, wird der Teil ' + 5]' als Kom-
  5205.          mentar erkannt und nicht berücksichtigt!
  5206.  
  5207.  
  5208.  
  5209.  
  5210.  
  5211.  
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219.     ────────────────────────────────────────────────────────────────────────────────
  5220.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   79
  5221.  
  5222.  
  5223.  
  5224.          MOV AX,[BX+4 +3]
  5225.  
  5226.          Korrekt,  aber der Teil '+3]' wird als Kommentar  gewertet und
  5227.          nicht berücksichtigt!
  5228.  
  5229.          MOV AX,[(BX +4 +3)]
  5230.  
  5231.          Korrekt, da eine Klammer noch nicht geschlossen ist.
  5232.  
  5233.     Hinweis:
  5234.  
  5235.     Falls  Leerzeichen  zur Erhöhung der Lesbarkeit eines Ausdrucks be-
  5236.     nutzt werden sollen, sollte der gesamte Ausdruck geklammert werden.
  5237.  
  5238.     Falls als erster zu verändernder Operand eines Befehls ein Ausdruck
  5239.     angegeben wird, wird das Pseudo-Register benutzt.
  5240.  
  5241.     Besonderheiten:
  5242.  
  5243.          MOV AX,*4
  5244.  
  5245.          Das  Zeichen '*' wird  als Kennzeichen  für ein  Speicher-Byte
  5246.          betrachtet, ausgeführt wird also:
  5247.  
  5248.               MOV AX,MonitorSeg:*[0004]
  5249.  
  5250.  
  5251.          MOV AX,**4
  5252.  
  5253.          Der Befehl wird ausgeführt als:
  5254.  
  5255.               MOV AX,MonitorSeg:*[(0*4)]
  5256.  
  5257.  
  5258.          MOV +AX,5
  5259.  
  5260.          Der Befehl wird ausgeführt als:
  5261.  
  5262.               MOV 0+AX,5
  5263.  
  5264.          d.h. es wird das Pseudo-Register und nicht AX verändert!
  5265.  
  5266.  
  5267.  
  5268.  
  5269.  
  5270.  
  5271.  
  5272.  
  5273.  
  5274.  
  5275.  
  5276.  
  5277.  
  5278.  
  5279.     ────────────────────────────────────────────────────────────────────────────────
  5280.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   80
  5281.  
  5282.  
  5283.  
  5284.     Adressierung von Speicherstellen
  5285.     ────────────────────────────────
  5286.  
  5287.     Wird  ein  Register-Bezeichner,  ein expliziter  Wert oder ein Aus-
  5288.     druck in eckigen Klammern ('[]') gesetzt, so  wird das Wort mit der
  5289.     aktuellen  Segment-Adresse des oberen  Monitor-Windows  als Segment
  5290.     und dem  Inhalt  des  Registers bzw.  den  expliziten Wert oder dem
  5291.     Wert des Ausdrucks als Offset gelesen  bzw. geändert. (INTEL-Format
  5292.     die schließende eckige Klammer ist optional)
  5293.  
  5294.     Wird dem Register-Bezeichner  bzw.  Wert oder Ausdruck ein '*' vor-
  5295.     angestellt, so ist das Byte, auf  das die aktuelle  Segment-Adresse
  5296.     des oberen Monitor-Windows  und der  Inhalt des  Registers bzw. der
  5297.     explizite  Wert  oder  der Wert  des  Ausdrucks  als Offset  zeigt,
  5298.     gemeint. ('*[' hat die gleiche Wirkung)
  5299.  
  5300.     Die  Einstellung  des Segment-Registers des  oberen Monitor-Windows
  5301.     als Segment-Register kann  durch ein  Segment-Prefix  überschrieben
  5302.     werden. Als Segment-Prefix  ist ein  Register,  ein expliziter Wert
  5303.     oder  ein Ausdruck erlaubt.  Das Segment-Prefix  muß  mit einem ':'
  5304.     abgeschlossen werden. Falls  ein Segment-Prefix angegeben ist, kann
  5305.     bei Wortgrößen die Angabe der eckigen Klammern '[]' entfallen.
  5306.  
  5307.  
  5308.  
  5309.     Syntax der Befehle
  5310.     ──────────────────
  5311.  
  5312.     Für die  Bedeutung  der Befehle ist nur das erste  Zeichen signifi-
  5313.     kant. Die Befehle können also in der  kurzen  oder  in einer langen
  5314.     Schreibweise angegeben werden.
  5315.  
  5316.     Ausnahme:
  5317.  
  5318.     Bei allen Befehlen, die mit dem gleichen Zeichen beginnen, ist auch
  5319.     das letzte Zeichen signifikant.
  5320.  
  5321.     Die  Register-Namen und  Konstanten müssen  in Großbuchstaben  ein-
  5322.     gegeben werden; die signifikanten Buchstaben  der Befehle müssen in
  5323.     der angegebenen Schreibweise eingegeben werden
  5324.  
  5325.     Die Original-Belegungen der  umbelegten Tasten  können nur nach dem
  5326.     Prefix-Zeichen <CTRL-P> eingegeben werden. Kleinbuchstaben  können,
  5327.     falls der Schalter UpcaseMode auf U steht,  ebenfalls  nur nach dem
  5328.     Prefixzeichen <CTRL-P> eingegeben werden.
  5329.  
  5330.  
  5331.  
  5332.  
  5333.  
  5334.  
  5335.  
  5336.  
  5337.  
  5338.  
  5339.     ────────────────────────────────────────────────────────────────────────────────
  5340.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   81
  5341.  
  5342.  
  5343.  
  5344.     Zwischen  dem  Befehl  und dem (ersten) Operand muß  mindestens ein
  5345.     Leerzeichen  stehen; zwischen den  Operanden  sollten Kommata  oder
  5346.     Leerzeichen  stehen. Der erste und der zweite Operand eines Befehls
  5347.     können identisch sein.
  5348.  
  5349.     Pro Eingabe sind mehrere (Interpreter)Befehle möglich. Diese müssen
  5350.     durch das Verkettungs-Zeichen '^' getrennt sein.
  5351.  
  5352.     Führende  Blanks eines Befehls werden überlesen. Ein Befehl  ist zu
  5353.     Ende, falls alle nötigen Operanden ermittelt sind, ein Verkettungs-
  5354.     Zeichen  auftritt (= Anfang eines  neuen Befehls) oder das Ende der
  5355.     Eingabezeile erreicht wird.
  5356.  
  5357.     Die Anzahl der Befehle pro Eingabe ist nur durch die max. Länge der
  5358.     Eingabezeile (66 Zeichen) begrenzt. Die  Ausführung  einer Befehls-
  5359.     zeile endet bei Auftritt  eines Fehlers, falls  ein Kommentaranfang
  5360.     gefunden wird oder falls alle Befehle der Zeile bearbeitet sind.
  5361.  
  5362.     Falls kein  Fehler auftritt, wird der Eingabepuffer  gelöscht.  An-
  5363.     sonsten ertönt  ein  Fehlersignal  und die Befehlszeile bleibt  zum
  5364.     Editieren im  Eingabepuffer. Der  Cursor steht  dann auf der Stelle
  5365.     im Eingabepuffer  an der der  Fehler  bemerkt wurde. Auf dem oberen
  5366.     Rand  des Interpreter-Fensters  wird eine  Fehlermeldung angezeigt.
  5367.     Diese muß mit einer Taste quittiert werden.
  5368.  
  5369.     Die Anzeige der Registerwerte  und der  Inhalt  des Monitors werden
  5370.     erst  nach dem  Ende  der  Bearbeitung  einer Befehlszeile  auf den
  5371.     neuesten Stand gebracht (Ausnahme: W- u. H-Befehl).
  5372.  
  5373.     Bei verketteten  Befehlen muß  beachtet  werden,  daß  alle Befehle
  5374.     von MDEBUG EINZELN sequentiell ausgeführt,  d.h. interpretiert wer-
  5375.     den,  wobei  nach JEDEM  Befehl intern die Registerwerte  angepasst
  5376.     werden!
  5377.  
  5378.     Eine Befehlszeile ist zu Ende, falls  der Eingabepuffer vollständig
  5379.     bearbeitet  wurde oder hinter einem  Befehl kein Verkettungszeichen
  5380.     steht;  d.h.  hinter dem  letzten  Befehl  stehende  Zeichen werden
  5381.     ignoriert.  (= Kommentar-Simulation)  Verkettungszeichen in Kommen-
  5382.     taren werden ignoriert.
  5383.  
  5384.  
  5385.  
  5386.  
  5387.  
  5388.  
  5389.  
  5390.  
  5391.  
  5392.  
  5393.  
  5394.  
  5395.  
  5396.  
  5397.  
  5398.  
  5399.     ────────────────────────────────────────────────────────────────────────────────
  5400.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   82
  5401.  
  5402.  
  5403.  
  5404.     Die Kommentar-Simulation kann z.B. zum Vertauschen der Werte zweier
  5405.     Register genutzt werden:
  5406.  
  5407.          sei AX = 1024 und BX = 3408
  5408.  
  5409.     Sollen die Werte der Register vertauscht werden,  wird der Wert des
  5410.     überschriebenen Registers hinter dem ersten MOV-Befehl vermerkt.
  5411.     Also
  5412.  
  5413.          MOV AX,BX   1024                    MOV AX,BX   MOV BX,1024
  5414.          ─────────   ────         oder:      ─────────   ───────────
  5415.          Befehl      Kommentar!              Befehl      Kommentar!
  5416.  
  5417.     Zur richtigen  Belegung  von BX muß nun nur mittels  <SHIFT-RETURN>
  5418.     die Eingabe wieder zum Editieren freigegeben und korrigiert werden.
  5419.  
  5420.     Der Tausch ist natürlich auch über die Befehls-Verkettung möglich:
  5421.  
  5422.     Beispiel:
  5423.  
  5424.          Vertauschen der Inhalte  der Register AX und BX unter Zuhilfe-
  5425.          name des Registers R7.
  5426.  
  5427.          Eingabe:
  5428.  
  5429.          MOV R7,AX ^ MOV AX,BX ^ MOV BX,R7  AX <-> BX
  5430.          ─────────   ─────────   ─────────  ─────────
  5431.          Befehl1     Befehl2     Befehl3    Kommentar!
  5432.  
  5433.          oder
  5434.          Vertauschen der Register CX und DX ohne Hilfsregister:
  5435.  
  5436.          ! CX,DX ^ ! DX,CX ^ ! CX,DX        CX <-> DX
  5437.          ───────   ───────   ───────        ─────────
  5438.          Befehl1   Befehl2   Befehl3        Kommentar!
  5439.  
  5440.  
  5441.  
  5442.  
  5443.  
  5444.  
  5445.  
  5446.  
  5447.  
  5448.  
  5449.  
  5450.  
  5451.  
  5452.  
  5453.  
  5454.  
  5455.  
  5456.  
  5457.  
  5458.  
  5459.     ────────────────────────────────────────────────────────────────────────────────
  5460.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   83
  5461.  
  5462.  
  5463.  
  5464.     Syntax der Operanden
  5465.     ────────────────────
  5466.  
  5467.     Führende Nullen  sind nur bei den Operanden des  B-  und SH-Befehls
  5468.     erforderlich,  bei allen anderen Werten sind sie möglich aber nicht
  5469.     nötig.
  5470.  
  5471.     Es wird von  einer  Byte-Operation  ausgegangen,  falls  mindestens
  5472.     einer der Operanden ein Bytewert ist.
  5473.  
  5474.     Beispiel:
  5475.  
  5476.          MOV AL,[BX] -> AL wird geändert
  5477.  
  5478.          MOV AX,CL   -> AL = CL und AH bleibt unverändert
  5479.  
  5480.          aber
  5481.  
  5482.          MOV BX,[CL] -> BX wird verändert, '[CL]' bezeichnet
  5483.                         ein Speicherwort
  5484.  
  5485.     Ein  explizit  angegebener  Wert wird  in das  Format  des  anderen
  5486.     Operanden (Byte oder Wort) konvertiert. Ist kein  eindeutiges Kenn-
  5487.     zeichen  für das  Format vorhanden,  wird eine  Wort-Operation aus-
  5488.     geführt.
  5489.  
  5490.  
  5491.     Sonstiges
  5492.     ─────────
  5493.  
  5494.     ■ FÜr  B-, C- und I-Befehle  werden keinerlei  Überprüfungen vorge-
  5495.       nommen. Vor dem G-Befehl wird nur überprüft, ob der auszuführende
  5496.       Code vollständig im im oberen Monitor-Window  angezeigten Segment
  5497.       liegt und ob das Ende des auszuführenden Codes im RAM liegt.
  5498.  
  5499.       Vor den B-, G-, C- und  I-Befehl wird  der Stack  zurück  auf den
  5500.       Stack  des  unterbrochenen  Prozesses  gesetzt  und  die Register
  5501.       werden mit den angezeigten Werten  geladen.  Nach der  Ausführung
  5502.       des  Befehls  werden  alle  Registerwerte gespeichert,  der Stack
  5503.       wieder umgesetzt und die neuen Register-Werte angezeigt. D.h. B-,
  5504.       G-, C-  und I-Befehle  werden so  ausgeführt, als wenn sie an der
  5505.       Stelle im  unterbrochenen Prozess die nach der Unterbrechung aus-
  5506.       geführt würden.
  5507.       Nur der Wert des Registers CS ist anders (und  natürlich der Wert
  5508.       des Instruction-Pointers), dies kann aber  beim G-Befehl umgangen
  5509.       werden indem der  Code in  einen unbenutzten  Speicherbereich des
  5510.       Code-Segmentes des unterbrochenen Prozesses gelegt wird.
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.  
  5517.  
  5518.  
  5519.     ────────────────────────────────────────────────────────────────────────────────
  5520.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   84
  5521.  
  5522.  
  5523.  
  5524.     ■ Die Werte der Hilfs- und der Sonder-Register werden zwischen ver-
  5525.       schiedenen  Aufrufen  nicht  verändert;  die   Prozessor-Register
  5526.       werden bei jedem Aufruf neu geladen.
  5527.  
  5528.     ■ Die Register SP und SS zeigen  auf den  Stack des  unterbrochenen
  5529.       Prozesses. Die Return-Adresse  und der  Wert des  Flag-Registers,
  5530.       die  durch den INT-Aufruf auf den Stack  gebracht  wurden, werden
  5531.       vom Stack  des unterbrochenen  Prozesses  entfernt.  Diese werden
  5532.       von MDEBUG gespeichert und vor dem  Beenden  wieder auf den Stack
  5533.       gebracht.
  5534.  
  5535.     ■ Die  Adresse  des  DIB und die Adresse des  Busy-Flags werden nur
  5536.       einmal beim  Start  von MDEBUG im Initialisierungsteil ermittelt.
  5537.       Die aktuellen  Adressen im DIB  werden  bei jeder Neu-Anzeige des
  5538.       Interpreter-Fensters neu ermittelt.
  5539.  
  5540.  
  5541.  
  5542.  
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  
  5549.  
  5550.  
  5551.  
  5552.  
  5553.  
  5554.  
  5555.  
  5556.  
  5557.  
  5558.  
  5559.  
  5560.  
  5561.  
  5562.  
  5563.  
  5564.  
  5565.  
  5566.  
  5567.  
  5568.  
  5569.  
  5570.  
  5571.  
  5572.  
  5573.  
  5574.  
  5575.  
  5576.  
  5577.  
  5578.  
  5579.     ────────────────────────────────────────────────────────────────────────────────
  5580.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   85
  5581.  
  5582.  
  5583.  
  5584.     Aufruf von MDEBUG im Graphikmodus
  5585.     ──────────────────────────────────
  5586.  
  5587.     MDEBUG  kann auch im Graphik-Modus aufgerufen werden, falls für die
  5588.     installierte  Graphikkarte  ein Bildschirmtreiber geladen wurde.
  5589.     (z.B. der Treiber 'MDHGCDRV.COM' für die Herkules-Karte)
  5590.  
  5591.     Dieser Treiber kann als 'normales'  Programm  (.COM bzw. .EXE) oder
  5592.     als Treiber (.SYS) realisiert sein.
  5593.     Für die Beispieltreiber auf dieser  Diskette  wurde das .COM-Format
  5594.     genommen,  da solch ein  Treiber nur  geladen werden  muß, falls er
  5595.     gebraucht wird  und  nach  dem  Gebrauch  wieder aus  dem  Speicher
  5596.     entfernt werden kann.
  5597.  
  5598.     MDEBUG kommuniziert mit dem Treiber  über  den  Multiplex-Interrupt
  5599.     2Fh. Dies hat den  Vorteil,  daß  MDEBUG  nicht überprüfen  muß, ob
  5600.     ein Treiber installiert ist oder nicht, da  der Interrupt 2Fh immer
  5601.     auf eine Routine  zeigt (und niemals ins 'Nirwana').  Zudem erlaubt
  5602.     es, daß ein Treiber vor oder nach MDEBUG geladen werden kann.
  5603.  
  5604.     Beachtet  werden muß aber,  daß  eine falsche Prozessnummer für die
  5605.     Kommunikation über den Interrupt 2Fh das System zum Absturz bringen
  5606.     kann! (siehe 'Vorbereitungen vor dem Start')
  5607.  
  5608.     MDEBUG verwendet zur  Kommunikation  über den  Interrupt 2Fh in der
  5609.     Voreinstellung die Prozessnummer D0h.  Diese  kann  allerdings über
  5610.     den Parameter 'PRO' angepasst werden.
  5611.  
  5612.     Hierbei ist aber zu  beachten,  daß  die  angegebene  Prozessnummer
  5613.     (und  die  folgende  Prozessnummer, s.u.)  entweder  einem  Treiber
  5614.     für MDEBUG zugeordnet oder unbelegt ist!
  5615.  
  5616.     Zur  Überprüfung, ob eine  Prozessnummer schon belegt ist, kann das
  5617.     Util SHOW2FP.COM benutzt werden.
  5618.     (siehe Vorbereitungen vor dem Start)
  5619.  
  5620.     Der Treiber  ist also für die Sicherung und Restaurierung der Bild-
  5621.     schirmdaten  in  den Bildschirm-Modi, die MDEBUG nicht unterstützt,
  5622.     verantwortlich.  Dazu  muß  er  mehrere  Funktionen  zur  Verfügung
  5623.     stellen.
  5624.  
  5625.  
  5626.  
  5627.  
  5628.  
  5629.  
  5630.  
  5631.  
  5632.  
  5633.  
  5634.  
  5635.  
  5636.  
  5637.  
  5638.  
  5639.     ────────────────────────────────────────────────────────────────────────────────
  5640.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   86
  5641.  
  5642.  
  5643.  
  5644.     Für alle Funktionen des Treibers gilt:
  5645.  
  5646.     MDEBUG ruft alle  Funktionen  mit der  Prozessnummer im Register AH
  5647.     und der  Funktionsnummer  im  Register  AL  auf. Der  Treiber  darf
  5648.     nur aktiv werden, falls seine  Prozessnummer  angegeben  ist.  Alle
  5649.     anderen Aufrufe des Interrupt 2Fh  muß  er ohne Änderung der Regis-
  5650.     ter an den  nächsten  Prozess in  der Kette  für  den Interrupt 2Fh
  5651.     weiterleiten!
  5652.  
  5653.     Der  Treiber darf Register, die  nicht zur Rückgabe von Ergebnissen
  5654.     benötigt werden, in keinem Fall verändern!
  5655.  
  5656.     Für alle Funktionen, außer der Funktion 0, des Treibers gilt:
  5657.  
  5658.     Im Fehlerfall  muß der  Treiber  mit  gesetzten Carry-Flag  und dem
  5659.     Fehlercode im Register AX enden.
  5660.  
  5661.     Bekannte Fehlercodes sind im Moment:
  5662.  
  5663.          0FFFFh - Unerlaubter Aufruf einer Funktion
  5664.  
  5665.     MDEBUG wertet im Moment Fehler  des Treibers nur teilweise aus.
  5666.     (siehe Beschreibungen der einzelnen Funktionen)
  5667.  
  5668.     War der Treiber erfolgreich,  muß er das Carry-Flag löschen und das
  5669.     Register AX mit 0 belegen. Enthält das  Register AX bei  gelöschtem
  5670.     Carry-Flag  einen Wert  ungleich 0,  so wird  dies als  Warnung des
  5671.     Treibers interpretiert.
  5672.     Diese Möglichkeit ist  im Moment  allerdings noch  reserviert, d.h.
  5673.     MDEBUG  ignoriert  den  Inhalt  des  Registers  AX  bei  gelöschtem
  5674.     Carry-Flag.
  5675.  
  5676.     Alle  Funktionen  müssen entweder reentrant  geschrieben  sein oder
  5677.     den  Fehler-Code 0FFFFh  bei Mehrfachaufrufen zurückgeben.
  5678.     MDEBUG  geht  davon  aus,  daß  immer  nur  ein   Bildschirmtreiber
  5679.     geladen ist.
  5680.  
  5681.  
  5682.     Funktionen der Bildschirmtreiber
  5683.     ────────────────────────────────
  5684.  
  5685.  
  5686.     MDEBUG  erwartet,  daß  ein  Bildschirmtreiber  folgende Funktionen
  5687.     unterstützt (siehe auch Quelltexte zu den Treibern):
  5688.  
  5689.  
  5690.  
  5691.  
  5692.  
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698.  
  5699.     ────────────────────────────────────────────────────────────────────────────────
  5700.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   87
  5701.  
  5702.  
  5703.  
  5704.     Funktion 0  - Get Driver Status
  5705.     ───────────────────────────────────────────────────────────────────
  5706.  
  5707.       Funktion: Ermitteln des Treiber-Status
  5708.  
  5709.       Eingabe:  AH = 0
  5710.  
  5711.       Ausgabe:  CF = 0
  5712.                 AL = 0FFh
  5713.                 AH = Treiber-Semaphor
  5714.                 AH =  0 ->> Treiber ist nicht aktiv
  5715.                 AH <> 0 ->> Treiber ist gerade aktiv oder wurde bei
  5716.                             einer Bearbeitung abgebrochen
  5717.                 BX = Code-Segment des Treibers
  5718.                 CX = Version von MDEBUG für die der Treiber
  5719.                      geschrieben wurde.
  5720.                      (CH = Hauptversion, CL = Unterversion)
  5721.  
  5722.                 DL = Puffer-Semaphor
  5723.                      DL <> 0 ->> Puffer ist belegt, d.h. Funktion 2
  5724.                                  wurde aufgerufen aber Funktion 3 noch
  5725.                                  nicht
  5726.                      DL  = 0 ->> Puffer ist nicht belegt
  5727.  
  5728.                 DH = Show-Semaphor
  5729.                      DH <> 0 ->> Funktion 4 wurde aufgerufen aber
  5730.                                  Funktion 5 noch nicht
  5731.                      DH  = 0 ->> Aufrufe der Funktionen 4 und 5 waren okay
  5732.  
  5733.  
  5734.       Bemerkungen: 
  5735.  
  5736.       Diese  Funktion  MUSS reentrant geschrieben sein, d.h. wiederein-
  5737.       trittsfähig!
  5738.  
  5739.       Wird eine ältere Versionsnummer als 1.60 zurückgegeben, so unter-
  5740.       drückt MDEBUG alle Aufrufe  des  Bildschirmtreibers und gibt beim
  5741.       nächsten Aufruf des Interpreters eine Fehlermeldung aus.
  5742.  
  5743.       Diese  Funktion wird  bei jedem  Neuaufruf von MDEBUG aufgerufen.
  5744.       Der  Puffer-Semaphor und der  Show-Semaphor  sind  nur bei  nicht
  5745.       wiedereintrittsfähigen  Treibern  von Bedeutung.  Falls die Funk-
  5746.       tionen des  Treibers  reentrant  sind, sollte  hierfür immer Null
  5747.       zurückgegeben werden.
  5748.  
  5749.  
  5750.  
  5751.  
  5752.  
  5753.  
  5754.  
  5755.  
  5756.  
  5757.  
  5758.  
  5759.     ────────────────────────────────────────────────────────────────────────────────
  5760.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   88
  5761.  
  5762.  
  5763.  
  5764.     Funktion 1  - Init Driver
  5765.     ───────────────────────────────────────────────────────────────────
  5766.  
  5767.       Funktion: Treiber-Reset
  5768.  
  5769.       Eingabe:  AH = 1
  5770.  
  5771.       Ausgabe:  CF = 0 ->> Treiber wurde initialisiert
  5772.                            AL = Treiber-Semaphor
  5773.                            AH = Puffer-Semaphor
  5774.                 CF = 1 ->> Treiber konnte nicht initialisiert werden
  5775.  
  5776.       Bemerkungen: 
  5777.  
  5778.       Die  Funktion 1 wird  von MDEBUG  direkt nach der Funktion 0 auf-
  5779.       gerufen. Da es auch  vorkommen  kann,  daß  ein Aufruf von MDEBUG
  5780.       zwischen einem  Aufruf der  Funktionen  2 und 3 bzw. 4 und 5  des
  5781.       Treibers beendet wird, sollte  diese Funktion  alle Treiber-Daten
  5782.       für ungültig erklären und alle Semaphore zurücksetzen.
  5783.       Falls  die Funktion 1 einen Fehler meldet, unterdrückt MDEBUG bis
  5784.       zum Beenden des Aufrufes von  MDEBUG alle Aufrufe des Bildschirm-
  5785.       treibers.
  5786.  
  5787.  
  5788.     Funktion 2  - Save Graphik data
  5789.     ───────────────────────────────────────────────────────────────────
  5790.  
  5791.       Funktion: Sichern der Bildschirmdaten
  5792.  
  5793.       Eingabe:  AH = 2
  5794.  
  5795.       Ausgabe:  CF = 0 ->> Daten konnten gesichert werden oder Treiber
  5796.                            ist für den aktuellen Modus nicht zuständig.
  5797.                 CF = 1 ->> Daten konnten nicht gesichert werden
  5798.  
  5799.       Bemerkungen: 
  5800.  
  5801.       Diese Funktion wird von MDEBUG  vor der Passwort-Eingabe bzw. vor
  5802.       der  Anzeige der Fenster  von MDEBUG  aufrufen. Sie sollte, falls
  5803.       sie  für den aktuellen Modus zuständig ist,  die Daten  des  akt-
  5804.       uellen Bildschirm-Modus und den Bildschirminhalt sichern  und den
  5805.       Bildschirm in einen durch MDEBUG benutzbaren Text-Modus bringen.
  5806.       Ein Fehler wird von MDEBUG noch nicht ausgewertet.
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.  
  5816.  
  5817.  
  5818.  
  5819.     ────────────────────────────────────────────────────────────────────────────────
  5820.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   89
  5821.  
  5822.  
  5823.  
  5824.     Funktion 3  - Restore Graphik data
  5825.     ───────────────────────────────────────────────────────────────────
  5826.  
  5827.       Funktion: Restaurieren der Bildschirmdaten
  5828.  
  5829.       Eingabe:  AH = 3
  5830.  
  5831.       Ausgabe:  CF = 0 ->> Daten konnten restauriert werden oder Treiber
  5832.                            ist für den akt. Modus nicht zuständig.
  5833.  
  5834.                 CF = 1 ->> Daten konnten nicht restauriert werden
  5835.  
  5836.       Bemerkungen: 
  5837.  
  5838.       Diese  Funktion wird  von MDEBUG vor dem  endgültigen Beenden des
  5839.       Aufrufes aufgerufen.  Sie sollte, falls  die Funktion 2 den Bild-
  5840.       schirmstatus gesichert hat, diesen wiederherstellen. Die Funktion
  5841.       3 ist also das Gegenstück zur Funktion 2.
  5842.       Ein Fehler wird von MDEBUG noch nicht ausgewertet.
  5843.  
  5844.  
  5845.     Funktion 4  - Show saved data
  5846.     ───────────────────────────────────────────────────────────────────
  5847.  
  5848.       Funktion: Anzeige des gesicherten Bildschirms
  5849.  
  5850.       Eingabe:  AH = 4
  5851.  
  5852.       Ausgabe:  CF = 0 ->> Daten konnten angezeigt werden oder Treiber
  5853.                            ist für den akt. Modus nicht zuständig.
  5854.  
  5855.                 CF = 1 ->> Daten konnten nicht angezeigt werden
  5856.  
  5857.       Bemerkungen: 
  5858.  
  5859.       Diese Funktion wird von MDEBUG vor  der Anzeige  des Orignalbild-
  5860.       schirms nach  Eingabe der Taste <CTRL-F1> aufgerufen. Sie sollte,
  5861.       falls ein durch die Funktion 2 gesicherter Bildschirm-Status vor-
  5862.       liegt, diesen anzeigen.
  5863.       Die Funktion  muß  den  aktuellen  Bildschirm-Inhalt  vor der An-
  5864.       zeige nicht sichern.
  5865.       Ein Fehler wird von MDEBUG noch nicht ausgewertet.
  5866.  
  5867.  
  5868.  
  5869.  
  5870.  
  5871.  
  5872.  
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  
  5879.     ────────────────────────────────────────────────────────────────────────────────
  5880.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   90
  5881.  
  5882.  
  5883.  
  5884.     Funktion 5  - Switch back to text screen
  5885.     ───────────────────────────────────────────────────────────────────
  5886.  
  5887.       Funktion: Umschalten des Bildschirmmodus in den durch die
  5888.                 Funktion 2 eingestellten Text-Modus
  5889.  
  5890.       Eingabe:  AH = 5
  5891.  
  5892.       Ausgabe:  CF = 0 ->> Bildschirmmodus wurde geändert oder Treiber
  5893.                            ist für den akt. Modus nicht zuständig.
  5894.  
  5895.                 CF = 1 ->> Bildschirmmodus konnte nicht geändert werden
  5896.  
  5897.       Bemerkungen: 
  5898.  
  5899.       Diese  Funktion  wird von  MDEBUG direkt  nach der Eingabe  einer
  5900.       Taste  bei der  Anzeige des  DOS-Screens über die Taste <CTRL-F1>
  5901.       aufgerufen.  Sie muß,  falls  die  Funktion 4  ausgeführt  werden
  5902.       konnte, den Bildschirm  wieder  in den Modus, der durch die Funk-
  5903.       tion 3 eingestellt wurde,  bringen.  Die  Funktion  ist  also das
  5904.       Pendant zur Funktion 4.
  5905.       Die  Funktion  muß  keinerlei  Daten  sichern und den Bildschirm-
  5906.       Inhalt auch nicht restaurieren.
  5907.       Ein Fehler wird von MDEBUG noch nicht ausgewertet.
  5908.       Zwischen den  beiden Aufrufen  der  Funktionen 4 und  5 wird  von
  5909.       MDEBUG nur  ein  Aufruf  des Interrupt 16h zum Lesen  einer Taste
  5910.       ausgeführt.
  5911.  
  5912.  
  5913.     Funktionen 06 bis 7Fh - reserviert
  5914.     ───────────────────────────────────────────────────────────────────
  5915.  
  5916.        Die Funktionen  06h bis 7Fh sind  reserviert aber im Moment noch
  5917.        nicht belegt.
  5918.  
  5919.  
  5920.     Funktionen 80h bis 0FFh - reserviert
  5921.     ───────────────────────────────────────────────────────────────────
  5922.  
  5923.        Die Funktionen  80h bis 0FFh sind für  weitere Treiberfunktionen
  5924.        reserviert.  Falls in eigenen Treibern  weitere Funktionen, z.B.
  5925.        zur Kommunikation zwischen dem residenten Teil und dem transien-
  5926.        ten  Teil eines  Treibers,  benötigt  werden, sollten  dafür nur
  5927.        Funktionsnummern zwischen 80h und 0FFh gewählt werden.
  5928.  
  5929.  
  5930.  
  5931.  
  5932.  
  5933.  
  5934.  
  5935.  
  5936.  
  5937.  
  5938.  
  5939.     ────────────────────────────────────────────────────────────────────────────────
  5940.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   91
  5941.  
  5942.  
  5943.  
  5944.     Erweiterungen von MDEBUG mittels Kommandotreiber
  5945.     ────────────────────────────────────────────────
  5946.  
  5947.     MDEBUG  erlaubt  es,  die  Befehle  des Interpreters  über  externe
  5948.     Treiber  (sogenannte Kommandotreiber)  zu erweitern.
  5949.     Die neuen Befehle können dann  wie  die  internen  Befehle  benutzt
  5950.     werden.  Selbstverständlich  können sie  auch  mit  Parametern oder
  5951.     Operanden  angegeben  werden.  Die Verwendung in  Befehlszeilen mit
  5952.     mehreren Befehlen ist  natürlich  auch möglich.  Die  neuen Befehle
  5953.     unterliegen dabei allerdings  den gleichen  Beschränkungen wie  die
  5954.     internen, d.h. nur  das  erste  und das  letzte  Zeichen dieser ist
  5955.     signifikant. (siehe auch 'Syntax der Befehle')
  5956.  
  5957.     Es können  auch mehrere  verschiedene Kommandotreiber  gleichzeitig
  5958.     geladen sein (z.B. der Treiber MDHISDRV und der Treiber MDDISDRV).
  5959.  
  5960.     MDEBUG ruft die  Kommandotreiber  vor  der  eigentlichen Auswertung
  5961.     eines  Befehls auf,  so daß   die  internen Befehle auch durch neue
  5962.     Befehle ersetzt  oder erweitert werden  können.   Es ist damit z.B.
  5963.     möglich eine erweiterte  Syntax-Prüfung einzuführen  oder bestimmte
  5964.     Befehle zu unterdrücken.
  5965.  
  5966.     Über  Kommandotreiber  können  auch  Tastenumbelegungen und Tasten-
  5967.     neubelegungen  implementiert  werden.  Auch  diese  Funktionen  der
  5968.     Treiber werden  vor der  eigentlichen  Auswertung der  Tasten  auf-
  5969.     rufen,  so  daß  auch  hier  die Tastenbelegungen von  MDEBUG über-
  5970.     schrieben werden können.
  5971.  
  5972.     Mit  den  Kommandotreibern  kommuniziert MDEBUG  ebenfalls über den
  5973.     Interrupt 2Fh.
  5974.     Die  Prozessnummer für diesen Treiber ist die auf die Prozessnummer
  5975.     für den  Bildschirmtreiber  folgende  (in  der  Voreinstellung also
  5976.     D0h + 1 = D1h). (siehe auch Quelltext des Treibers MDBSPDRV.COM)
  5977.  
  5978.     Für alle Funktionen des Treibers gilt:
  5979.  
  5980.     MDEBUG ruft alle  Funktionen mit der  Prozessnummer  im Register AH
  5981.     und  der  Funktionsnummer  im  Register AL  auf. Der  Treiber  darf
  5982.     nur  aktiv werden, falls seine  Prozessnummer angegeben ist und die
  5983.     angegebene Funktionsnummer von ihm unterstützt wird.
  5984.  
  5985.     Alle  anderen  Aufrufe  des Interrupt 2Fh MUSS er mit unveränderten
  5986.     Registerwerten weiterleiten!
  5987.     Die Funktionen  0 und 1 müssen  IMMER mit geänderten Registerwerten
  5988.     an den nächsten  Prozess in der Kette für den Interrupt 2Fh weiter-
  5989.     gegeben werden.
  5990.  
  5991.  
  5992.  
  5993.  
  5994.  
  5995.  
  5996.  
  5997.  
  5998.  
  5999.     ────────────────────────────────────────────────────────────────────────────────
  6000.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   92
  6001.  
  6002.  
  6003.  
  6004.     Falls eine der Funktionen 2, 3 oder 4 nicht ausgeführt werden kann,
  6005.     muß  der Treiber diesen Aufruf ebenfalls ohne Änderung der Register
  6006.     weiterleiten.
  6007.     Die Funktionen 10h, 11h und 12h DÜRFEN nie weitergegeben werden.
  6008.     Der Treiber darf Register, die nicht zur  Rückgabe von  Ergebnissen
  6009.     benötigt werden, in KEINEM Fall verändern!
  6010.     Die Funktionen 0, 1 und 10h des Treibers müssen reentrant sein.
  6011.  
  6012.  
  6013.  
  6014.     Funktionen der Kommandotreiber
  6015.     ──────────────────────────────
  6016.  
  6017.  
  6018.     Jeder  Kommandotreiber muß  die folgenden Funktionen  zur Verfügung
  6019.     stellen:
  6020.  
  6021.  
  6022.  
  6023.  
  6024.  
  6025.  
  6026.  
  6027.  
  6028.  
  6029.  
  6030.  
  6031.  
  6032.  
  6033.  
  6034.  
  6035.  
  6036.  
  6037.  
  6038.  
  6039.  
  6040.  
  6041.  
  6042.  
  6043.  
  6044.  
  6045.  
  6046.  
  6047.  
  6048.  
  6049.  
  6050.  
  6051.  
  6052.  
  6053.  
  6054.  
  6055.  
  6056.  
  6057.  
  6058.  
  6059.     ────────────────────────────────────────────────────────────────────────────────
  6060.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   93
  6061.  
  6062.  
  6063.  
  6064.     Funktion 0  - Get Status
  6065.     ───────────────────────────────────────────────────────────────────
  6066.  
  6067.       Funktion: Ermitteln des Status des Treibers
  6068.  
  6069.       Eingabe:  AH = 0
  6070.                 BX = Version von MDEBUG
  6071.                      (BH = Hauptversion, BL = Unterversion)
  6072.                 CX = Zähler
  6073.          (*)    DS:SI -> Identifikations-Tabelle von MDEBUG
  6074.                      (Aufbau siehe User-Int)
  6075.          (*)    ES = Segment der von MDEBUG benutzten Bildschirmseite
  6076.                      (Offset = 0)
  6077.          (*)    DI = Daten der von MDEBUG benutzen Bildschirmseite:
  6078.                      High-Byte: max. Anzahl Zeilen/Bildschirmseite
  6079.                      Low-Byte:  max. Anzahl Spalten/Bildschirmzeile
  6080.  
  6081.       Ausgabe:  DL = 0FFh
  6082.                 BX = Falls die Versionsnummer von MDEBUG für die
  6083.                      der Treiber geschrieben wurde KLEINER als die in
  6084.                      BX übergebene Versionsnummer ist, muß der Treiber
  6085.                      diese in BX zurückgeben. Ansonsten darf BX nicht
  6086.                      verändert werden.
  6087.                      (BH = Hauptversion, BL = Unterversion)
  6088.                 CX = CX muß um eins erhöht werden.
  6089.  
  6090.       Bemerkungen: 
  6091.  
  6092.       Der  Aufruf der  Funktion 0  muß  an den  nächsten Prozess in der
  6093.       Kette für den Interrupt 2Fh weitergeleitet werden (nach der Ände-
  6094.       rung der Registerwerte)!
  6095.  
  6096.       Falls  mindestens einer der geladenen Treiber veraltet ist unter-
  6097.       drückt MDEBUG  ALLE  Aufrufe der  Kommandotreiber  und  gibt beim
  6098.       nächsten Aufruf des Interpreters eine Fehlermeldung aus.
  6099.       Ein  veralteter  Kommandotreiber  verursacht also die Ignorierung
  6100.       aller geladenen Kommandotreiber durch MDEBUG.
  6101.       MDEBUG arbeitet in  dieser  Version mit  allen Treibern,  die für
  6102.       MDEBUG ab Version 1.52 geschrieben wurden zusammen.
  6103.       Diese Funktion wird von MDEBUG bei jedem Aufruf aufgerufen.
  6104.       Sie muß reentrant, d.h. immer möglich sein.
  6105.  
  6106.  
  6107.  
  6108.  
  6109.  
  6110.  
  6111.  
  6112.  
  6113.  
  6114.  
  6115.  
  6116.  
  6117.  
  6118.  
  6119.     ────────────────────────────────────────────────────────────────────────────────
  6120.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   94
  6121.  
  6122.  
  6123.  
  6124.       Für die mit (*) gekennzeichneten Daten gilt:
  6125.  
  6126.       Diese  Daten  werden von MDEBUG vor  jedem Aufruf neu  ermittelt.
  6127.       Treiber, die diese  Daten nutzen  wollen,  müssen diese daher bei
  6128.       JEDEM Aufruf  der  Funktion 0  neu übernehmen.  Außerdem  MUSS in
  6129.       diesem Fall der Treiber die Versionsnummer von MDEBUG im Register
  6130.       BX oder in der Identifikations-Tabelle überprüfen, da diese Daten
  6131.       erst ab der Version 1.60 von MDEBUG vorhanden sind!
  6132.  
  6133.       Die Funktion wird ab der  Version 1.70 von MDEBUG auch nach jeder
  6134.       Neuermittlung  der  Daten  des aktuellen  Bildschirmmodus  (Taste
  6135.       <ALT-F9>) aufgerufen.  Bei  diesem  Aufruf  werden die  zurückge-
  6136.       gebenen Daten von MDEBUG aber nicht weiter berücksichtigt!
  6137.  
  6138.  
  6139.  
  6140.     Funktion 1  - Init Driver
  6141.     ───────────────────────────────────────────────────────────────────
  6142.  
  6143.       Funktion: Initialisieren des Treibers
  6144.  
  6145.       Eingabe:  AH = 1
  6146.                 CX = Zähler
  6147.  
  6148.       Ausgabe:  DL = DL muß auf 0FFh gesetzt werden, falls der Treiber
  6149.                      initialisiert werden konnte
  6150.                      (Andernfalls darf DL nicht verändert werden!)
  6151.                 CX = CX muß um eins erhöht werden, falls der Treiber
  6152.                      initialisiert werden konnte.
  6153.  
  6154.       Bemerkungen: 
  6155.  
  6156.       Der Aufruf der Funktion 1 muß  nach der Veränderung der Register-
  6157.       werte an den nächsten Prozess in der Kette für den  Interrupt 2Fh
  6158.       weitergeleitet werden.
  6159.  
  6160.       Diese Funktion wird von MDEBUG bei jedem Aufruf aufgerufen.
  6161.  
  6162.       Falls kein Treiber initialisiert  werden kann, unterdrückt MDEBUG
  6163.       alle Aufrufe der Kommandotreiber bei diesem Aufruf.
  6164.  
  6165.       Die Funktion muß immer möglich sein.
  6166.  
  6167.  
  6168.  
  6169.  
  6170.  
  6171.  
  6172.  
  6173.  
  6174.  
  6175.  
  6176.  
  6177.  
  6178.  
  6179.     ────────────────────────────────────────────────────────────────────────────────
  6180.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   95
  6181.  
  6182.  
  6183.  
  6184.     Funktion 2  - Execute interpreter command
  6185.    ───────────────────────────────────────────────────────────────────
  6186.  
  6187.       Funktion: Ausführen eines Befehls im Interpreter
  6188.  
  6189.       Eingabe:  AH = 2
  6190.                 BL = erstes Zeichen des Befehls
  6191.                 BH = letztes Zeichen des Befehls
  6192.                      (Leerzeichen, falls der Befehl nur ein Zeichen
  6193.                       lang ist)
  6194.                 DS:SI -> Parameter für den Befehl als ASCIIZ-String
  6195.                       Führende Leerzeichen sind schon entfernt.
  6196.                       Falls keine Parameter angegeben wurden zeigt
  6197.                       DS:SI auf ein Null-Byte.
  6198.  
  6199.                 DS:DI auf folgende Datenstruktur:
  6200.  
  6201.                 (Hinweis:
  6202.                  Dies ist die ORIGINAL-Struktur von MDEBUG! Änderungen
  6203.                  für die Register von MDEBUG  müssen direkt  hier ein-
  6204.                  getragen werden)
  6205.  
  6206.          ┌─────────────────┬───────┬─────────────────────────────────┐
  6207.          │ Offset          │       │                                 │
  6208.          │ (relativ zu DI) │ Länge │ Funktion der Speicherstelle     │
  6209.          ╞═════════════════╪═══════╪═════════════════════════════════╡
  6210.          │    00h          │  Word │ Register SE                     │
  6211.          │    02h          │  Word │ Register OF                     │
  6212.          │    04h          │  Word │ Register FS                     │
  6213.          │    06h          │  Word │ Register FO                     │
  6214.          │    08h          │  Word │ Register AX                     │
  6215.          │    0Ah          │  Word │ Register BX                     │
  6216.          │    0Ch          │  Word │ Register CX                     │
  6217.          │    0Eh          │  Word │ Register DX                     │
  6218.          │    10h          │  Word │ Register SI                     │
  6219.          │    12h          │  Word │ Register DI                     │
  6220.          │    14h          │  Word │ Register DS                     │
  6221.          └─────────────────┴───────┴─────────────────────────────────┘
  6222.  
  6223.  
  6224.  
  6225.  
  6226.  
  6227.  
  6228.  
  6229.  
  6230.  
  6231.  
  6232.  
  6233.  
  6234.  
  6235.  
  6236.  
  6237.  
  6238.  
  6239.     ────────────────────────────────────────────────────────────────────────────────
  6240.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   96
  6241.  
  6242.  
  6243.  
  6244.                           - Fortsetzung -
  6245.          ┌─────────────────┬───────┬─────────────────────────────────┐
  6246.          │ Offset          │       │ Inhalt                          │
  6247.          │ (relativ zu DI) │ Länge │                                 │
  6248.          ╞═════════════════╪═══════╪═════════════════════════════════╡
  6249.          │    16h          │  Word │ Register ES                     │
  6250.          │    18h          │  Word │ Register BP                     │
  6251.          │    1Ah          │  Word │ Register SS                     │
  6252.          │    1Ch          │  Word │ Register SP                     │
  6253.          │    1Eh          │  Word │ Register FL (Flags)             │
  6254.          │    20h          │  Word │ Register R0                     │
  6255.          │    22h          │  Word │ Register R1                     │
  6256.          │    24h          │  Word │ Register R2                     │
  6257.          │    26h          │  Word │ Register R3                     │
  6258.          │    28h          │  Word │ Register R4                     │
  6259.          │    2Ah          │  Word │ Register R5                     │
  6260.          │    2Ch          │  Word │ Register R6                     │
  6261.          │    2Eh          │  Word │ Register R7                     │
  6262.          │    30h          │  Word │ Register R8                     │
  6263.          │    32h          │  Word │ Konstante CS, Ret-Adresse       │
  6264.          │    34h          │  Word │ Konstante IP, Ret-Adresse       │
  6265.          │    36h          │ DWord │ gesicherte Monitor-Start-Adresse│
  6266.          │                 │       │ (Taste <F6>)                    │
  6267.          │    3Ah          │24 Byte│ gesicherte Registerwerte. Hier  │
  6268.          │                 │       │ stehen die Werte, die vor dem   │
  6269.          │                 │       │ Beenden des Aufrufs von MDEBUG  │
  6270.          │                 │       │ wieder geladen werden!          │
  6271.          │                 │       │ Reihenfolge der Speicherung:    │
  6272.          │                 │       │ AX, BX, CX, DX, SI, DI, DS, ES  │
  6273.          │                 │       │ BP, SS, SP, Flags               │
  6274.          │    52h          │24 Byte│ Inhalt der Register vor dem     │
  6275.          │                 │       │ Beenden des letzten Aufrufs von │
  6276.          │                 │       │ MDEBUG                          │
  6277.          │                 │       │ Reihenfolge der Speicherung:    │
  6278.          │                 │       │ AX, BX, CX, DX, SI, DI, DS, ES  │
  6279.          │                 │       │ BP, SS, SP, Flags               │
  6280.          │    6Ah          │ DWord │ Adresse des DOS-Info-Blocks     │
  6281.          │    6Eh          │ DWord │ Adresse des DOS-Busy-Flags      │
  6282.          │    72h          │  Word │ Offset des Registers, aus dem   │
  6283.          │                 │       │ das Segment für das erste       │
  6284.          │                 │       │ Monitorwindow ermittelt wird    │
  6285.          │    74h          │  Word │ Offset des Registers, aus dem   │
  6286.          │                 │       │ der Offset für das erste        │
  6287.          │                 │       │ Monitorwindow ermittelt wird    │
  6288.          │    76h          │  Word │ Name des Registers, aus dem     │
  6289.          │                 │       │ das Segment für das erste       │
  6290.          │                 │       │ Monitorwindow ermittelt wird    │
  6291.          └─────────────────┴───────┴─────────────────────────────────┘
  6292.  
  6293.  
  6294.  
  6295.  
  6296.  
  6297.  
  6298.  
  6299.     ────────────────────────────────────────────────────────────────────────────────
  6300.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   97
  6301.  
  6302.  
  6303.  
  6304.                           - Fortsetzung -
  6305.          ┌─────────────────┬───────┬─────────────────────────────────┐
  6306.          │ Offset          │       │ Inhalt                          │
  6307.          │ (relativ zu DI) │ Länge │                                 │
  6308.          ╞═════════════════╪═══════╪═════════════════════════════════╡
  6309.          │    78h          │  Word │ Name des Registers, aus dem     │
  6310.          │                 │       │ der Offset für das erste        │
  6311.          │                 │       │ Monitorwindow ermittelt wird    │
  6312.          │    7Ah          │  Word │ Speicherstelle, die als Pseudo- │
  6313.          │                 │       │ Register für den 1. Operanden   │
  6314.          │                 │       │ gilt                            │
  6315.          │    7Ch          │  Word │ Speicherstelle, die als Pseudo- │
  6316.          │                 │       │ Register für den 2. Operanden   │
  6317.          │                 │       │ gilt                            │
  6318.          │    7Eh          │ DWord │ letzte Monitor-Start-Adresse    │
  6319.          │                 │       │ (Taste <X> im Monitor)          │
  6320.          └─────────────────┴───────┴─────────────────────────────────┘
  6321.  
  6322.  
  6323.       Ausgabe:  AL = 0FFh
  6324.                 CF = 1 ->> Fehler, AH enthält die Fehlernummer
  6325.  
  6326.                 Möglich sind folgende Werte:
  6327.  
  6328.                  1 - Syntax Fehler
  6329.                  2 - 1. Shell des COMMAND.COM ist aktiv
  6330.                  3 - ESC gedrückt
  6331.                  4 - BREAK gedrückt
  6332.                  5 - DOS ist aktiv
  6333.                  6 - ¿-Befehl endete
  6334.                  7 - Division durch Null
  6335.                  8 - Fehlerhafter Bildschirmtreiber
  6336.                  9 - Fehlerhafter Kommandotreiber
  6337.                 10 - Fehler 8 und 9
  6338.                 11 - unbekannter Fehler
  6339.                 12 - Neuer Fehler,
  6340.                      DS:SI -> neue Fehlermeldung als ASCIIZ-String
  6341.                               mit bis zu 30 Zeichen
  6342.                      Die Fehlermeldung gilt nur für diesen Fehler.
  6343.                      Falls sie kürzer als 30 Zeichen ist, wird sie
  6344.                      mit Leerzeichen bis auf 30 Zeichen aufgefüllt.
  6345.  
  6346.                 Alle anderen Werte werden wie der  Wert 11 behandelt.
  6347.                 Ein Fehler wird von MDEBUG nur angezeigt aber nicht
  6348.                 ausgewertet. Tritt der Fehler in einer Befehlszeile auf
  6349.                 wird die Ausführung dieser abgebrochen.
  6350.  
  6351.  
  6352.  
  6353.  
  6354.  
  6355.  
  6356.  
  6357.  
  6358.  
  6359.     ────────────────────────────────────────────────────────────────────────────────
  6360.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   98
  6361.  
  6362.  
  6363.  
  6364.                 CF = 0 ->> AH enthält den Returncode
  6365.  
  6366.                 Mögliche Werte sind hier:
  6367.  
  6368.                 0 - Ausführung der Befehlszeile fortsetzen
  6369.                 1 - MDEBUG verlassen (Neustart im Interpreter)
  6370.                 2 - MDEBUG verlassen mit automatischem Neuaufruf
  6371.                     sobald DOS nicht aktiv ist (Neustart im Interpreter)
  6372.                 5 - Übernehme neue Befehlszeile in den Eingabepuffer.
  6373.                     Die Befehlszeile muß als Nullstring bei DS:SI
  6374.                     stehen. Sie kann max. 66 Zeichen lang sein.
  6375.                 6 - wie 5, die Befehlszeile wird allerdings sofort
  6376.                     ausgeführt. Die neue Befehlszeile wird intern nicht
  6377.                     gespeichert. (d.h. sie gilt nicht für <CTRL-RETURN>
  6378.                     oder <SHIFT-RETURN>)
  6379.  
  6380.                 Alle anderen Werte werden wie der Wert 0 behandelt.
  6381.  
  6382.       Bemerkungen: 
  6383.  
  6384.       Der Aufruf der Funktion 2  muß,  ohne  Änderung der  Register, an
  6385.       den nächsten Prozess in der Kette  für den  Interrupt 2Fh weiter-
  6386.       geleitet werden falls der Befehl für diesen Treiber nicht bekannt
  6387.       ist. Diese Funktion wird von MDEBUG für jeden Befehl vor der Aus-
  6388.       wertung dieses aufgerufen.
  6389.  
  6390.  
  6391.  
  6392.  
  6393.  
  6394.  
  6395.  
  6396.  
  6397.  
  6398.  
  6399.  
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407.  
  6408.  
  6409.  
  6410.  
  6411.  
  6412.  
  6413.  
  6414.  
  6415.  
  6416.  
  6417.  
  6418.  
  6419.     ────────────────────────────────────────────────────────────────────────────────
  6420.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite   99
  6421.  
  6422.  
  6423.  
  6424.     Funktion 3  - Execute key in the monitor
  6425.     ───────────────────────────────────────────────────────────────────
  6426.  
  6427.       Funktion: Bearbeiten einer Taste im Monitor
  6428.  
  6429.       Eingabe:  AH = 3
  6430.                 BX = Code der eingegebenen Taste wie er vom Interrupt
  6431.                      16h zurückgegeben wird.
  6432.  
  6433.                 CX = 0 ->> Der Cursor befindet sich in der 3. Spalte
  6434.                      1 ->> Der Cursor befindet sich in der 2. Spalte
  6435.                      2 ->> Der Cursor befindet sich im Offset-Feld
  6436.                      3 ->> Der Cursor befindet sich im Segment-Feld
  6437.  
  6438.                 DS:SI zeigt auf die gleiche Datenstruktur wie DS:DI
  6439.                       bei der Funktion 2.
  6440.  
  6441.                 ES:DI enthält  die Adresse des Bytes, auf das der
  6442.                       Cursor im Moment steht
  6443.  
  6444.       Ausgabe:  AL = 0FFh ->> Taste erkannt, AH enthält den Returncode.
  6445.  
  6446.                 Mögliche Werte sind hier:
  6447.  
  6448.                 0 - Taste bearbeitet, keine weiteren Aktionen nötig
  6449.                 1 - MDEBUG verlassen (Neustart  im Monitor)
  6450.                 2 - MDEBUG verlassen mit automatischem Neuaufruf
  6451.                     sobald DOS nicht aktiv ist (Neustart im Interpreter)
  6452.                 3 - Funktion konnte nicht ausgeführt werden, Fehlerton
  6453.                     ausgeben
  6454.                 4 - Taste wurde umdefiniert und muß weiter bearbeitet
  6455.                     werden. In diesem Fall muß BX den neuen Tastencode
  6456.                     enthalten.
  6457.  
  6458.                 Alle anderen Werte werden wie der Wert 0 behandelt.
  6459.  
  6460.  
  6461.       Bemerkungen: 
  6462.  
  6463.       Der Aufruf der Funktion 3  muß,  ohne  Änderung der  Register, an
  6464.       den nächsten Prozess in der Kette  für den  Interrupt 2Fh weiter-
  6465.       geleitet werden falls der Befehl für diesen Treiber nicht bekannt
  6466.       ist.
  6467.  
  6468.       Diese Funktion wird von MDEBUG nach jeder  Eingabe einer Taste im
  6469.       Offset-  oder  im Segment-Feld, in der mittleren und in der rech-
  6470.       ten Spalte des Monitors (ausgenommen <CTRL-P>) aufgerufen.
  6471.  
  6472.  
  6473.  
  6474.  
  6475.  
  6476.  
  6477.  
  6478.  
  6479.     ────────────────────────────────────────────────────────────────────────────────
  6480.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  100
  6481.  
  6482.  
  6483.  
  6484.     Funktion 4  - Execute key in the interpreter
  6485.     ───────────────────────────────────────────────────────────────────
  6486.  
  6487.       Funktion: Bearbeiten einer Taste im Interpreter
  6488.  
  6489.       Eingabe:  AH = 4
  6490.                 BX = Code der eingegebenen Taste wie er vom Interrupt
  6491.                      16h zurückgegeben wird.
  6492.                 DS:SI zeigt auf die gleiche Datenstruktur wie DS:DI
  6493.                       bei der Funktion 2
  6494.  
  6495.       Ausgabe:  AL = 0FFh ->> Taste erkannt, AH enthält den Returncode
  6496.  
  6497.                 Mögliche Werte sind hier:
  6498.  
  6499.                 0 - Taste bearbeitet, keine weiteren Aktionen nötig
  6500.                 1 - MDEBUG verlassen, (Neustart im Interpreter)
  6501.                 2 - MDEBUG verlassen mit automatischen Neuaufruf
  6502.                     sobald DOS nicht aktiv ist (Neustart im Interpreter)
  6503.                 3 - Funktion konnte nicht ausgeführt werden, Fehlerton
  6504.                     ausgeben
  6505.                 4 - Taste wurde umdefiniert und muß weiter bearbeitet
  6506.                     werden. In diesem Fall muß BX den neuen Tastencode
  6507.                     beinhalten.
  6508.                 5 - Übernehme neue Befehlszeile in den Eingabepuffer.
  6509.                     Die Befehlszeile muß als Nullstring bei DS:SI
  6510.                     stehen. Sie kann max. 66 Zeichen lang sein.
  6511.                 6 - wie 5, die Befehlszeile wird allerdings sofort aus-
  6512.                     geführt. Die neue  Befehlszeile wird intern nicht
  6513.                     gespeichert. (d.h. sie gilt nicht für <CTRL-RETURN>
  6514.                     oder <SHIFT-RETURN> )
  6515.  
  6516.                 Alle anderen Werte werden wie der Wert 0 behandelt.
  6517.  
  6518.  
  6519.       Bemerkungen:
  6520.  
  6521.       Der  Aufruf der  Funktion 4  muß  an den  nächsten Prozess in der
  6522.       Kette für den Interrupt 2Fh weitergeleitet werden falls die Taste
  6523.       für diesen Treiber nicht bekannt  ist.  (ohne Änderung der Regis-
  6524.       terwerte)
  6525.       Die Funktion wird von  MDEBUG nach  jeder  Eingabe einer Taste im
  6526.       Interpreter (ausgenommen <CTRL-P>) aufgerufen.
  6527.  
  6528.  
  6529.  
  6530.  
  6531.  
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.     ────────────────────────────────────────────────────────────────────────────────
  6540.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  101
  6541.  
  6542.  
  6543.  
  6544.     Funktionen 05h bis 0Ah - reserviert
  6545.     ───────────────────────────────────────────────────────────────────
  6546.  
  6547.       Die Funktionen 05h  bis  0Ah  sind reserviert aber im Moment noch
  6548.       nicht belegt.
  6549.  
  6550.  
  6551.     Funktionen 10h - Get adress of the old interrupt 2Fh
  6552.     ───────────────────────────────────────────────────────────────────
  6553.  
  6554.       Funktion: Ermitteln des nächsten Prozesses in der Kette für den
  6555.                 Interrupt 2Fh und des Segments des Treibers
  6556.  
  6557.       Eingabe:  AH = 10h
  6558.  
  6559.       Ausgabe:  DL = 0FFh
  6560.                 ES:BX = Adresse des nächsten Prozesses in der Kette für
  6561.                         den Interrupt 2Fh
  6562.                 CX    = Segment des Treibers
  6563.                 CX:DI = Adresse der Identifikationstabelle des Treibers
  6564.  
  6565.                 Aufbau der Identifikationstabelle eines Treibers:
  6566.  
  6567.                 ┌──────────────┬───────┬──────────────────────────────┐
  6568.                 │   Offset in  │ Länge │  Inhalt                      │
  6569.                 │  der Tabelle │       │                              │
  6570.                 ╞══════════════╪═══════╪══════════════════════════════╡
  6571.                 │     00h      │  1Ah  │  'Kommandotreiber für MDEBUG'│
  6572.                 │     1Ah      │  0Ch  │  Name des Treibers als String│
  6573.                 │              │       │  (ohne Längenbyte und Ende-  │
  6574.                 │              │       │   Kennzeichen)               │
  6575.                 │              │       │  Dieser String muß für jeden │
  6576.                 │              │       │  Treiber verschieden sein!   │
  6577.                 └──────────────┴───────┴──────────────────────────────┘
  6578.  
  6579.       Bemerkungen: 
  6580.  
  6581.       Die Funktion  wird  nur vom Treiber  selbst im Initialisierrungs-
  6582.       teil zum Durchlaufen der Kette für den Interrupt 2Fh benutzt. Sie
  6583.       muß  auch  implementiert  sein, falls  dieser  Treiber sie  nicht
  6584.       benutzt!
  6585.  
  6586.       Die  Funktion  muß  reentrant sein und  darf nicht weitergeleitet
  6587.       werden!
  6588.  
  6589.       Hinweis: Bei  Treibern,  die für  MDEBUG Version 1.52  oder älter
  6590.                geschrieben wurden, beginnt  die  Identifikationstabelle
  6591.                immer am Offset 104h im Code/Datensegment.
  6592.  
  6593.  
  6594.  
  6595.  
  6596.  
  6597.  
  6598.  
  6599.     ────────────────────────────────────────────────────────────────────────────────
  6600.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  102
  6601.  
  6602.  
  6603.  
  6604.     Funktion 11h - Start Driver
  6605.     ───────────────────────────────────────────────────────────────────
  6606.  
  6607.       Funktion: Diese Funktion wird vom Initialsierungsteil aufgerufen
  6608.                 um dem Treiber  mitzuteilen, daß er installiert ist.
  6609.  
  6610.       Eingabe:  AH = 11h
  6611.  
  6612.       Ausgabe:  DL = 0FFh
  6613.  
  6614.       Bemerkungen: 
  6615.  
  6616.       Die Funktion wird nur vom Treiber  selbst im Initialisierungsteil
  6617.       benutzt. Sie darf den Aufruf nicht weiterleiten. Ein Fehler  wird
  6618.       je nach Implementierung berücksichtigt.
  6619.  
  6620.       Die Funktion darf sonst nicht aufgerufen werden!
  6621.  
  6622.  
  6623.     Funktion 12h - End Driver
  6624.     ───────────────────────────────────────────────────────────────────
  6625.  
  6626.       Funktion: Diese Funktion wird vom DeInitialsierungsteil kurz vor
  6627.                 der  DeInstallierung  des Treibers  aufgerufen, um ihm
  6628.                 Gelegenheit zum 'Aufräumen' zu geben.
  6629.  
  6630.       Eingabe:  AH = 12h
  6631.  
  6632.       Ausgabe:  DL = 0FFh
  6633.  
  6634.       Bemerkungen: 
  6635.  
  6636.       Die Funktion  wird nur vom Treiber  selbst im DeInitialisierungs-
  6637.       teil benutzt. Sie darf den Aufruf nicht weiterleiten.  Ein Fehler
  6638.       wird je nach Implementierung berücksichtigt.
  6639.  
  6640.       Die Funktion darf sonst nicht aufgerufen werden!
  6641.  
  6642.  
  6643.  
  6644.  
  6645.  
  6646.  
  6647.  
  6648.  
  6649.  
  6650.  
  6651.  
  6652.  
  6653.  
  6654.  
  6655.  
  6656.  
  6657.  
  6658.  
  6659.     ────────────────────────────────────────────────────────────────────────────────
  6660.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  103
  6661.  
  6662.  
  6663.  
  6664.     Funktionen 13h bis 7Fh - reserviert
  6665.     ───────────────────────────────────────────────────────────────────
  6666.  
  6667.       Die Funktionen 13h  bis  7Fh  sind reserviert aber im Moment noch
  6668.       nicht belegt.
  6669.  
  6670.  
  6671.     Funktionen 80h bis 0FFh - reserviert
  6672.     ───────────────────────────────────────────────────────────────────
  6673.  
  6674.       Die Funktionen  80h bis 0FFh sind für  weitere  Treiberfunktionen
  6675.       reserviert.  Falls  in eigenen Treibern weitere  Funktionen, z.B.
  6676.       zur Kommunikation  zwischen  einem residenten Teil und dem  tran-
  6677.       sienten Teil eines  Treibers, benötigt  werden, sollten dafür nur
  6678.       Funktionsnummern zwischen 80h und 0FFh gewählt werden.
  6679.  
  6680.  
  6681.  
  6682.  
  6683.  
  6684.  
  6685.  
  6686.  
  6687.  
  6688.  
  6689.  
  6690.  
  6691.  
  6692.  
  6693.  
  6694.  
  6695.  
  6696.  
  6697.  
  6698.  
  6699.  
  6700.  
  6701.  
  6702.  
  6703.  
  6704.  
  6705.  
  6706.  
  6707.  
  6708.  
  6709.  
  6710.  
  6711.  
  6712.  
  6713.  
  6714.  
  6715.  
  6716.  
  6717.  
  6718.  
  6719.     ────────────────────────────────────────────────────────────────────────────────
  6720.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  104
  6721.  
  6722.  
  6723.  
  6724.     Zusätzlicher User-Interrupt
  6725.     ───────────────────────────
  6726.  
  6727.     MDEBUG  belegt  zur  Kommunikation  mit  anderen  Programmen  einen
  6728.     zusätzlichen Interrupt (= User-Int).  Dieser kann von  anderen Pro-
  6729.     grammen aufgerufen werden, um z.B. interne Variablen von  MDEBUG zu
  6730.     lesen oder zu schreiben oder auch um MDEBUG gezielt aufzurufen.
  6731.  
  6732.     Der User-Int wird von MDEBUG nicht weitergeleitet.
  6733.  
  6734.     Falls die  Passwort-Abfrage aktiv ist, muß  bei JEDEM Aufruf  einer
  6735.     Funktion  des  User-Ints  die Register-Kombination  DS:SI  auf  das
  6736.     korrekte Passwort oder auf ein Null-Byte zeigen.
  6737.     Ausnahme: Funktion 06h
  6738.  
  6739.     Steht  bei DS:SI  ein  Null-Byte, so wird das Passwort vom Benutzer
  6740.     erfragt. Vor der  Eingabe wird der Bildschirmmodus  überprüft.  Ist
  6741.     dieser inkorrekt,  wird die Eingabe des  Passwortes abgebrochen und
  6742.     im Register AX der Fehlercode  0FFFDh zurückgegeben.
  6743.  
  6744.     Bei  Aufruf  mit DS:SI  auf  einem  Null-Byte zeigend muß  das auf-
  6745.     rufende  Programm  dafür sorgen, daß  auf dem aktuellen Stack  noch
  6746.     genügend Platz für mehrere Aufrufe des Interrupt 10h ist.
  6747.  
  6748.     Zeigt  DS:SI auf ein inkorrektes Passwort oder hat der Benutzer ein
  6749.     falsches  Passwort  eingegeben,  so  wird  die Funktion  nicht aus-
  6750.     geführt und im Register AX der  Fehlercode 0FFFEh  zurückgeliefert.
  6751.     Ist kein  Passwort  installiert  oder das Passwort inaktiv, so wird
  6752.     der Inhalt der Register DS und SI ignoriert.
  6753.  
  6754.  
  6755.     Folgende Funktionen sind für den User-Interrupt implementiert:
  6756.  
  6757.  
  6758.  
  6759.  
  6760.  
  6761.  
  6762.  
  6763.  
  6764.  
  6765.  
  6766.  
  6767.  
  6768.  
  6769.  
  6770.  
  6771.  
  6772.  
  6773.  
  6774.  
  6775.  
  6776.  
  6777.  
  6778.  
  6779.     ────────────────────────────────────────────────────────────────────────────────
  6780.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  105
  6781.  
  6782.  
  6783.  
  6784.     Funktion 0 - Status ermitteln
  6785.     ───────────────────────────────────────────────────────────────────
  6786.  
  6787.       Eingabe:  AH = 0
  6788.                 DS:SI -> Passwort oder ein Null-Byte
  6789.  
  6790.       Ausgabe:  AX = 0FFFEh ->> Passwort inkorrekt
  6791.                 AX = 0FFFDh ->> Bildschirmmodus inkorrekt
  6792.  
  6793.                 sonst:
  6794.  
  6795.                 ES = Inhalt des Registers SE des Monitors
  6796.                 DI = Inhalt des Registers OF des Monitors
  6797.                 CH = Farb-Attribut des Monitors
  6798.                 CL = Farb-Attribut des Interpreters
  6799.                 BH = Startzeile des Monitors
  6800.                 BL = Startzeile des Interpreters
  6801.                 AH = Scancode des Hotkeys
  6802.                 AL = Hotkey (als CHAR)
  6803.                 DL = Status der Umschalt-Tasten bei Aufruf
  6804.                 DH = Basis-Prozessnummer für den Interrupt 2Fh
  6805.                      (= Parameter 'PRO')
  6806.                 DS:SI -> Identifikations-Tabelle von MDEBUG
  6807.                          (Original!)
  6808.  
  6809.       Aufbau der Identifikations-Tabelle von MDEBUG:
  6810.  
  6811.           ┌────────┬───────┬─────────────────────────────────────────┐
  6812.           │ Offset │ Länge │  Inhalt                                 │
  6813.           ╞════════╪═══════╪═════════════════════════════════════════╡
  6814.           │  -02h  │ Word  │ Einsprung-Offset (siehe ?-Befehl)       │
  6815.   DS:SI ->│   00h  │ Word  │ Segment des residenten MDEBUG           │
  6816.           │   02h  │ DWord │ Adresse der alten INT-08h-Routine       │
  6817.           │   06h  │ DWord │ Adresse der alten INT-09h-Routine       │
  6818.           │   0Ah  │ DWord │ Adresse der von MDEBUG benutzten        │
  6819.           │        │       │ Routine für den Interrupt 16h           │
  6820.           │   0Eh  │ n Byte│ Versions-Kennung als Pascal-String      │
  6821.           └────────┴───────┴─────────────────────────────────────────┘
  6822.  
  6823.  
  6824.  
  6825.  
  6826.  
  6827.  
  6828.  
  6829.  
  6830.  
  6831.  
  6832.  
  6833.  
  6834.  
  6835.  
  6836.  
  6837.  
  6838.  
  6839.     ────────────────────────────────────────────────────────────────────────────────
  6840.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  106
  6841.  
  6842.  
  6843.  
  6844.     Funktion 1 - Ermittle Adresse der Hilfsregister
  6845.     ───────────────────────────────────────────────────────────────────
  6846.  
  6847.       Eingabe:  AH = 1
  6848.                 DS:SI -> Passwort oder ein Null-Byte
  6849.  
  6850.       Ausgabe:  AX = 0FFFEh ->> Passwort inkorrekt
  6851.                 AX = 0FFFDh ->> Bildschirmmodus inkorrekt
  6852.  
  6853.                 sonst:
  6854.  
  6855.                 ES:DI-2 -> Hilfsregister R0
  6856.                 ES:DI   -> Hilfsregister R1
  6857.                 ES:DI+2 -> Hilfsregister R2
  6858.                 ES;DI+4 -> Hilfsregister R3
  6859.                 usw.
  6860.  
  6861.  
  6862.  
  6863.  
  6864.  
  6865.  
  6866.  
  6867.  
  6868.  
  6869.  
  6870.  
  6871.  
  6872.  
  6873.  
  6874.  
  6875.  
  6876.  
  6877.  
  6878.  
  6879.  
  6880.  
  6881.  
  6882.  
  6883.  
  6884.  
  6885.  
  6886.  
  6887.  
  6888.  
  6889.  
  6890.  
  6891.  
  6892.  
  6893.  
  6894.  
  6895.  
  6896.  
  6897.  
  6898.  
  6899.     ────────────────────────────────────────────────────────────────────────────────
  6900.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  107
  6901.  
  6902.  
  6903.  
  6904.     Funktion 2 - Status setzen
  6905.     ───────────────────────────────────────────────────────────────────
  6906.  
  6907.       Eingabe:  AH = 2
  6908.                 DS:SI -> Passwort oder ein Null-Byte
  6909.  
  6910.                 ES = Neuer Wert für das Register SE des Monitors
  6911.                 DI = Neuer Wert für das Register OF des Monitors
  6912.                 CH <> 0 ->> CH = Farb-Attribut des Monitors
  6913.                 CL <> 0 ->> CL = Farb-Attribut des Interpreters
  6914.                 BH <> 0 ->> BH = Startzeile des Monitors
  6915.                 BL <> 0 ->> BL = Startzeile des Interpreters
  6916.                 AL <> 0 ->> AL = Neuer Hotkey (als ASCII-Zeichen)
  6917.                                  Intervall: 'A'..'Z' oder 'a'..'z'
  6918.                 DL <> 0 ->> DL = Status der Umschalt-Tasten
  6919.                                  (Es darf nur das untere Nibble gesetzt
  6920.                                   sein)
  6921.                 DH <> 0 ->> DH = Basis-Prozessnummer für den Interrupt 2Fh
  6922.  
  6923.       Die Überprüfung der Werte geschieht äquivalent  zu der Angabe der
  6924.       Werte über Parameter bei der Installation.
  6925.  
  6926.       Ausgabe:  AX = 0      ->> ok
  6927.                 AX = 0FFFEh ->> Passwort inkorrekt
  6928.                                 Keine Änderungen vorgenommen
  6929.                 AX = 0FFFFh ->> Aufruf nicht erlaubt
  6930.                                 Keine Änderungen vorgenommen
  6931.                 AX = 0FFFDh ->> Bildschirmmodus inkorrekt
  6932.                                 Keine Änderungen vorgenommen
  6933.                 sonst:
  6934.                 AX = Codierung eines Fehlers, und zwar:
  6935.  
  6936.                 ┌─────┬────────────────────────────────────────┐
  6937.                 │ Bit │ Bedeutung falls gesetzt                │
  6938.                 ╞═════╪════════════════════════════════════════╡
  6939.                 │  0  │ Falsche Startzeile für den Monitor     │
  6940.                 │  1  │ Falsche Startzeile für den Interpreter │
  6941.                 │  2  │ Falscher Hotkey angegeben              │
  6942.                 │  3  │ Falsche Prozessnummer angegeben        │
  6943.                 │  4  │ reserviert (= 0)                       │
  6944.                 │  5  │ reserviert (= 0)                       │
  6945.                 │  6  │ reserviert (= 0)                       │
  6946.                 │  7  │ reserviert (= 0)                       │
  6947.                 └─────┴────────────────────────────────────────┘
  6948.  
  6949.                 Im  Falle eines Fehlers werden nur die korrekten  Werte
  6950.                 übernommen, die anderen bleiben unverändert.
  6951.                 Die Werte der Register SE und OF werden immer geändert.
  6952.  
  6953.  
  6954.  
  6955.  
  6956.  
  6957.  
  6958.  
  6959.     ────────────────────────────────────────────────────────────────────────────────
  6960.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  108
  6961.  
  6962.  
  6963.  
  6964.     Funktion 3 - Aufruf von MDEBUG
  6965.     ───────────────────────────────────────────────────────────────────
  6966.  
  6967.       Eingabe:  AH = 3
  6968.                 DS:SI -> Passwort oder ein Null-Byte
  6969.                 ES:DI = Adresse des anzuzeigenden Speicherbereichs
  6970.  
  6971.                 Die Werte werden in die Register SE und OF geladen  und
  6972.                 die Register-Kombination  SE:OF wird als Monitor-Start-
  6973.                 Adresse genommen.
  6974.  
  6975.       Ausgabe:  AX = 0FFFFh ->> Aufruf nicht erlaubt
  6976.                 AX = 0FFFEh ->> Passwort inkorrekt
  6977.                 AX = 0FFFDh ->> Aufruf nicht  erlaubt aufgrund eines
  6978.                                 inkorrekten Bildschirmmodus
  6979.  
  6980.                 Falls das  Passwort korrekt  abgefragt  werden  konnte,
  6981.                 sind die Register SE und OF geändert und werden für die
  6982.                 Monitor-Start-Adresse genommen.
  6983.  
  6984.                 Falls ok, wird kein Register von MDEBUG verändert.
  6985.                 Das Flag für den automatischen  Aufruf von MDEBUG falls
  6986.                 DOS nicht aktiv ist wird gelöscht.
  6987.  
  6988.  
  6989.     Funktion 4 - Aufruf von MDEBUG mit den akt. Werten
  6990.     ──────────────────────────────────────────────────
  6991.  
  6992.       Eingabe:  AH = 4
  6993.                 DS:SI -> Passwort oder ein Null-Byte
  6994.  
  6995.       Ausgabe:  AX = 0FFFFh ->> Aufruf nicht erlaubt
  6996.                 AX = 0FFFEh ->> Passwort inkorrekt
  6997.                 AX = 0FFFDh ->> Aufruf nicht erlaubt aufgrund
  6998.                                 eines falschen Bildschirmmodus
  6999.  
  7000.                 Falls ok, wird kein Register von MDEBUG verändert.
  7001.                 Das Flag für den automatischen  Aufruf von MDEBUG falls
  7002.                 DOS nicht aktiv ist wird gelöscht.
  7003.  
  7004.  
  7005.  
  7006.  
  7007.  
  7008.  
  7009.  
  7010.  
  7011.  
  7012.  
  7013.  
  7014.  
  7015.  
  7016.  
  7017.  
  7018.  
  7019.     ────────────────────────────────────────────────────────────────────────────────
  7020.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  109
  7021.  
  7022.  
  7023.  
  7024.     Funktion 5 - Lösche oder Setze Flags von MDEBUG
  7025.     ───────────────────────────────────────────────────────────────────
  7026.  
  7027.       Eingabe:  AH = 5
  7028.                 DS:SI -> Passwort oder ein Null-Byte
  7029.                 BL = Neuer Wert des Flags
  7030.                      BL =  0 ->> Aufruf von MDEBUG erlauben
  7031.                      BL <> 0 ->> Aufruf von MDEBUG verbieten
  7032.  
  7033.       Ausgabe:  AX = 0FFFEh ->> Passwort inkorrekt
  7034.                 AX = 0FFFDh ->> Bildschirmmodus inkorrekt
  7035.  
  7036.                 sonst:
  7037.                 BL = Alter Wert des Flags
  7038.                 BH = Alter Wert des Flags für den Aufruf von MDEBUG
  7039.                      falls DOS nicht aktiv ist
  7040.  
  7041.                 Das Flag für den automatischen  Aufruf von MDEBUG falls
  7042.                 DOS nicht aktiv ist wird gelöscht.
  7043.  
  7044.                 Diese  Funktion sollte  NIEMALS aus MDEBUG  heraus auf-
  7045.                 gerufen werden!
  7046.  
  7047.  
  7048.     Funktion 6 - Ermittle Passwort-Status
  7049.     ───────────────────────────────────────────────────────────────────
  7050.  
  7051.       Eingabe:  AH = 6
  7052.                 (Keine Abfrage des Passwortes!)
  7053.  
  7054.       Ausgabe:  AL = 0 ->> Passwort inaktiv
  7055.                 AL = 1 ->> Passwort aktiv
  7056.  
  7057.  
  7058.  
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.  
  7070.  
  7071.  
  7072.  
  7073.  
  7074.  
  7075.  
  7076.  
  7077.  
  7078.  
  7079.     ────────────────────────────────────────────────────────────────────────────────
  7080.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  110
  7081.  
  7082.  
  7083.  
  7084.     Funktion 7 - Ermittle aktiven Teil von MDEBUG
  7085.     ───────────────────────────────────────────────────────────────────
  7086.  
  7087.       Eingabe:  AH = 7
  7088.                 DS:SI -> Passwort oder ein Null-Byte
  7089.  
  7090.       Ausgabe:  AX = 0FFFEh ->> Passwort inkorrekt
  7091.                 AX = 0FFFDh ->> Bildschirmmodus inkorrekt
  7092.  
  7093.                 sonst:
  7094.  
  7095.                 Bit 0 von AL = 1 ->> der nächste Aufruf von MDEBUG
  7096.                                      startet im Interpreter
  7097.                 Bit 0 von AL = 0 ->> der nächste Aufruf von MDEBUG
  7098.                                      startet im Monitor
  7099.                 Bit 1 von AL = 1 ->> der nächste Aufruf von MDEBUG
  7100.                                      startet in der Online-Hilfe
  7101.                 Bit 1 von AL = 0 ->> der nächste Aufruf von MDEBUG
  7102.                                      startet nicht in der Online-Hilfe
  7103.  
  7104.                 Die  zurückgegebenen  Werte  sind  nur  korrekt,  falls
  7105.                 MDEBUG im Moment nicht aktiv ist.
  7106.  
  7107.  
  7108.     Funktionen 8 bis 0FFh - reserviert
  7109.     ───────────────────────────────────────────────────────────────────
  7110.  
  7111.       Eingabe:  AH = 8
  7112.  
  7113.       Ausgabe:  AX = 0FFFCh ->> unbekannte Funktionsnummer
  7114.  
  7115.  
  7116.     Sonstiges zum User-Int
  7117.     ───────────────────────────────────────────────────────────────────
  7118.  
  7119.     Der Fehler 'Aufruf nicht erlaubt' tritt  auf,  falls das Aktiv-Flag
  7120.     von MDEBUG noch gesetzt ist.  Dies passiert z.B.  falls MDEBUG über
  7121.     einen  nicht zurückkehrenden  Interrupt (23h, 24h, etc.)  verlassen
  7122.     wird.
  7123.     In diesem Fall muß  das Flag durch einen Aufruf von  MDEBUG mit dem
  7124.     Parameter 'SET'  oder durch den  Aufruf der Funktion 05h des  User-
  7125.     Ints mit BL = 0 zurückgesetzt werden.
  7126.  
  7127.  
  7128.  
  7129.  
  7130.  
  7131.  
  7132.  
  7133.  
  7134.  
  7135.  
  7136.  
  7137.  
  7138.  
  7139.     ────────────────────────────────────────────────────────────────────────────────
  7140.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  111
  7141.  
  7142.  
  7143.  
  7144.  
  7145.  
  7146.  
  7147.  
  7148.  
  7149.  
  7150.  
  7151.  
  7152.  
  7153.  
  7154.                                    Anhang A
  7155.  
  7156.                            Fehlermeldungen von MDEBUG
  7157.                            ──────────────────────────
  7158.  
  7159.  
  7160.  
  7161.  
  7162.  
  7163.  
  7164.  
  7165.  
  7166.  
  7167.  
  7168.  
  7169.  
  7170.  
  7171.  
  7172.  
  7173.  
  7174.  
  7175.  
  7176.  
  7177.  
  7178.  
  7179.  
  7180.  
  7181.  
  7182.  
  7183.  
  7184.  
  7185.  
  7186.  
  7187.  
  7188.  
  7189.  
  7190.  
  7191.  
  7192.  
  7193.  
  7194.  
  7195.  
  7196.  
  7197.  
  7198.  
  7199.     ────────────────────────────────────────────────────────────────────────────────
  7200.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  112
  7201.  
  7202.  
  7203.  
  7204.     Fehlermeldungen beim Aufruf von MDEBUG
  7205.     ──────────────────────────────────────
  7206.  
  7207.     Nachfolgend  die Auflistung  aller  möglichen  Fehlermeldungen  von
  7208.     MDEBUG jeweils, falls nötig, inclusive einer kurzen Erläuterung der
  7209.     Fehlerursache.
  7210.  
  7211.     Fehler,  die zum Abbruch des Programms führen, geben zusätzlich die
  7212.     Meldung
  7213.  
  7214.          Programmausführung beendet.
  7215.  
  7216.     aus.
  7217.  
  7218.  
  7219.     ■ Nicht genügend freier Speicher vorhanden!
  7220.  
  7221.       Der  transiente  Teil von MDEBUG  benötigt mindestens 64 K freien
  7222.       Speicher.
  7223.  
  7224.  
  7225.     ■ MDEBUG: Falsche DOS-Version, es ist mindestens Version 3.0 erforderlich!
  7226.  
  7227.       Da in diesem Fall  das  Programm über  den Interrupt  20h beendet
  7228.       wird, kann kein Errorlevel zurückgegeben werden.
  7229.  
  7230.  
  7231.     ■ Der Parameter MAKE ist nur in der Vollversion möglich!
  7232.  
  7233.       Betr.: Parameter MAKE in der Shareware-Version.
  7234.  
  7235.       Bevor der Parameter in der Vollversion genutzt  werden kann,  muß
  7236.       die  Registrierungs-Nummer mit  dem Programm  SETREGNR.EXE in die
  7237.       Datei MDEBUG.COM eingetragen worden sein!
  7238.  
  7239.  
  7240.     ■ MDEBUG: Fehler bei der Speicher-Freigabe!
  7241.               Warnung: Die MCB-Liste kann zerstört sein!
  7242.  
  7243.       Betr.: Parameter EXIT
  7244.  
  7245.       Der Speicher  des  residenten  MDEBUG  konnte  nicht  freigegeben
  7246.       werden.  Da sehr wahrscheinlich die Speicherverwaltung von MS-DOS
  7247.       zerstört ist, sollte das System neu gebootet werden.
  7248.  
  7249.  
  7250.  
  7251.  
  7252.  
  7253.  
  7254.  
  7255.  
  7256.  
  7257.  
  7258.  
  7259.     ────────────────────────────────────────────────────────────────────────────────
  7260.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  113
  7261.  
  7262.  
  7263.  
  7264.     ■ Interrupt Nr. <nn> ist schon belegt!
  7265.  
  7266.       Betr.: Parameter INT
  7267.  
  7268.       Der  Offset- oder  Segment-Wert in  der Interrupt-Tabelle für den
  7269.       angegebenen Interrupt  bzw. der Voreinstellung ist ungleich Null,
  7270.       d.h. MDEBUG geht davon aus, daß er schon belegt ist.
  7271.  
  7272.       Bei  einem Aufruf mit dem Parameter 'SET' wird der User-Int der
  7273.       residenten Version nicht verändert.
  7274.  
  7275.       Der Fehler kann nicht auftreten falls der Parameter 'INT' mit dem
  7276.       Schalter ',N' angegeben wird.
  7277.  
  7278.  
  7279.     ■ MDEBUG: MDEBUG ist nicht letztes Programm in der Interrupt-Kette
  7280.               für den Interrupt 08h!
  7281.               MDEBUG wurde nicht aus dem Speicher entfernt.
  7282.  
  7283.       MDEBUG: MDEBUG ist nicht letztes Programm in der Interrupt-Kette
  7284.               für den Interrupt 09h!
  7285.               MDEBUG wurde nicht aus dem Speicher entfernt.
  7286.  
  7287.       Betr.: Parameter EXIT
  7288.  
  7289.       Nach  MDEBUG  wurde  mindestens  ein Programm  geladen,  daß  den
  7290.       Interrupt 08h  und/oder den Interrupt  09h verbiegt.  Soll MDEBUG
  7291.       aus dem Speicher entfernt werden, müssen  vorher alle nach MDEBUG
  7292.       geladenen Programme,  die einen der  Interrupts 08h oder 09h ver-
  7293.       biegen, entfernt werden.
  7294.  
  7295.  
  7296.     ■ MDEBUG: Das Passwort ist fehlerhaft!
  7297.  
  7298.       Betr.: Parameter EXIT oder SET
  7299.  
  7300.       Es wurde versucht, die Parameter einer mit einem aktivem Passwort
  7301.       installierten  Version von MDEBUG durch  eine  Version  mit einem
  7302.       anderen  oder  nicht-installierten  Passwort  zu ändern (bzw. das
  7303.       Programm aus dem Speicher zu entfernen).
  7304.  
  7305.  
  7306.  
  7307.  
  7308.  
  7309.  
  7310.  
  7311.  
  7312.  
  7313.  
  7314.  
  7315.  
  7316.  
  7317.  
  7318.  
  7319.     ────────────────────────────────────────────────────────────────────────────────
  7320.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  114
  7321.  
  7322.  
  7323.  
  7324.     ■ MDEBUG: Unbekannte Version von MDEBUG installiert!
  7325.  
  7326.       Betr.: Installieren von  MDEBUG oder  ändern einer  installierten
  7327.              Version von MDEBUG
  7328.  
  7329.       Dieser  Fehler  tritt auf,  falls  mehrere  Versionen von  MDEBUG
  7330.       gemischt  verwendet werden  sollen, oder  ein  anderes  speicher-
  7331.       residentes  Programm  mit  dem  Namen  'MDEBUG'  installiert ist.
  7332.       Der Fehler kann auch auftreten,  falls  MDEBUG durch  ein anderes
  7333.       Programm  aus  dem  Speicher entfernt  wurde.  Eine  Installation
  7334.       dieser Version von MDEBUG ist dann nicht möglich.
  7335.  
  7336.  
  7337.     ■ MDEBUG: Falscher Parameter angegeben!
  7338.  
  7339.  
  7340.     ■ MDEBUG: Fehler beim Lesen der Datei <name>
  7341.  
  7342.       Betr.: Parameter &name
  7343.  
  7344.       Der Inhalt des PSP  wird nicht verändert.
  7345.       Der Fehler führt nicht zum Programm-Abbruch.
  7346.  
  7347.  
  7348.     ■ 00000 Bytes aus der Datei <name>
  7349.       nach nnnnh:mmmmh eingelesen
  7350.  
  7351.       Betr.: Parameter &name
  7352.  
  7353.       Dies  ist kein  Fehler als  solcher.  Die Meldung wird  ausgelöst
  7354.       durch  eine  Eingabedatei  für  den  Parameter '&name'  ohne  den
  7355.       Schalter ',N'  bei  der am  Anfang soviele Kommentare stehen, daß
  7356.       der  gesamte  Puffer für  die Datei mit ihnen belegt ist und kein
  7357.       Platz mehr  für den  eigentlichen Dateiinhalt ist. Die Kommentare
  7358.       in der Eingabedatei  sollten deshalb, falls möglich, ans Ende der
  7359.       Datei gestellt werden.
  7360.       Der Fehler führt nicht zum Programm-Abbruch.
  7361.  
  7362.  
  7363.  
  7364.  
  7365.  
  7366.  
  7367.  
  7368.  
  7369.  
  7370.  
  7371.  
  7372.  
  7373.  
  7374.  
  7375.  
  7376.  
  7377.  
  7378.  
  7379.     ────────────────────────────────────────────────────────────────────────────────
  7380.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  115
  7381.  
  7382.  
  7383.  
  7384.     ■ MDEBUG: Fehler beim Schreiben der Datei <name>
  7385.  
  7386.       Betr.: Parameter *name
  7387.  
  7388.       Falls die Datei schon teilweise geschrieben wurde, wird sie nicht
  7389.       gelöscht.
  7390.       Der Fehler führt nicht zum Programm-Abbruch.
  7391.  
  7392.  
  7393.     ■ 00000 Bytes aus dem PSP ab nnnnh:mmmmh in die Datei <name>
  7394.       gespeichert.
  7395.  
  7396.       Betr.: Parameter *name
  7397.  
  7398.       Dies  ist kein Fehler als solcher. Die Meldung  besagt  nur,  daß
  7399.       am  Offset 'mmmm' im PSP der  residenten  Version von  MDEBUG ein
  7400.       Null-Wort steht, daß  von MDEBUG  als Ende-Kennung genommen wird.
  7401.       (da der Schalter ',N' nicht angegeben wurde)
  7402.       Der Fehler führt nicht zum Programm-Abbruch.
  7403.  
  7404.  
  7405.     ■ MDEBUG: Angegebener Name für die Hilfstextdatei ist fehlerhaft!
  7406.     ■ MDEBUG: Hilfstextdatei <name.ext> nicht gefunden.
  7407.     ■ MDEBUG: Fehler beim Lesen der Hilfstextdatei <name.ext>
  7408.     ■ MDEBUG: Die Hilfstextdatei <name.ext> hat ein falsches Format.
  7409.  
  7410.       Betr.: Parameter HELP
  7411.  
  7412.       Der Hilfstext einer residenten Version wird nicht verändert.
  7413.  
  7414.  
  7415.     ■ MDEBUG: Die Hilfstextdatei ist zu groß und wurde nicht vollständig
  7416.               gelesen.
  7417.  
  7418.       Betr.: Parameter HELP
  7419.  
  7420.       Die Online-Hilfe ist trotzdem verfügbar, allerdings nur die voll-
  7421.       ständig geladenen Zeilen der angegebenen Datei.
  7422.       Der Fehler führt nicht zum Programm-Abbruch.
  7423.  
  7424.  
  7425.  
  7426.  
  7427.  
  7428.  
  7429.  
  7430.  
  7431.  
  7432.  
  7433.  
  7434.  
  7435.  
  7436.  
  7437.  
  7438.  
  7439.     ────────────────────────────────────────────────────────────────────────────────
  7440.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  116
  7441.  
  7442.  
  7443.  
  7444.     ■ MDEBUG: Die Hilfstext-Routinen sind in der residenten Version
  7445.               nicht vorhanden!
  7446.  
  7447.       Betr.: Parameter HELP
  7448.  
  7449.       Über  den  Parameter   'HELP'  kann  nur  ein  Hilfstext in  eine
  7450.       residente Version eingelesen werden, falls diese mit Online-Hilfe
  7451.       installiert wurde. (durch  einen  der Parameter 'HELP' oder 'BUF'
  7452.       bei der Erstinstallation)
  7453.  
  7454.  
  7455.     ■ MDEBUG: Der Puffer der residenten Version ist zu klein!
  7456.               Die Hilfstextdatei wurde nicht vollständig gelesen.
  7457.  
  7458.       Betr.: Parameter HELP zur Änderung einer residenten Version
  7459.  
  7460.       Es werden nur die  vollständig gelesenen  Zeilen in die residente
  7461.       Version übernommen.
  7462.       Der Fehler führt nicht zum Programm-Abbruch.
  7463.  
  7464.  
  7465.     ■ MDEBUG: Der Parameter MAKE ist nicht möglich!
  7466.  
  7467.       Betr.: Parameter MAKE
  7468.  
  7469.       Die Parameter
  7470.  
  7471.            'STH', 'SET', 'EXIT', '&name', '*name',
  7472.            '#', 'DEF' und '?'
  7473.  
  7474.       dürfen nicht mit 'MAKE' zusammen angegeben werden.
  7475.  
  7476.  
  7477.     ■ MDEBUG: Fehler beim Löschen von MDEBUG.BAK!
  7478.       MDEBUG: Fehler beim Umbenennen von MDEBUG.COM!
  7479.       MDEBUG: Fehler beim Erstellen von MDEBUG.COM!
  7480.  
  7481.       Betr.: Parameter MAKE
  7482.  
  7483.       Entweder kann die Datei MDEBUG.COM nicht  umbenannt  werden  oder
  7484.       die Datei MDEBUG.BAK kann nicht  gelöscht  werden  oder die Datei
  7485.       MDEBUG.COM kann nicht geschrieben werden.
  7486.  
  7487.  
  7488.  
  7489.  
  7490.  
  7491.  
  7492.  
  7493.  
  7494.  
  7495.  
  7496.  
  7497.  
  7498.  
  7499.     ────────────────────────────────────────────────────────────────────────────────
  7500.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  117
  7501.  
  7502.  
  7503.  
  7504.     ■ MDEBUG: Angegebene Prozessnummer ist fehlerhaft!
  7505.  
  7506.       Betr.: Parameter PRO
  7507.  
  7508.  
  7509.     ■ MDEBUG: Angegebener Wert für das Bildschirmsegment ist fehlerhaft!
  7510.  
  7511.       Betr.: Parameter TEXT
  7512.  
  7513.  
  7514.     ■ MDEBUG: Angegebene Bildschirmseite für den Parameter "text" ist
  7515.               fehlerhaft!
  7516.  
  7517.       Betr.: Parameter TEXT
  7518.  
  7519.  
  7520.     ■ MDEBUG: Der Wert des Parameters REALCURSOR ist fehlerhaft!
  7521.  
  7522.       Betr.: Parameter RealCursor
  7523.  
  7524.       Der Wert für den Parameter RealCursor kann nur 1 oder 0 sein.
  7525.  
  7526.  
  7527.     ■ MDEBUG: Angegebene Puffer-Größe ist fehlerhaft!
  7528.  
  7529.       Betr.: Parameter BUF
  7530.  
  7531.  
  7532.     ■ MDEBUG: Angegebene Interrupt-Nummer ist fehlerhaft!
  7533.  
  7534.       Betr.: Parameter INT
  7535.  
  7536.  
  7537.     ■ MDEBUG: Angegebene Interpreter-Farb-Nummer ist fehlerhaft!
  7538.  
  7539.       Betr.: Parameter CoD
  7540.  
  7541.  
  7542.     ■ MDEBUG: Angegebene Monitor-Farb-Nummer ist fehlerhaft!
  7543.  
  7544.       Betr.: Parameter CoM
  7545.  
  7546.  
  7547.  
  7548.  
  7549.  
  7550.  
  7551.  
  7552.  
  7553.  
  7554.  
  7555.  
  7556.  
  7557.  
  7558.  
  7559.     ────────────────────────────────────────────────────────────────────────────────
  7560.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  118
  7561.  
  7562.  
  7563.  
  7564.     ■ MDEBUG: Angegebene Hilfsfarbe <m> ist fehlerhaft!
  7565.  
  7566.       Betr.: Parameter CoHm
  7567.  
  7568.       <m> wird  durch die  Nummer der Hilfsfarbe, die  geändert  werden
  7569.       sollte ersetzt.
  7570.  
  7571.  
  7572.     ■ MDEBUG: Angegebenes Attribut für den Cursor ist fehlerhaft!
  7573.  
  7574.       Betr.: Parameter CoC
  7575.  
  7576.  
  7577.     ■ MDEBUG: Angegebene Interpreter-Start-Zeile ist fehlerhaft!
  7578.  
  7579.       Betr.: Parameter RoD
  7580.  
  7581.  
  7582.     ■ MDEBUG: Angegebene Monitor-Start-Zeile ist fehlerhaft!
  7583.  
  7584.       Betr.: Parameter RoM
  7585.  
  7586.  
  7587.     ■ MDEBUG: Angegebene Hilfsfenster-Start-Zeile ist fehlerhaft!
  7588.  
  7589.       Betr.: Parameter RoH
  7590.  
  7591.  
  7592.     ■ MDEBUG: Angegebenes Monitor-Segment ist fehlerhaft!
  7593.  
  7594.       Betr.: Parameter SE=nnnn
  7595.  
  7596.  
  7597.     ■ MDEBUG: Angegebenes Register für das Segment des Monitors ist
  7598.               fehlerhaft!
  7599.  
  7600.       Betr.: Parameter SE=reg
  7601.  
  7602.  
  7603.     ■ MDEBUG: Angegebener Monitor-Offset ist fehlerhaft!
  7604.  
  7605.       Betr.: Parameter OF=nnnn
  7606.  
  7607.  
  7608.     ■ MDEBUG: Angegebenes Register für den Offset des Monitors ist
  7609.               fehlerhaft!
  7610.  
  7611.       Betr.: Parameter OF=reg
  7612.  
  7613.  
  7614.  
  7615.  
  7616.  
  7617.  
  7618.  
  7619.     ────────────────────────────────────────────────────────────────────────────────
  7620.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  119
  7621.  
  7622.  
  7623.  
  7624.     ■ MDEBUG: Angegebener Hotkey ist fehlerhaft!
  7625.     ■ MDEBUG: Angegebener Status der Umschalt-Tasten ist fehlerhaft!
  7626.  
  7627.       Betr.: Parameter KEY
  7628.  
  7629.  
  7630.     ■ MDEBUG: Angegebener Dateiname für den Parameter "&name" ist fehlerhaft!
  7631.     ■ MDEBUG: Angegebener Offset für den Parameter "&name" ist fehlerhaft!
  7632.     ■ MDEBUG: Angegebene Länge für den Parameter "&name" ist fehlerhaft!
  7633.     ■ MDEBUG: Angegebener Schalter für den Parameter "&name" ist fehlerhaft!
  7634.  
  7635.       Betr.: Parameter &name
  7636.  
  7637.  
  7638.     ■ MDEBUG: Angegebener Dateiname für den Parameter "*name" ist fehlerhaft!
  7639.     ■ MDEBUG: Angegebener Offset für den Parameter "*name" ist fehlerhaft!
  7640.     ■ MDEBUG: Angegebene Länge für den Parameter "*name" ist fehlerhaft!
  7641.     ■ MDEBUG: Angegebener Schalter für den Parameter "*name" ist fehlerhaft!
  7642.  
  7643.       Betr.: Parameter *name
  7644.  
  7645.  
  7646.     ■ MDEBUG: Das Environment konnte nicht freigegeben werden!
  7647.               MDEBUG wurde nicht installiert!
  7648.  
  7649.  
  7650.     ■ MDEBUG: Das Programm konnte nicht resident gemacht werden!
  7651.               MDEBUG wurde nicht installiert!
  7652.  
  7653.       Dieser  Fehler  kann  nur  auftreten,  falls  der  Interrupt  21h
  7654.       aufgerufen mit der Funktionsnummer  31h  zurückkehrt!  Falls  der
  7655.       Fehler auftritt, wird MDEBUG über die Funktion 4Ch des Interrupts
  7656.       21h beendet (d.h. es bleibt NICHT speicherresident!)
  7657.  
  7658.  
  7659.     ■ MDEBUG: Das Programm konnte nicht korrekt beendet werden!
  7660.               Starte neuen Versuch ...
  7661.  
  7662.       Dieser Fehler kann nur  auftreten,  falls der  Interrupt 21h auf-
  7663.       gerufen mit der Funktionsnummer 4Ch zurückkehrt.  In diesem  Fall
  7664.       versucht MDEBUG sich über den Interrupt 20h zu beenden.
  7665.  
  7666.  
  7667.     ■ Interner Fehler, bitte den Autor kontaktieren!
  7668.  
  7669.  
  7670.  
  7671.  
  7672.  
  7673.  
  7674.  
  7675.  
  7676.  
  7677.  
  7678.  
  7679.     ────────────────────────────────────────────────────────────────────────────────
  7680.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  120
  7681.  
  7682.  
  7683.  
  7684.     Meldungen des Interpreters von MDEBUG
  7685.     ─────────────────────────────────────
  7686.  
  7687.     ■ *** Taste ***
  7688.  
  7689.       Aufforderung des W-Befehls eine Taste zu betätigen.
  7690.  
  7691.  
  7692.     ■ G-Command aktiv
  7693.  
  7694.       Diese Meldung wird angezeigt während ein G-Befehl bearbeitet wird.
  7695.  
  7696.  
  7697.     ■ ! Syntax Error
  7698.  
  7699.       Ein Interpreter-Befehl wurde fehlerhaft eingegeben.
  7700.  
  7701.  
  7702.     ■ ! ESC pressed
  7703.  
  7704.       Der W-Befehl wurde mit der Taste <ESC> quittiert.
  7705.  
  7706.  
  7707.     ■ ! BREAK-key pressed
  7708.  
  7709.       Die BREAK-Taste wurde gedrückt.
  7710.  
  7711.  
  7712.     ■ ! Busy-Flag not Zero
  7713.  
  7714.       Der angegebene Befehl kann nur ausgeführt werden, falls DOS nicht
  7715.       aktiv ist.
  7716.  
  7717.  
  7718.     ■ ! ¿-Command ended
  7719.  
  7720.       Der Wert des Operanden des ¿-Befehls ist gleich 0 (->> FALSE).
  7721.  
  7722.  
  7723.     ■ ! Division by Zero
  7724.  
  7725.       Es wurde versucht, durch Null zu teilen.
  7726.  
  7727.  
  7728.  
  7729.  
  7730.  
  7731.  
  7732.  
  7733.  
  7734.  
  7735.  
  7736.  
  7737.  
  7738.  
  7739.     ────────────────────────────────────────────────────────────────────────────────
  7740.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  121
  7741.  
  7742.  
  7743.  
  7744.     ■ ! 1. COMMAND-Shell aktiv
  7745.  
  7746.       Dieser Fehler tritt auf, falls der von MDEBUG unterbrochene Pro-
  7747.       zess  die oberste  Ebene des aktuellen Shell-Programmes  ist, und
  7748.       versucht wird, diesen über die Taste <CTRL-F10> abzubrechen.
  7749.  
  7750.  
  7751.     ■ ! Invalid C-Driver
  7752.  
  7753.       MDEBUG hat einen  veralteten  Kommandotreiber  in  der Interrupt-
  7754.       Kette für  den  Interrupt  2Fh  ermittelt. MDEBUG  unterdrückt in
  7755.       diesem Fall ALLE Aufrufe aller Kommandotreiber. MDEBUG  überprüft
  7756.       bei  jedem  Aufruf die installierten Kommandotreiber,  so daß der
  7757.       Fehler  durch Entfernen  des veralteten  Kommandotreibers behoben
  7758.       werden kann.
  7759.  
  7760.  
  7761.     ■ ! Invalid G-Driver
  7762.  
  7763.       MDEBUG hat  einen veralteten Bildschirmtreiber  in der Interrupt-
  7764.       Kette  für  den  Interrupt 2Fh  ermittelt. MDEBUG  unterdrückt in
  7765.       diesem Fall ALLE Aufrufe des Bildschirmtreibers. MDEBUG überprüft
  7766.       bei jedem  Aufruf den installierten Bildschirmtreiber, so daß der
  7767.       Fehler  durch Entfernen des veralteten Bildschirmtreibers behoben
  7768.       werden kann.
  7769.  
  7770.  
  7771.     ■ ! Invalid C- and G-Driver
  7772.  
  7773.       Die beiden vorherigen Fehler zusammen sind aufgetreten.
  7774.  
  7775.  
  7776.     ■ ! Not Found
  7777.  
  7778.       Diese Meldung  gibt der SH-Befehl aus, falls der Suchstring nicht
  7779.       gefunden wurde.
  7780.  
  7781.  
  7782.     ■ ! Unknown Error
  7783.  
  7784.       Dieser  Befehl  kann nur  auftreten,  falls  ein  Kommandotreiber
  7785.       einen unbekannten Fehlercode zurückliefert.
  7786.  
  7787.  
  7788.  
  7789.     Weitere Meldungen des Interpreters von MDEBUG
  7790.     ─────────────────────────────────────────────
  7791.  
  7792.     Jeder Kommandotreiber kann  weitere Fehlermeldungen  bereitstellen.
  7793.  
  7794.  
  7795.  
  7796.  
  7797.  
  7798.  
  7799.     ────────────────────────────────────────────────────────────────────────────────
  7800.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  122
  7801.  
  7802.  
  7803.  
  7804.  
  7805.  
  7806.  
  7807.  
  7808.  
  7809.  
  7810.  
  7811.  
  7812.  
  7813.  
  7814.                                    Anhang B
  7815.  
  7816.                                Programm-Interna
  7817.                                ────────────────
  7818.  
  7819.  
  7820.  
  7821.  
  7822.  
  7823.  
  7824.  
  7825.  
  7826.  
  7827.  
  7828.  
  7829.  
  7830.  
  7831.  
  7832.  
  7833.  
  7834.  
  7835.  
  7836.  
  7837.  
  7838.  
  7839.  
  7840.  
  7841.  
  7842.  
  7843.  
  7844.  
  7845.  
  7846.  
  7847.  
  7848.  
  7849.  
  7850.  
  7851.  
  7852.  
  7853.  
  7854.  
  7855.  
  7856.  
  7857.  
  7858.  
  7859.     ────────────────────────────────────────────────────────────────────────────────
  7860.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  123
  7861.  
  7862.  
  7863.  
  7864.     Hinweise für die Fehlersuche - Trouble-Shooting
  7865.     ───────────────────────────────────────────────
  7866.  
  7867.     Falls bei der Arbeit mit MDEBUG ein  Fehler  auftritt, bitte zuerst
  7868.     einmal die  nachfolgenden Informationen  durchlesen und überprüfen,
  7869.     ob der Fehler damit gefunden werden kann:
  7870.  
  7871.     ■ Es finden  keinerlei  Überprüfungen statt,  ob eine Lese/Schreib-
  7872.       operation über eine Segment-Adresse geht.
  7873.  
  7874.       Falls z.B. das  Wort  an der Adresse nnnn:0FFFFh gelesen wird, so
  7875.       wird das Lowbyte von der Adresse nnnn:0FFFFh und das Highbyte von
  7876.       der Adresse nnnn:0000 gelesen.
  7877.  
  7878.       Allerdings  berücksichtigt  MDEBUG,  daß  die Prozessoren  ab dem
  7879.       80286  einen Wortzugriff  über eine  Segmentgrenze  nicht korrekt
  7880.       ausführen und teilt deshalb wortweise Speicherzugriffe in jeweils
  7881.       zwei byteweise Speicherzugriffe.
  7882.  
  7883.  
  7884.     ■ Ein Aufruf über den Hotkey sollte nicht  während einer Disketten-
  7885.       oder Plattenoperation (->> LED des Laufwerkes ist an) erfolgen!
  7886.  
  7887.  
  7888.     ■ Das Trap-Flag sollte bei der Benutzung von MDEBUG  immer gelöscht
  7889.       sein.  Ansonsten sind die Auswirkungen  der Befehle nicht vorher-
  7890.       sehbar (bis hin zum Systemabsturz!).
  7891.  
  7892.  
  7893.     ■ Ein  'INT 021'-Befehl sollte nur gegeben  werden, wenn  das Busy-
  7894.       Flag auf 0 steht, d.h. DOS nicht aktiv ist.  Ausgenommen  hiervon
  7895.       sind  nur die  wiedereintrittsfähigen  Funktionen  des Interrupts
  7896.       21h, bei MS-DOS 3.3 die Funktionen 33h, 50h, 51h, 62h, und 64h.
  7897.  
  7898.       Da der COMMAND.COM zum  Lesen der  Eingaben die Funktion 0Ah  des
  7899.       Interrupts 21h benutzt, ist, falls der COMMAND.COM aktiv ist, das
  7900.       DOS-Busy-Flag gesetzt bis ein Befehl oder ein Programm ausgeführt
  7901.       wird.
  7902.  
  7903.  
  7904.  
  7905.  
  7906.  
  7907.  
  7908.  
  7909.  
  7910.  
  7911.  
  7912.  
  7913.  
  7914.  
  7915.  
  7916.  
  7917.  
  7918.  
  7919.     ────────────────────────────────────────────────────────────────────────────────
  7920.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  124
  7921.  
  7922.  
  7923.  
  7924.     ■ MDEBUG benutzt im  Initialisierungsteil  folgende undokumentierte
  7925.       Funktionen des Interrupt 21h:
  7926.  
  7927.            ■ Funktion  52h:  Ermittle Adresse des DOS-Info-Blocks (DIB)
  7928.                              Ausgabe: ES:BX -> DIB (= 'List of Lists')
  7929.       und
  7930.            ■ Funktion  34h:  Ermittle Adresse des DOS-Busy-Flags
  7931.                              Ausgabe (ab DOS 3.0):
  7932.                                       ES:BX   -> DOS-Busy-Flag (1 Byte)
  7933.                                       ES:BX-1 -> Critical-Error-Flag
  7934.                                                  (1 Byte)
  7935.  
  7936.  
  7937.     ■ MDEBUG wertet das aktuelle PSP, aus um zu  ermitteln, ob der beim
  7938.       Aufruf  unterbrochene   Prozess  die  oberste  Ebene  des  SHELL-
  7939.       Prozesses (normalerweise das Programm COMMAND.COM) ist.
  7940.  
  7941.       Zur  Ermittlung der  aktuellen PSP-Adresse wird die Unterfunktion
  7942.       62h des Interrupt 21h benutzt.  Diese ist immer möglich, d.h. sie
  7943.       kann auch aufgerufen werden, falls DOS schon aktiv ist.
  7944.  
  7945.       Der  COMMAND.COM  (oder  jeder andere  Kommando-Interpreter, z.B.
  7946.       4DOS.COM) ist das einzige Programm,  dessen Loader-Identifikation
  7947.       im PSP (Wort, Offset 16h) auf das eigene Code-Segment zeigt.
  7948.  
  7949.       Bei allen  anderen Programmen  enthält die  Loader-Identifikation
  7950.       das Segment des Programmes, welches das Programm aufgerufen hat.
  7951.       (im Normalfall das Segment des COMMAND.COM)
  7952.  
  7953.       Abgebrochen  wird  das  Programm  dann  über die Funktion 4Ch des
  7954.       Interrupt 21h. Diese ist zwar NICHT reentrant, da aber eine evtl.
  7955.       unterbrochene  Funktion des  Interrupts 21h  sowieso  nicht  mehr
  7956.       beendet wird, ist dies in diesem Fall egal.
  7957.  
  7958.  
  7959.    ■  MDEBUG  benutzt  im  residenten Teil  (außer  den o.a. Ausnahmen)
  7960.       keine Funktionen des DOS-Interrupts 21h.
  7961.  
  7962.  
  7963.     ■ MDEBUG  ermittelt seinen aktuellen Namen und das Directory in dem
  7964.       die Datei 'MDEBUG.COM' steht aus dem Environment. Das Segment des
  7965.       Environments steht im PSP beim Offset 2Ch.
  7966.  
  7967.  
  7968.  
  7969.  
  7970.  
  7971.  
  7972.  
  7973.  
  7974.  
  7975.  
  7976.  
  7977.  
  7978.  
  7979.     ────────────────────────────────────────────────────────────────────────────────
  7980.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  125
  7981.  
  7982.  
  7983.  
  7984.     ■ Zum Lesen und  Setzen von  Interrupt-Vektoren im transienten Teil
  7985.       werden nur die Funktionen 25h und 35h des Interrupts 21h benutzt.
  7986.  
  7987.  
  7988.     ■ MDEBUG arbeitet in allen Bildschirmmodi mit mindestens 80 Zeichen
  7989.       pro Zeile und mindestens 25 Zeilen pro Seite.
  7990.  
  7991.       MDEBUG ermittelt  alle  Bildschirm-Werte im  residenten Teil über
  7992.       das  BIOS-Segment. Der Interrupt 10h wird  im residenten Teil nur
  7993.       für das  Sichern und  Restaurieren  des Original-Cursors  benutzt
  7994.       (falls  dies  nicht  über den  Parameter  'RealCursor=0' verboten
  7995.       wird).
  7996.  
  7997.       Zur  Vermeidung eines Fehlers in manchen  älteren BIOSsen sichert
  7998.       MDEBUG  vor jedem  Aufruf des Interrupt 10h den Inhalt des Regis-
  7999.       ters BP.
  8000.  
  8001.       MDEBUG wertet  zur Ermittlung der Bildschirm-Werte  die folgenden
  8002.       Speicherstellen aus:
  8003.  
  8004.       ┌─────────────┬─────────┬────────────────────────────────────┐
  8005.       │ Adresse     │ Länge   │  Inhalt                            │
  8006.       ╞═════════════╪═════════╪════════════════════════════════════╡
  8007.       │ 0040h:0049h │  1 Byte │  Videomodus                        │
  8008.       │ 0040h:004Ah │  1 Wort │  Anzahl der Bildschirmspalten      │
  8009.       │ 0040h:004Ch │  1 Wort │  Länge einer Bildschirmseite       │
  8010.       │ 0040h:004Eh │  1 Wort │  Offset der akt. Bildschirmseite   │
  8011.       │ 0040h:0050h │  8 Byte │  Array der Cursorpositionen        │
  8012.       │ 0040h:0060h │  1 Wort │  Cursorform                        │
  8013.       │ 0040h:0062h │  1 Byte │  aktuelle Bildschirmseite          │
  8014.       │ 0040h:0063h │  1 Wort │  I/O-Basisadresse des              │
  8015.       │             │         │  Videocontrollers                  │
  8016.       │ 0040h:0065h │  1 Byte │  Inhalt des CRT-Modusregisters     │
  8017.       │ 0040h:0084h │  1 Byte │  Anzahl der Zeilen pro Seite -1    │
  8018.       └─────────────┴─────────┴────────────────────────────────────┘
  8019.  
  8020.       Die Anzahl  der Zeilen  pro Seite wird über das Byte  bei 40h:84h
  8021.       ermittelt. Falls der Inhalt dieser Speicherstelle ungleich 0 ist,
  8022.       wird er zur Ermittlung der Anzahl  Zeilen pro Seite genommen. Ist
  8023.       der Wert gleich 0, so geht MDEBUG von 25 Zeilen pro Seite aus.
  8024.  
  8025.       Das Byte  bei 40h:84h  enthält  bei CGA- und HGC-Karten normaler-
  8026.       weise 0, bei EGA- und VGA-Karten aber die Anzahl der Zeilen/Seite
  8027.       minus 1.  Da es  auch  HGC/CGA-Karten  mit  der  Möglichkeit  zur
  8028.       Darstellung von mehr als 25 Zeilen  gibt, wird hier nicht auf die
  8029.       Existenz einer EGA- oder VGA-Karte getestet.
  8030.  
  8031.  
  8032.  
  8033.  
  8034.  
  8035.  
  8036.  
  8037.  
  8038.  
  8039.     ────────────────────────────────────────────────────────────────────────────────
  8040.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  126
  8041.  
  8042.  
  8043.  
  8044.       Wenn die  aktuelle  Seite durch den Parameter 'TEXT' explizit an-
  8045.       gegeben ist, geht MDEBUG  immer von einem Bildschirm-Modus mit 80
  8046.       Zeichen pro Zeile und 25 Zeilen pro Seite aus.
  8047.  
  8048.       Bei Hercules-Karten  wird der Modus (Graphik oder Text)  über das
  8049.       CRT-Modusregister und  über das  Lightpen-Register (Datenregister
  8050.       10h des Video-Controllers) ermittelt.
  8051.  
  8052.       Als Bildschirmsegment wird bei Hercules-Karten B000h und für alle
  8053.       anderen Karten B800h genommen.
  8054.  
  8055.       Die Daten des aktuellen Bildschirmmodi  werden nach  jedem Aufruf
  8056.       über  den Hotkey,  den User-Int,  dem  automatischen Aufruf (über
  8057.       die  Taste  <ALT-F5>)  oder  einen  extra-Interrupt und  nach dem
  8058.       Betätigen der Taste <ALT-F9> ermittelt.
  8059.  
  8060.       Alle Ausgaben erfolgen direkt in den Bildschirmspeicher.
  8061.  
  8062.       Für Fehlermeldungen im Interpreter wird das Bit 7 des  Farbattri-
  8063.       buts  gesetzt. Je nach dem aktuellen Modus der Graphik-Karte wird
  8064.       damit  eine  blinkende  Anzeige oder  eine  helle  Farbe  für die
  8065.       Fehlermeldung gewählt.
  8066.  
  8067.  
  8068.     ■ Akustische Ausgaben erfolgen direkt über die Ports 42h und 43h.
  8069.  
  8070.  
  8071.     ■ MDEBUG setzt vorraus, daß  zeitkritische Interrupt-Routinen dafür
  8072.       sorgen,  daß sie nicht unterbrochen werden können (durch CLI- und
  8073.       STI-Befehle).
  8074.  
  8075.  
  8076.     ■ Ein Aufruf über den Hotkey wird über den Interrupt 9h erkannt.
  8077.       Der  eigentliche Aufruf  von MDEBUG erfolgt aber in der Routine
  8078.       für den Interrupt 8h (indirekter Aufruf).
  8079.  
  8080.  
  8081.  
  8082.  
  8083.  
  8084.  
  8085.  
  8086.  
  8087.  
  8088.  
  8089.  
  8090.  
  8091.  
  8092.  
  8093.  
  8094.  
  8095.  
  8096.  
  8097.  
  8098.  
  8099.     ────────────────────────────────────────────────────────────────────────────────
  8100.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  127
  8101.  
  8102.  
  8103.  
  8104.       Die Routine für den Interrupt 9h geht von folgenden Port-Adressen
  8105.       aus:
  8106.  
  8107.       ┌──────┬─────────────────────────────────────────────────────┐
  8108.       │ Port │ Bedeutung                                           │
  8109.       ╞══════╪═════════════════════════════════════════════════════╡
  8110.       │  60h │ Datenport der Tastatur                              │
  8111.       │  61h │ Statusport der Tastatur für die Acknowledge-Meldung │
  8112.       │  20h │ Statusport des Interrupt-Controllers für die EOI-   │
  8113.       │      │ Meldung (EOI-Meldung = 20h)                         │
  8114.       └──────┴─────────────────────────────────────────────────────┘
  8115.  
  8116.       MDEBUG unterscheidet hierbei nicht  zwischen einer 'normalen' und
  8117.       einer MF2- oder AT-Tastatur.
  8118.  
  8119.  
  8120.     ■ Der  Interrupt-Handler für  den Interrupt  9h fängt, falls MDEBUG
  8121.       aktiv ist,  die  Tasten <CTRL-C>, <CTRL-2> und  <CTRL-BREAK> bzw.
  8122.       <CTRL-ScorllLock>  komplett  ab.  D.h.  diese Tasten  können auch
  8123.       in einem Kommandotreiber NICHT verwendet werden!
  8124.  
  8125.  
  8126.     ■ Alle Tastatureingaben werden von MDEBUG über eine interne Routine
  8127.       ermittelt, d.h. MDEBUG benutzt nicht den Interrupt 16h.
  8128.  
  8129.       TSR-Programme, die  den Aufruf  über den  Interrupt 16h erkennen,
  8130.       können daher während eines Aufrufes von MDEBUG  also nur über den
  8131.       Interpreter-Befehl
  8132.  
  8133.        'MOV AH,0  ^ INT 16'  bzw. 'MOV AH,10 ^ INT 16'
  8134.  
  8135.       (oder einen äquivalenten G- bzw. B-Befehl) aufgerufen werden.
  8136.  
  8137.       Ausnahme hiervon:
  8138.  
  8139.       Ab  DOS 5.0 benutzt MDEBUG wieder  den Interrupt 16h benutzt,  da
  8140.       ansonsten ein  Aufruf von MDEBUG  nicht  möglich ist,  falls  die
  8141.       Shell  von DOS  aktiv ist. MDEBUG benutzt  in  diesem Fall, falls
  8142.       möglich, d.h. von der Routine für den Interrupt 16h  unterstützt,
  8143.       die Funktionen 10h,  11h und 12h für die Ermittlung der Tastatur-
  8144.       eingaben.  Falls  die Funktionen  1xh vom BIOS nicht  unterstützt
  8145.       werden, verwendet MDEBUG die alten Funktionen 0h, 01h und 02h.
  8146.       MDEBUG überprüft nur einmal im Initialisierungsteil ob die erwei-
  8147.       terten Funktionen 1xh verwendet werden können!
  8148.  
  8149.  
  8150.  
  8151.  
  8152.  
  8153.  
  8154.  
  8155.  
  8156.  
  8157.  
  8158.  
  8159.     ────────────────────────────────────────────────────────────────────────────────
  8160.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  128
  8161.  
  8162.  
  8163.  
  8164.       MDEBUG  sichert  während eines Aufrufs  alle Daten  der Tastatur-
  8165.       verwaltung. Dies sind folgende Speicherstellen:
  8166.  
  8167.       ┌─────────────┬─────────┬────────────────────────┐
  8168.       │ Adresse     │ Länge   │ Inhalt                 │
  8169.       ╞═════════════╪═════════╪════════════════════════╡
  8170.       │ 0040h:001Ah │  1 Wort │ Tastatur-Head-Pointer  │
  8171.       │ 0040h:001Ch │  1 Wort │ Tastatur-Tail-Pointer  │
  8172.       │ 0040h:001Eh │ 32 Byte │ Tastatur-Puffer        │
  8173.       │ 0040h:0080h │  1 Wort │ Tastatur-Puffer-Anfang │
  8174.       │ 0040h:0082h │  1 Wort │ Tastatur-Puffer-Ende   │
  8175.       └─────────────┴─────────┴────────────────────────┘
  8176.  
  8177.  
  8178.     ■ MDEBUG belegt die Interrupt-Vektoren  09h (Hardware-Interrupt für
  8179.       die Tastatur) und 08h (Hardware-Interrupt für die Uhr)  und evtl.
  8180.       einen der Interrupts zwischen 60h und 67h als User-Int.
  8181.  
  8182.       Während  der Installierung  von MDEBUG und  während eines Aufrufs
  8183.       zur Änderung der Werte eine residenten  Version  werden  außerdem
  8184.       die  Interruptvektoren  1Bh,  23h  und  24h  temporär  auf eigene
  8185.       Routinen umgeleitet. Die  Interrupt-Vektoren  23h und  24h werden
  8186.       nicht wieder zurückgesetzt (macht DOS bei Programm-Ende).
  8187.  
  8188.       Ein  Programmabbruch  während  des  Aufrufes  von  MDEBUG.COM zur
  8189.       Installation  bzw.  Änderung  einer residenten  Version  über die
  8190.       Tasten <CTRL-C>  oder  <CTRL-Break>  ist nicht möglich, kritische
  8191.       Fehler (MS-DOS: Retry, Ignore, Abort) werden abgefangen.
  8192.  
  8193.  
  8194.     ■ MDEBUG  benutzt einen  eigenen Stack.  Dieser  ist mit 100 Worten
  8195.       deklariert.  Da  der Stack  direkt hinter dem PSP liegt, wird bei
  8196.       einem  Stack-Überlauf  aber  zuerst das -  von  MDEBUG nicht mehr
  8197.       benötigte  -  PSP von MDEBUG überschrieben, so das  sich die max.
  8198.       Stack-Größe mit
  8199.  
  8200.            200 + 3 (JMP-Befehl) + 256 (PSP) = 459 Bytes = 229 Worte
  8201.  
  8202.       ergibt.
  8203.  
  8204.       Bisher haben  sich aber  die 100 Worte für  den Stack  als völlig
  8205.       ausreichend erwiesen.
  8206.  
  8207.  
  8208.  
  8209.  
  8210.  
  8211.  
  8212.  
  8213.  
  8214.  
  8215.  
  8216.  
  8217.  
  8218.  
  8219.     ────────────────────────────────────────────────────────────────────────────────
  8220.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  129
  8221.  
  8222.  
  8223.  
  8224.     ■ Der Code  zur  Ausführung von G-, B- und I-Befehlen wird  jeweils
  8225.       neu ermittelt  und in den Programmcode eingepatcht (selbstmodifi-
  8226.       zierender Code).
  8227.  
  8228.       MDEBUG benutzt  zusätzlich noch in einigen internen  Routinen aus
  8229.       Geschwindigkeits-Gründen selbstmodifizierenden Code.
  8230.  
  8231.  
  8232.     ■ Für Routinen zur Überprüfung, ob MDEBUG installiert ist gilt:
  8233.  
  8234.       Alle  folgenden  Versionen (auch diese) schreiben in ihren MCB ab
  8235.       dem Offset 08h den Namen des Programms ('MDEBUG  ').
  8236.  
  8237.       Ab  DOS 4.00  wird dies  schon vom Betriebssystem so gemacht; bei
  8238.       DOS-Versionen  vor Version 4.00  ist  dieser  Speicherbereich un-
  8239.       genutzt.
  8240.  
  8241.       Die Versionen werden sich nur durch die Versionskennung, die über
  8242.       den User-Int zurückgegeben wird, unterscheiden lassen.
  8243.  
  8244.       Der User-Int wird immer ein Interrupt zwischen 60h und 67h sein.
  8245.  
  8246.       Direkt  vor der Routine für  den User-Int  -  d.h. der Einsprung-
  8247.       Stelle der  Interrupt-Routine - wird immer  die Kennung 'USERINT'
  8248.       stehen.
  8249.       Die bestehenden  Funktionen des User-Interrupts werden  auf jeden
  8250.       Fall beibehalten;  Erweiterungen des Funktionsumfanges  sind aber
  8251.       möglich.
  8252.  
  8253.  
  8254.     ■ MDEBUG  und  alle Utils  geben alle Meldungen und Fehlermeldungen
  8255.       des transienten Teils über die Funktion 40h des Interrupt 21h auf
  8256.       die Standard-Ausgabe aus. Sollte dabei ein Fehler auftreten (z.B.
  8257.       falls die Ausgabe in eine Datei umgelenkt wird), so  werden  alle
  8258.       Meldungen auf  das Error-Handle 2 ausgegeben.  Sollte  auch  dies
  8259.       nicht möglich  sein, so  unterdrücken MDEBUG  und alle  Utils die
  8260.       restlichen Meldungen während der Ausführung.
  8261.  
  8262.       Ausgenommen hiervon ist nur die Fehlermeldung, die bei einer ver-
  8263.       alteten DOS-Version ausgegeben wird. Diese wird über die Funktion
  8264.       09h des Interrupts 21h ausgegeben.
  8265.  
  8266.  
  8267.     ■ MDEBUG und  alle  residenten Utils und Treiber schließen  vor dem
  8268.       Beenden des transienten  Teils alle offenen Handles und geben ihr
  8269.       Environment frei.
  8270.  
  8271.  
  8272.  
  8273.  
  8274.  
  8275.  
  8276.  
  8277.  
  8278.  
  8279.     ────────────────────────────────────────────────────────────────────────────────
  8280.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  130
  8281.  
  8282.  
  8283.  
  8284.     Stack-Überlauf
  8285.     ──────────────
  8286.  
  8287.     Falls bei Benutzung von MDEBUG  ein  'Interner Stapelüberlauf'  das
  8288.     System   zum Absturz  bringt (erst  ab  DOS-Version 3.3), muß  nach
  8289.     dem  Neustart  des Computers in  der Datei CONFIG.SYS der Wert  für
  8290.     den  STACKS-Befehl erhöht  oder  auf  0,0  gesetzt  werden und  das
  8291.     System neu gebootet werden. (siehe DOS-Handbuch)
  8292.  
  8293.     Dies  kann  passieren,  falls über MDEBUG  öfter  Prozesse  während
  8294.     der Ausführung  einer  Interrupt-Routine  abgebrochen werden. Falls
  8295.     der  abgebrochene  Interrrupt von der STACK-Verwaltung  noch unter-
  8296.     stützt  wird,  ist  der dem  unterbrochenem  Interrupt  zugeordnete
  8297.     STACK-Frame dann immer  noch als belegt gekennzeichnet und kann von
  8298.     der STACK-Verwaltung nicht mehr verwendet werden.
  8299.  
  8300.     Falls  MDEBUG über  den  Hotkey aufgerufen  wurde und der Interrupt
  8301.     9h immer  noch  über  die  Stack-Verwaltung  läuft, ist der  STACK-
  8302.     Frame der  dem Interrupt   9h beim Aufruf zugeordnet war, ebenfalls
  8303.     von der STACK-Verwaltung nicht  mehr verwendbar. Gleiches gilt beim
  8304.     Aufruf von MDEBUG  über den  Interrupt   8h nach dem Verlassen  von
  8305.     MDEBUG über  <ALT-F5>  falls  der  Interrupt  8h auch noch über die
  8306.     STACK-Verwaltung läuft.
  8307.  
  8308.     Zur Vermeidung dieses  Problems, sollte der Abbruch eines Prozesses
  8309.     über <CTRL-F10> nur  äußerst  sparsam verwendet  werden. Vorbeugend
  8310.     sollte  mit dem  Programm  FREESTCK die STACK-Frames nach  mehreren
  8311.     Abbrüchen  jeweils  korrigiert  werden.  FREESTCK  benötigt   keine
  8312.     Parameter oder Benutzer-Eingaben; es läuft erst ab DOS 3.3.
  8313.  
  8314.     Aufruf von FREESTCK:
  8315.  
  8316.          FREESTCK <RETURN>
  8317.  
  8318.  
  8319.  
  8320.  
  8321.  
  8322.  
  8323.  
  8324.  
  8325.  
  8326.  
  8327.  
  8328.  
  8329.  
  8330.  
  8331.  
  8332.  
  8333.  
  8334.  
  8335.  
  8336.  
  8337.  
  8338.  
  8339.     ────────────────────────────────────────────────────────────────────────────────
  8340.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  131
  8341.  
  8342.  
  8343.  
  8344.     Tastatur-Codes
  8345.     ──────────────
  8346.  
  8347.     Als Funktionstasten  werden von MDEBUG alle Tasten gewertet, die im
  8348.     Lowbyte des  Scancodes einen  der Werte 00h, 0E0h oder 0F0h und im
  8349.     Highbyte des Scancodes einen Wert ungleich 00h zurückliefern.  Das 
  8350.     Lowbyte wird allerdings nicht weiter berücksichtigt.
  8351.  
  8352.     Die ASCII-Zeichen 0E0h und 0F0h müssen  über die Tasten-Kombination 
  8353.     <ALT-ASCIICode> eingegeben werden,  wobei MDEBUG davon ausgeht, daß
  8354.     das Highbyte in diesem Fall 0 ist.
  8355.  
  8356.     Von MDEBUG erwartete Tastatur-Codes der Funktions-Tasten:
  8357.     ('xxh' steht für 00h, E0h oder F0h)
  8358.  
  8359.     ┌──────────────────────────────┬───────┬─────────┬───────┬────────┐
  8360.     │ Taste  [NumLock aus] mit ... │       │  SHIFT  │ CTRL  │  ALT   │
  8361.     ╞══════════════════════════════╪═══════╪═════════╪═══════╪════════╡
  8362.     │ <PgDn>                       │ 51xxh │         │ 76xxh │ A1xxh  │
  8363.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8364.     │ <PgUp>                       │ 49xxh │         │ 48xxh │ 99xxh  │
  8365.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8366.     │ <Home>                       │ 47xxh │         │ 77xxh │        │
  8367.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8368.     │ <End>                        │ 4Fxxh │         │ 75xxh │        │
  8369.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8370.     │ <CursorLeft>                 │ 4Bxxh │         │ 73xxh │        │
  8371.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8372.     │ <CursorRight>                │ 4Dxxh │         │ 74xxh │        │
  8373.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8374.     │ <CursorUp>                   │ 48xxh │         │ 8Dxxh │ 98xxh  │
  8375.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8376.     │ <CursorDown>                 │ 50xxh │         │ 91xxh │ A0xxh  │
  8377.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8378.     │ <Insert>                     │ 52xxh │         │       │        │
  8379.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8380.     │ <Delete>                     │ 53xxh │         │       │        │
  8381.     └──────────────────────────────┴───────┴─────────┴───────┴────────┘
  8382.  
  8383.  
  8384.  
  8385.  
  8386.  
  8387.  
  8388.  
  8389.  
  8390.  
  8391.  
  8392.  
  8393.  
  8394.  
  8395.  
  8396.  
  8397.  
  8398.  
  8399.     ────────────────────────────────────────────────────────────────────────────────
  8400.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  132
  8401.  
  8402.  
  8403.  
  8404.     ┌──────────────────────────────┬───────┬─────────┬───────┬────────┐
  8405.     │ Taste                mit ... │       │  SHIFT  │ CTRL  │  ALT   │
  8406.     ╞══════════════════════════════╪═══════╪═════════╪═══════╪════════╡
  8407.     │ <F1>                         │ 3Bxxh │ 54xxh   │ 5Exxh │ 68xxh  │
  8408.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8409.     │ <F2>                         │ 3Cxxh │ 55xxh   │ 5Fxxh │ 69xxh  │
  8410.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8411.     │ <F3>                         │ 3Dxxh │ 56xxh   │ 60xxh │ 6Axxh  │
  8412.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8413.     │ <F4>                         │ 3Exxh │ 57xxh   │ 61xxh │ 6Bxxh  │
  8414.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8415.     │ <F5>                         │ 3Fxxh │ 58xxh   │ 62xxh │ 6Cxxh  │
  8416.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8417.     │ <F6>                         │ 40xxh │ 59xxh   │ 63xxh │ 6Dxxh  │
  8418.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8419.     │ <F7>                         │ 41xxh │ 5Axxh   │ 64xxh │ 6Exxh  │
  8420.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8421.     │ <F8>                         │ 42xxh │ 5Bxxh   │ 65xxh │ 6Fxxh  │
  8422.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8423.     │ <F9>                         │ 43xxh │ 5Cxxh   │ 66xxh │ 70xxh  │
  8424.     ├──────────────────────────────┼───────┼─────────┼───────┼────────┤
  8425.     │ <F10>                        │ 44xxh │ 5Dxxh   │ 67xxh │ 71xxh  │
  8426.     └──────────────────────────────┴───────┴─────────┴───────┴────────┘
  8427.  
  8428.  
  8429.     Die folgenden  Tasten können nur in der Online-Hilfe benutzt werden
  8430.     und  können  dafür nicht umdefiniert werden  (wohl  aber im Monitor
  8431.     oder Interpreter):
  8432.  
  8433.     ┌──────────┬──────────────────────────────────────────────────────┐
  8434.     │          │                Eingabe über                          │
  8435.     │          ├────────────────────┬─────────────────────────────────┤
  8436.     │          │   die oberste      │ <ALT-n> mit n im externen       │
  8437.     │  Taste   │   Tastenreihe      │      Nummernblock               │
  8438.     ╞══════════╪════════════════════╪═════════════════════════════════╡
  8439.     │ <ALT-1>  │    7800h           │          0001h                  │
  8440.     │ <ALT-2>  │    7900h           │          0002h                  │
  8441.     │ <ALT-3>  │    7A00h           │          0003h                  │
  8442.     │ <ALT-4>  │    7B00h           │          0004h                  │
  8443.     │ <ALT-5>  │    7C00h           │          0005h                  │
  8444.     │ <ALT-6>  │    7D00h           │          0006h                  │
  8445.     │ <ALT-7>  │    7E00h           │          0007h                  │
  8446.     │ <ALT-8>  │    7F00h           │          0008h                  │
  8447.     │ <ALT-9>  │    8000h           │          0009h                  │
  8448.     └──────────┴────────────────────┴─────────────────────────────────┘
  8449.  
  8450.  
  8451.  
  8452.  
  8453.  
  8454.  
  8455.  
  8456.  
  8457.  
  8458.  
  8459.     ────────────────────────────────────────────────────────────────────────────────
  8460.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  133
  8461.  
  8462.  
  8463.  
  8464.     Make-Code der Aufruf-Taste
  8465.     ──────────────────────────
  8466.  
  8467.     MDEBUG erwartet folgende Make-Codes für die Hotkey-Taste:
  8468.  
  8469.     ┌─────────────┬───────────┐          ┌─────────────┬───────────┐
  8470.     │ ASCII-Code  │ Make-Code │          │ ASCII-Code  │ Make-Code │
  8471.     ╞═════════════╪═══════════╡          ╞═════════════╪═══════════╡
  8472.     │    'A'      │     1Eh   │          │    'N'      │     31h   │
  8473.     │    'B'      │     30h   │          │    'O'      │     18h   │
  8474.     │    'C'      │     2Eh   │          │    'P'      │     19h   │
  8475.     │    'D'      │     20h   │          │    'Q'      │     10h   │
  8476.     │    'E'      │     12h   │          │    'R'      │     13h   │
  8477.     │    'F'      │     21h   │          │    'S'      │     1Fh   │
  8478.     │    'G'      │     22h   │          │    'T'      │     14h   │
  8479.     │    'H'      │     23h   │          │    'U'      │     16h   │
  8480.     │    'J'      │     17h   │          │    'V'      │     2Fh   │
  8481.     │    'I'      │     24h   │          │    'W'      │     11h   │
  8482.     │    'K'      │     25h   │          │    'X'      │     2Dh   │
  8483.     │    'L'      │     26h   │          │    'Y'      │     2Ch   │
  8484.     │    'M'      │     32h   │          │    'Z'      │     15h   │
  8485.     └─────────────┴───────────┘          └─────────────┴───────────┘
  8486.  
  8487.  
  8488.  
  8489.  
  8490.  
  8491.  
  8492.  
  8493.  
  8494.  
  8495.  
  8496.  
  8497.  
  8498.  
  8499.  
  8500.  
  8501.  
  8502.  
  8503.  
  8504.  
  8505.  
  8506.  
  8507.  
  8508.  
  8509.  
  8510.  
  8511.  
  8512.  
  8513.  
  8514.  
  8515.  
  8516.  
  8517.  
  8518.  
  8519.     ────────────────────────────────────────────────────────────────────────────────
  8520.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  134
  8521.  
  8522.  
  8523.  
  8524.     Verträglichkeit gegenüber anderen Programmen
  8525.     ────────────────────────────────────────────
  8526.  
  8527.  
  8528.     ■ Bei Aufruf von MDEBUG über den Hotkey während WORD läuft, wird im
  8529.       Graphikmodus kein akustisches Signal ausgegeben.
  8530.       Zudem kommt MDEBUG der Tastaturverwaltung  von WORD ins Gehege so
  8531.       daß ein Aufruf von MDEBUG falls WORD läuft unterbleiben sollte.
  8532.  
  8533.     ■ Ein  Maustreiber wird  von MDEBUG  nicht ausgeschaltet; eine Maus
  8534.       hat in MDEBUG aber keine Funktion.
  8535.  
  8536.     ■ Da MDEBUG die normalerweise von Debuggern benutzten Interrupts 01
  8537.       und 03 nicht benutzt,  ist der  Aufruf  von MDEBUG aus 'normalen'
  8538.       Debuggern heraus problemlos möglich.
  8539.  
  8540.     ■ Bei manchen  DOS-Versionen  3.2 ist teilweise  schon  eine Stack-
  8541.       Verwaltung wie ab DOS 3.3 implementiert.  Hier  lautet der Befehl
  8542.       für die Datei CONFIG.SYS aber 'STACK=n,m'.
  8543.       (siehe Stack-Überlauf).
  8544.       Das Programm FREESTCK.COM läuft aber erst ab DOS 3.3.
  8545.  
  8546.     ■ MDEBUG läuft auch unter 4DOS ab Version 3.0 fehlerfrei.
  8547.  
  8548.     ■ Falls ein Aufruf  von MDEBUG  abgebrochen wird,  z.B. durch einen
  8549.       Befehl  wie 'INT 20 <RETURN>', sind die  Tastenkombination <CTRL-
  8550.       ScrollLock> bzw. <CTRL-BREAK>, <CTRL-C> und <CTRL-2> blockiert.
  8551.       Der Fehler kann durch den Aufruf von MDEBUG mit dem Parameter SET
  8552.       behoben werden.
  8553.  
  8554.     ■ MDEBUG läuft auch unter DOS 5.0 fehlerfrei.
  8555.  
  8556.       Ausnahme:
  8557.  
  8558.       Falls der Swapper von DOS 5.0 aktiv ist,  kann  (muß aber nicht!)
  8559.       ein Aufruf  von MDEBUG das System zum Absturz bringen.  Der Grund
  8560.       dieses  Fehlers  ist mir,  aufgrund fehlender  Dokumentation  zum
  8561.       Swapper, leider noch nicht bekannt.
  8562.  
  8563.  
  8564.  
  8565.  
  8566.  
  8567.  
  8568.  
  8569.  
  8570.  
  8571.  
  8572.  
  8573.  
  8574.  
  8575.  
  8576.  
  8577.  
  8578.  
  8579.     ────────────────────────────────────────────────────────────────────────────────
  8580.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  135
  8581.  
  8582.  
  8583.  
  8584.  
  8585.  
  8586.  
  8587.  
  8588.  
  8589.  
  8590.  
  8591.  
  8592.  
  8593.  
  8594.                                    Anhang C
  8595.  
  8596.                             Installieren von MDEBUG
  8597.                             ───────────────────────
  8598.  
  8599.  
  8600.  
  8601.  
  8602.  
  8603.  
  8604.  
  8605.  
  8606.  
  8607.  
  8608.  
  8609.  
  8610.  
  8611.  
  8612.  
  8613.  
  8614.  
  8615.  
  8616.  
  8617.  
  8618.  
  8619.  
  8620.  
  8621.  
  8622.  
  8623.  
  8624.  
  8625.  
  8626.  
  8627.  
  8628.  
  8629.  
  8630.  
  8631.  
  8632.  
  8633.  
  8634.  
  8635.  
  8636.  
  8637.  
  8638.  
  8639.     ────────────────────────────────────────────────────────────────────────────────
  8640.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  136
  8641.  
  8642.  
  8643.  
  8644.     Installieren von MDEBUG
  8645.     ───────────────────────
  8646.  
  8647.     Normalerweise kann  MDEBUG sofort  ohne  eine Installation  genutzt
  8648.     werden.
  8649.  
  8650.     Allerdings ist es in der Vollversion von MDEBUG möglich, eine Kopie
  8651.     von  MDEBUG.COM, in  der  die Voreinstellungen  für die wichtigsten
  8652.     Parameter den eigenen  Wünschen angepasst sind, zu erstellen.
  8653.  
  8654.     MDEBUG muß dazu mit dem Parameter 'MAKE' und den  neuen Voreinstel-
  8655.     lungen  für  die  zu ändernden Parameter aufgerufen werden.
  8656.  
  8657.     Falls z.B. die  Farbattribute  für den  Monitor und den Interpreter
  8658.     geändert werden sollen, lautet der Aufruf:
  8659.  
  8660.          MDEBUG MAKE CoD=3E CoM=47
  8661.  
  8662.     MDEBUG  erstellt  dann eine neue Kopie der Datei MDEBUG.COM in  der
  8663.     die  Voreinstellungen  für  die  beiden  angegebenen Parameter ent-
  8664.     sprechend geändert sind. Alle anderen Voreinstellungen werden hier-
  8665.     durch nicht  verändert.  Ein  eventuell installiertes Passwort wird
  8666.     ebenfalls nicht verändert.
  8667.  
  8668.     Natürlich  können beim Aufruf der  neu erstellten  Kopie von MDEBUG
  8669.     durch die explizite Angabe der Parameter die geänderten Voreinstel-
  8670.     lungen  wieder  überschrieben  werden. Es  ist  auch  ohne weiteres
  8671.     möglich, eine so erstellte  Kopie von MDEBUG noch mal mit dem Para-
  8672.     meter 'MAKE' zur Änderung der neuen Voreinstellungen aufzurufen.
  8673.  
  8674.     Geändert werden können die Voreinstellungen für folgende Parameter:
  8675.  
  8676.          'INT', 'KEY', 'STD', 'STM',
  8677.          'CoM', 'CoD', 'CoHm', 'CoC'
  8678.          'RoM', 'RoD', 'RoH',
  8679.          'SEG=nnnn', 'SEG=reg', 'OFF=nnnn', 'OFF=reg',
  8680.          'TEXT', 'GRAPH', 'REALCURSOR', 'PRO',
  8681.          'LOAD', 'HELP', 'NOHELP' und 'BUF'.
  8682.  
  8683.  
  8684.  
  8685.  
  8686.  
  8687.  
  8688.  
  8689.  
  8690.  
  8691.  
  8692.  
  8693.  
  8694.  
  8695.  
  8696.  
  8697.  
  8698.  
  8699.     ────────────────────────────────────────────────────────────────────────────────
  8700.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  137
  8701.  
  8702.  
  8703.  
  8704.     Ändern der Tastenbelegung von MDEBUG
  8705.     ────────────────────────────────────
  8706.  
  8707.     Mit Hilfe der Ausgaben von MDEBUG bei der Angabe des Parameters '#'
  8708.     kann die Tastenbelegung von MDEBUG den eigenen  Wünschen  angepasst
  8709.     werden.
  8710.  
  8711.     Die Ausgabe des Parameters '#' sieht wie folgt aus (verkürzt):
  8712.     (Die  Ausgabe sollte in eine Datei gelenkt werden;  die angegebenen
  8713.      Offsets können bei der aktuellen Version von MDEBUG anders lauten!
  8714.      Falls Sie die Beispiele  nachvollziehen wollen,  verwenden Sie die
  8715.      Tabellen,  die über den  Parameter '#' ausgegeben werden und nicht
  8716.      die hier wieder gegebenen!!)
  8717.  
  8718.     ────────────────────────────────────────────────────────────────────────────
  8719.  
  8720.     Offsets der Variablen für die Tastaturverwaltung in MDEBUG
  8721.     (im geladenem Programm -> in MDEBUG.COM jeweils -0100h)
  8722.  
  8723.     Offset der Tabelle mit dem High-Bytes der Funktions-Tasten: 1167h
  8724.     Aufbau der Tabelle:
  8725.  
  8726.      Offset in der     Funktionstaste       Inhalt
  8727.      Tabelle
  8728.     ------------------------------------------------
  8729.          00h              <CTRL-F1>           5Eh
  8730.          01h              <CTRL-PgUp>         84h
  8731.          {...}
  8732.          26h              <ALT-CursorDown>    A0h
  8733.          27h              <ALT-CursorUp>      98h
  8734.          28h              <ALT-PageUp>        99h
  8735.          29h              <ALT-PageDown>      A1h
  8736.  
  8737.     Offset der Tabelle mit den Scancodes für den Aufruf über den Hotkey: 1127h
  8738.     Aufbau der Tabelle:
  8739.  
  8740.      Offset in der     Taste    Inhalt
  8741.        Tabelle
  8742.     --------------------------------------------
  8743.           00h           <A>       1Eh
  8744.           01h           <B>       30h
  8745.           {...}
  8746.           19h           <Z>       15h
  8747.  
  8748.  
  8749.  
  8750.  
  8751.  
  8752.  
  8753.  
  8754.  
  8755.  
  8756.  
  8757.  
  8758.  
  8759.     ────────────────────────────────────────────────────────────────────────────────
  8760.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  138
  8761.  
  8762.  
  8763.  
  8764.     Offset der Tastenkodierungstabelle (alt) für den Interpreter: 1141h
  8765.     Offset der Tastenkodierungstabelle (neu) für den Interpreter: 1154h
  8766.     Länge der Tabellen: 0013h
  8767.     Aufbau der Tabellen:
  8768.  
  8769.     Offset in den      Inhalt (alt)       Inhalt (neu)
  8770.       Tabellen
  8771.     ---------------------------------------------------
  8772.         00h              <CTRL-O> ------>> <|>
  8773.         01h              <ä> ----------->> <«>
  8774.         {...}
  8775.         12h              <X> ----------->> <X>
  8776.  
  8777.     ────────────────────────────────────────────────────────────────────────────
  8778.  
  8779.     Mit  Hilfe dieser  Tabellen kann nun die Tastenbelegung  von MDEBUG
  8780.     den eigenen  Wünschen angepasst  werden.
  8781.  
  8782.     Dies  ist  vor  allen dann  nötig, falls eine von  MDEBUG erwartete
  8783.     Funktionstaste auf Ihren Computer unterdrückt wird (sei  es von der
  8784.     Tastatur oder vom Tastaturtreiber).
  8785.  
  8786.     Erkennbar  ist dieser  Fall daran,  daß  nach  dem Betätigen  einer
  8787.     Funktionstaste in MDEBUG nicht die gewünwschte Aktion  erfolgt.  In
  8788.     diesem Fall sollten Sie zuerst in MDEBUG über die Befehlsfolge
  8789.  
  8790.          MOV AH,0 ^I 16 <RETURN> { entsprechende Funktionstaste drücken}
  8791.  
  8792.     oder  falls  die  Funktion 10h  von der  Interrupt-Routine  für den
  8793.     Interrupt 16h unterstüzt wird:
  8794.  
  8795.          MOV AH,10 ^I 16 <RETURN> { entsprechende Funktionstaste drücken}
  8796.  
  8797.     den Scancode dieser Taste ermitteln (steht  nach der  Ausführung im
  8798.     Register AX) und mit den von MDEBUG erwarteten Code vergleichen.
  8799.  
  8800.     Stimmt der ermittelte Wert nicht mit dem von MDEBUG erwarteten Wert
  8801.     überein, müssen Sie  nach den  unten angeführten  Verfahren den von
  8802.     MDEBUG  erwarteten  Scancode für die Taste  korrigieren.  Falls der
  8803.     Wert übereinstimmt,  empfielt  sich  die  nochmalige  Lektüre  über
  8804.     die Funktion der Taste  in der Dokumentation - denn  dann haben Sie
  8805.     sehr wahrscheinlich irgend etwas falsch gemacht.
  8806.  
  8807.  
  8808.  
  8809.  
  8810.  
  8811.  
  8812.  
  8813.  
  8814.  
  8815.  
  8816.  
  8817.  
  8818.  
  8819.     ────────────────────────────────────────────────────────────────────────────────
  8820.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  139
  8821.  
  8822.  
  8823.  
  8824.     Hinweis:
  8825.  
  8826.     Falls Sie einen Tastaturtreiber  verwenden, der die neuen Tastatur-
  8827.     codes ab DOS 3.2  nicht  unterstützt,  sind umfangreiche Änderungen
  8828.     der Tastenbelegung erforderlich. In diesem Fall sollten  Sie  einen
  8829.     anderen Tastaturtreiber verwenden  (möglichst  einen, von  dem auch
  8830.     der Quellcode erhältlich ist)
  8831.     Ich  empfehle  für  diesen Fall  den Tastaturtreiber K3.COM aus der
  8832.     c't 7/88.  Dieser ist  inclusive  Assembler-Quellcode  über die c't
  8833.     erhältlich.
  8834.  
  8835.  
  8836.     Beispiel:
  8837.  
  8838.     Die Tasten  <ALT-CursorUp> und  <ALT-CursorDown>  liefern auf Ihrer
  8839.     Tastatur  keinen Code. Sie möchten deshalb für diese Funktionen die
  8840.     Tasten <ALT-E> und <ALT-X> verwenden.
  8841.  
  8842.     Um dies zu realisieren gehen Sie folgendermaßen vor:
  8843.  
  8844.     Zuerst muß  der  Scancode  der  neuen  Tasten  ermittelt werden. Im
  8845.     Interpreter von MDEBUG kann dies folgendermaßen erfolgen:
  8846.  
  8847.     Geben Sie den Befehl
  8848.  
  8849.          MOV AH,0 ^I 16 <RETURN>
  8850.  
  8851.     ein und drücken Sie die entsprechende  Taste. Notieren Sie den Wert
  8852.     aus AX, dies ist der benötigte Scancode der neuen Taste.
  8853.  
  8854.     Hinweis:
  8855.  
  8856.     Alle Tasten,  die  in MDEBUG  als Funktionstasten  verwendet werden
  8857.     sollen, müssen im LowByte den Wert 0h, 0E0h oder 0F0h liefern. Dies
  8858.     sind die meisten Funktionstasten und ALT-<zeichen>-Kombinationen.
  8859.  
  8860.     Diesen Vorgang wiederholen Sie für alle neuen Tasten.
  8861.     Um im Beispiel fortzufahren gehen wir von folgenden Werten aus:
  8862.  
  8863.           <ALT-E>  - Scancode 1200h
  8864.           <ALT-X>  - Scancode 2D00h
  8865.  
  8866.  
  8867.  
  8868.  
  8869.  
  8870.  
  8871.  
  8872.  
  8873.  
  8874.  
  8875.  
  8876.  
  8877.  
  8878.  
  8879.     ────────────────────────────────────────────────────────────────────────────────
  8880.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  140
  8881.  
  8882.  
  8883.  
  8884.     Ermitteln Sie aus der Tabelle von MDEBUG den  Offset der Funktions-
  8885.     tasten-Tabelle ('Tabelle mit dem High-Bytes der Funktions-Tasten'),
  8886.     im  Beispiel  ist  der Wert 1167h.  Dann  muß  aus der  angezeigten
  8887.     Tabelle der  Offset der umzubelegenden Tasten entnommen  werden. Im
  8888.     Beispiel ist das für die Taste  <ALT-CursorDown> 26 (hex.!) und für
  8889.     die Taste <ALT-CursorUp> 27 (hex). Ermitteln Sie nun für jede Taste
  8890.     den  Offset  in MDEBUG  indem Sie  den Offset  der Tabelle plus dem
  8891.     Offset der Taste in der Tabelle nehmen.
  8892.  
  8893.     Hier: <ALT-CursorDown> : 1167h + 26h = 118Dh
  8894.           <ALT-CursorUp>   : 1167h + 27h = 118Eh
  8895.  
  8896.  
  8897.     Nun starten Sie von der DOS-Ebene aus den DOS-Debugger Debug mit
  8898.  
  8899.          DEBUG MDEBUG.COM <RETURN>
  8900.  
  8901.     Jetzt  kann  für jede  zu  ändernde  Taste  über  den  Debug-Befehl
  8902.     'e nnnn'  die  jeweilige  Belegung  von  MDEBUG geändert werden. Im
  8903.     Beispiel  wäre  das (die Kommentare hinter ';' bitte nicht mit ein-
  8904.     geben)
  8905.  
  8906.     - für <ALT-CursorDown>
  8907.  
  8908.          e 118D <RETURN>   ; ermittelte Adresse der Funktionstaste
  8909.          2D     <RETURN>   ; neuer Scancode
  8910.                 <RETURN>
  8911.  
  8912.     - für <ALT-CursorUp>
  8913.  
  8914.          e 118E <RETURN>   ; ermittelte Adresse der Funktionstaste
  8915.          12     <RETURN>   ; neuer Scancode
  8916.                 <RETURN>
  8917.  
  8918.    Nachdem  Sie so  alle  Belegungen angepasst haben, schreiben Sie die
  8919.    geänderte Datei mit dem Befehl
  8920.  
  8921.          w <RETURN>
  8922.  
  8923.     zurück auf die Diskette/Platte.  Beachten Sie bitte, daß  Sie keine
  8924.     anderen  Speicherstellen  im  Programm  verändern  und  während der
  8925.     Debugsitzung auch keine Register über Debugbefehle verändern.
  8926.  
  8927.  
  8928.  
  8929.  
  8930.  
  8931.  
  8932.  
  8933.  
  8934.  
  8935.  
  8936.  
  8937.  
  8938.  
  8939.     ────────────────────────────────────────────────────────────────────────────────
  8940.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  141
  8941.  
  8942.  
  8943.  
  8944.     Verlassen Sie Debug über den Befehl
  8945.  
  8946.     q <RETURN>
  8947.  
  8948.  
  8949.     Durch den erneuten Aufruf von  MDEBUG mit dem  Parameter '#' können
  8950.     Sie nun überprüfen,  ob die Änderungen gelungen sind.
  8951.  
  8952.     Bei den angeführten  Verfahren sind folgende  Punkte zu berücksich-
  8953.     tigen:
  8954.  
  8955.     1. Die Änderungen sollten  natürlich  nur an einer Kopie von MDEBUG
  8956.        durchgeführt werden!
  8957.  
  8958.     2. Ein  Scancode  darf  nicht  zweimal vorkommen.  Sollte dies doch
  8959.        einmal  vorkommen, wird von MDEBUG nur die letzte  Angabe in der
  8960.        Tabelle berücksichtigt. Die vorherigen Angaben werden ignoriert.
  8961.        Dies  kann aber  genutzt werden,  um eine bestimmte Funktion von
  8962.        MDEBUG zu unterbinden.
  8963.  
  8964.        Beispiel:
  8965.  
  8966.        Falls für die Taste  <CLRL-F10> der Scancode einer Taste  die in
  8967.        der Tabelle NACH dieser kommt eingesetzt wird, z.B. der Scancode
  8968.        der  Taste <F5>, so wird die Funktion, die der Taste  <CTRL-F10>
  8969.        zugeordnet ist, nie ausgeführt.
  8970.  
  8971.        Gleiches erreicht man natürlich auch dadurch, daß  man einen nie
  8972.        vorkommenden Scancode einsetzt.
  8973.  
  8974.     3. Die  neue Tastenbelegung  sollte auch  in der  Datei  MDHELP.INP
  8975.        geändert werden und diese dann neu übersetzt werden.
  8976.  
  8977.     4. Die Codes der folgenden Tasten sollten nicht verändert werden:
  8978.        <F1>, <F4>, <F10>, <CursorRight> und <CursorLeft>.
  8979.  
  8980.  
  8981.     Weiteres Beispiel:
  8982.  
  8983.     Sie  möchten die Umbelegung der Taste <CTRL-O> aufheben, da Sie das
  8984.     Zeichen '|' auch anders erzeugen können.
  8985.  
  8986.     Dazu muß  die Tastenkodierungstabelle (neu)  oder  die Tastenkodie-
  8987.     rungstabelle (alt) verändert werden
  8988.  
  8989.  
  8990.  
  8991.  
  8992.  
  8993.  
  8994.  
  8995.  
  8996.  
  8997.  
  8998.  
  8999.     ────────────────────────────────────────────────────────────────────────────────
  9000.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  142
  9001.  
  9002.  
  9003.  
  9004.     Im Beispiel verändern wir die  Tastenkodierungstabelle (alt), indem
  9005.     wir die Umbelegung elimieren.
  9006.  
  9007.     Zuerst ermitteln Sie wieder den Offset der benötigten Tabelle, hier
  9008.     1141h, und den Offset der zu ändernden Tastenbelegung in der Tabel-
  9009.     le, hier 00h.
  9010.  
  9011.     Danach werden beide Werte wieder addiert um den Offset in MDEBUG zu
  9012.     ermitteln, also
  9013.  
  9014.          1141h + 00h = 1141h
  9015.  
  9016.     Die Änderung an  sich geschieht wieder über das Programm Debug.
  9017.     (Aufruf: debug MDEBUG.COM <RETURN>).
  9018.  
  9019.     Zur  Eliminierung  der Belegung  reicht es  aus, das  entsprechende
  9020.     Zeichen  in der Tastentabelle (alt) mit dem entsprechenden  Zeichen
  9021.     in der Tastentabelle neu (also '|') zu überschreiben.
  9022.  
  9023.     Die Debug-Befehle hierfür lauten:
  9024.  
  9025.          e 1141 <RETURN>
  9026.          7C     <RETURN>   ; 7Ch = ASCII-Code von '|'
  9027.                 <RETURN>
  9028.  
  9029.     Danach  kann die  geänderte  Version  von  MDEBUG  wieder zurückge-
  9030.     schrieben und Debug verlassen werden.
  9031.  
  9032.          w      <RETURN>
  9033.          q      <RETURN>
  9034.  
  9035.  
  9036.     Bei den angeführten  Verfahren sind  folgende Punkte zu berücksich-
  9037.     tigen:
  9038.  
  9039.     1. Die Änderungen sollten  natürlich  nur an einer Kopie von MDEBUG
  9040.        durchgeführt werden!
  9041.  
  9042.     2. Die neue  Tastenbelegung  sollte  auch  in  der Datei MDHELP.INP
  9043.        geändert werden  und diese dann neu übersetzt werden.
  9044.  
  9045.     3. Über diese beiden Tabellen können nur 'normale Tasten' (->> Low-
  9046.        Byte  des Scancodes ist ungleich 0) und nur im Interpreter umbe-
  9047.        legt werden.
  9048.  
  9049.  
  9050.  
  9051.  
  9052.  
  9053.  
  9054.  
  9055.  
  9056.  
  9057.  
  9058.  
  9059.     ────────────────────────────────────────────────────────────────────────────────
  9060.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  143
  9061.  
  9062.  
  9063.  
  9064.     4. Die Einträge am  Ende der  Tabelle (X <-> X) sind für neue Umbe-
  9065.        legungen durch den Benutzer reserviert.  Für eine  neue Belegung
  9066.        muß  in der Tastentabelle (alt) am gewünschten  Offset die umzu-
  9067.        belegende  Taste und  am  gleichen  Offset in der  Tastentabelle
  9068.        (neu) die neue Belegung eingetragen werden.
  9069.  
  9070.        Beachten  Sie  bitte,  daß  auch  hier  Sie selbst  dafür sorgen
  9071.        müssen,  daß  in der Tastentabelle (alt) keine Zeichen  mehrfach
  9072.        vorkommen.  In  der  Tastentabelle  (neu)  hingegen  kann  jedes
  9073.        Zeichen  beliebig oft vorkommen. Da  die Tabelle  nur einmal pro
  9074.        Taste  von  MDEBUG  konsultiert  wird, ist  eine  Rekursion  bei
  9075.        Tastenbelegungen wie
  9076.  
  9077.             'A' -> 'B'
  9078.             'B' -> 'A'
  9079.  
  9080.        ausgeschlossen.
  9081.  
  9082.     5. Die  Konvertierung über  die Tastentabellen erfolgt VOR der Kon-
  9083.        vertierung  eines  Zeichens  in  Großbuchstaben. Ein umkodiertes
  9084.        Zeichen wird NICHT mehr in Großbuchstaben konvertiert.
  9085.        Falls also, z.B., das  Zeichen 'a' öfters gebraucht wird, reicht
  9086.        der  Eintrag  von  'a' als alte und neue Tastenbelegung  in  den
  9087.        Tabellen aus um die Konvertierung von 'a' in 'A' zu unterbinden.
  9088.        D.h.  die  Eingabe  von 'a'  ist dann ohne die vorherige Eingabe
  9089.        des Prefix-Zeichens <CTRL-P> möglich.
  9090.  
  9091.  
  9092.     Weiteres Beispiel:
  9093.  
  9094.     Änderungen in der Tabelle  mit  den Scancodes sollten normalerweise
  9095.     nicht vorgenommen  werden.
  9096.  
  9097.     Temporäre Umbelegungen der Tasten  lassen sich sinnvollerweise über
  9098.     einen Kommandotreiber realisieren.
  9099.  
  9100.     Falls  diese Änderungen über einen Hex-Editor  direkt in der  Datei
  9101.     MDEBUG.COM durchgeführt werden, müssen von allen Offsets die MDEBUG
  9102.     ausgibt jeweils 100h abgezogen werden!
  9103.  
  9104.     Die angegebenen Verfahren  zum Anpassen  von MDEBUG sind zwar etwas
  9105.     umständlich,  aber  da sie im  Normalfall  nur einmal  durchgeführt
  9106.     werden ist dies m.E. noch erträglich.
  9107.  
  9108.  
  9109.  
  9110.  
  9111.  
  9112.  
  9113.  
  9114.  
  9115.  
  9116.  
  9117.  
  9118.  
  9119.     ────────────────────────────────────────────────────────────────────────────────
  9120.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  144
  9121.  
  9122.  
  9123.  
  9124.  
  9125.  
  9126.  
  9127.  
  9128.  
  9129.  
  9130.  
  9131.  
  9132.  
  9133.  
  9134.  
  9135.                                    Anhang D
  9136.  
  9137.                    Utilities und Beispieldateien zu MDEBUG
  9138.                    ───────────────────────────────────────
  9139.  
  9140.                                 Hinweis:
  9141.  
  9142.               Die mit dem Zeichen (VV) gekennzeichneten Dateien
  9143.             bzw. Programme sind nur in der Vollversion enthalten.
  9144.  
  9145.               Die Beschreibung der mitgelieferten Kommando- und
  9146.                  Bildschirmtreiber befindet sich in der Datei
  9147.                               'DRIVER.PRT'
  9148.  
  9149.  
  9150.  
  9151.  
  9152.  
  9153.  
  9154.  
  9155.  
  9156.  
  9157.  
  9158.  
  9159.  
  9160.  
  9161.  
  9162.  
  9163.  
  9164.  
  9165.  
  9166.  
  9167.  
  9168.  
  9169.  
  9170.  
  9171.  
  9172.  
  9173.  
  9174.  
  9175.  
  9176.  
  9177.  
  9178.  
  9179.     ────────────────────────────────────────────────────────────────────────────────
  9180.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  145
  9181.  
  9182.  
  9183.  
  9184.     MDEBUG.HLP
  9185.  
  9186.     Hilfstextdatei für MDEBUG
  9187.     'MDEBUG.HLP'  enthält den Hilfstext für die Online-Hilfe von MDEBUG
  9188.     in komprimierter Form.
  9189.  
  9190.     Die Datei wird beim Start  von MDEBUG mit dem Parameter 'HELP' ohne
  9191.     Angabe einer Hilfstextdatei einmal eingelesen und danach nicht mehr
  9192.     benötigt.
  9193.     Falls der Parameter 'HELP' ohne den  Zusatz '=name' angegeben wird,
  9194.     muß sich die Datei MDEBUG.HLP im  aktuellen Verzeichnis oder in dem
  9195.     Verzeichnis, in dem die Datei MDEBUG.COM residiert befinden.
  9196.  
  9197.  
  9198.     MDHELP.INP  (VV)
  9199.  
  9200.     Quelldatei zur Erstellung von MDEBUG.HLP
  9201.  
  9202.  
  9203.     MDMKHLP.COM  (VV)
  9204.  
  9205.     MDMKHLP.COM  ist ein  Programm zur  Erstellung einer Hilfstextdatei
  9206.     für die Online-Hilfe von MDEBUG.
  9207.  
  9208.     Aufruf:
  9209.  
  9210.     MDMKHLP eingabedatei ausgabedatei {/N} {/I} {/S} {/B} {/Q} {@}
  9211.  
  9212.     Die Parameter haben folgende Bedeutungen:
  9213.  
  9214.     /N - Ausgabedatei nicht komprimieren
  9215.  
  9216.     Falls  der Parameter /N nicht angegeben ist,  wird die Ausgabedatei
  9217.     komprimiert,  ansonsten  werden  die  Zeilen der  Eingabedatei nach
  9218.     einer Syntaxüberprüfung unkomprimiert übernommen. MDEBUG kann beide
  9219.     Formate anzeigen,  aber das  unkomprimierte Format belegt natürlich
  9220.     mehr Speicher.
  9221.  
  9222.     /I - Sonderzeichen bei der Anzeige nicht interpretieren
  9223.  
  9224.     Falls  der Parameter '/I' angegeben ist, werden  alle Sonderzeichen
  9225.     in der  Ausgabedatei  mit dem Prefix-Zeichen versehen, so daß  eine
  9226.     Interpretierung bei  der Anzeige  in MDEBUG unterbleibt. Kommentare
  9227.     in der Eingabedatei werden dann ebenfalls in die Ausgabedatei über-
  9228.     nommen.
  9229.  
  9230.  
  9231.  
  9232.  
  9233.  
  9234.  
  9235.  
  9236.  
  9237.  
  9238.  
  9239.     ────────────────────────────────────────────────────────────────────────────────
  9240.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  146
  9241.  
  9242.  
  9243.  
  9244.     /B - Befehle für MDMKHLP nicht interpretieren
  9245.  
  9246.     /S - Zeilen mit mehr als 80 Zeichen umbrechen.
  9247.  
  9248.     Wenn  der Parameter '/S' angegeben  ist, können die Zeilen der Aus-
  9249.     gabedatei  maximal 254 Zeichen  lang werden.  Ohne den Parameter /S
  9250.     dürfen die Zeilen der Ausgabedatei nur bis zu 80 Zeichen lang sein.
  9251.  
  9252.     /Q - Meldungen und Warnungen unterdrücken
  9253.  
  9254.     @  - Kommentar, der Rest der Parameter wird überlesen
  9255.  
  9256.  
  9257.     Die Ein- und  Ausgabedateien müssen in der angegebenen  Reihenfolge
  9258.     angegeben werden; alle  anderen Parameter sind  optional und können
  9259.     hinter den  Dateinamen  in beliebiger Reihenfolge  angegeben werden
  9260.     (ausgenommen das Zeichen für den Kommentar '@').
  9261.  
  9262.     Falls die Datei ausgabedatei schon existiert, wird sie ohne Warnung
  9263.     überschrieben.  Eine  leere Ausgabeatei, d.h. ohne den eigentlichen
  9264.     Hilfstext, kann nicht erstellt werden.
  9265.  
  9266.     eingabedatei  muß  eine Textdatei mit jeweils  durch das Zeichen CR
  9267.     oder  die Zeichen-Kombination  CR/LF  abgeschlossenen  Zeilen sein.
  9268.     Alle  anderen ASCII-Steuerzeichen  (z.B. Tabulatoren)  werden nicht
  9269.     interpretiert.
  9270.     Jede Zeile der Eingabedatei kann max. 254 Zeichen lang sein.
  9271.  
  9272.     Die maximale Länge einer Zeile für die Ausgabedatei (also die Länge
  9273.     der  Zeile  der Eingabedatei  abzüglich  der Control-  und  Prefix-
  9274.     Zeichen  bis zu  einem  Kommentar-Zeichen, bzw.  bis  zum Ende  der
  9275.     Zeile, falls kein Kommentar-Zeichen  vorhanden ist), ist 80.
  9276.     Längere  Zeilen führen  zu einem  Syntaxfehler und zum Abbruch  des
  9277.     Programms (falls nicht der Parameter '/S angegeben ist).
  9278.  
  9279.     Die max. Größe  der Eingabedatei ist nicht beschränkt, die Ausgabe-
  9280.     datei kann max. 64 K groß  werden. Allerdings  muß die Beschränkung
  9281.     der  Puffergröße  von  MDEBUG  beachtet  werden,  falls die gesamte
  9282.     Datei in MDEBUG eingelesen werden soll.
  9283.  
  9284.     Das Zeichen '@' gilt als Kommentar-Zeichen; d.h. jede Zeile der
  9285.     Eingabedatei wird nur bis zum ersten '@' übernommen.  Soll das Zei-
  9286.     chen '@' in  die Ausgabedatei  übernommen  werden, so  muß  es  mit
  9287.     einem vorangestellten Prefix-Zeichen versehen werden.
  9288.  
  9289.  
  9290.  
  9291.  
  9292.  
  9293.  
  9294.  
  9295.  
  9296.  
  9297.  
  9298.  
  9299.     ────────────────────────────────────────────────────────────────────────────────
  9300.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  147
  9301.  
  9302.  
  9303.  
  9304.     Folgende Zeichen  gelten  als Sonderzeichen und werden bei der Aus-
  9305.     gabe der Datei in MDEBUG interrpetiert:
  9306.  
  9307.     # - Prefix-Zeichen, das folgende Zeichen wird uninterpretiert über-
  9308.         nommen
  9309.  
  9310.     ^ - Control-Zeichen,  falls das  folgende Zeichen im  Intervall von
  9311.         'A' bis 'Z' (bzw. 'a'...'z') ist, wird es in den entsprechenden
  9312.         CTRL-Code umgewandelt. Ansonsten wird das Zeichen  '^' so über-
  9313.         nommen. (Beispiel: '^A' = 01h, '^B' = 02h, usw.)
  9314.  
  9315.     $ - Umschalten  auf die  Farbe  2  bzw. zurück auf die  Farbe 1 und
  9316.         Ausgabe eines Leerzeichens
  9317.  
  9318.     ! - Umschalten  auf die  Farbe  3  bzw. zurück auf die  Farbe 1 und
  9319.         Ausgabe eines Leerzeichens
  9320.  
  9321.     Ein Nullbyte darf in der Eingabedatei  nicht vorkommen!  Jede Zeile
  9322.     der Eingabedatei muß mit CR/LF oder CR enden (auch die letzte!).
  9323.  
  9324.     Die  Control- und Prefix-Zeichen  sollten  bei der Formatierung der
  9325.     Zeilen berücksichtigt werden, sie dürfen  nicht ohne Prefix-Zeichen
  9326.     am Ende einer Zeile stehen. Falls ein Sonderzeichen in die Ausgabe-
  9327.     datei als Zeichen  übernommen  werden soll, muß  es mit dem Prefix-
  9328.     Zeichen versehen werden. (z.B. '##' für '#')
  9329.  
  9330.     Zu  Anfang jeder Zeile wird auf die Ausgabe-Farbe 1 geschaltet.
  9331.     Leerzeilen  werden in den Hilfstext übernommen;  Zeilen die nur aus
  9332.     einem  Kommentar bestehen (->> 1. Zeichen der Zeile ist '@') werden
  9333.     vollständig überlesen.
  9334.  
  9335.     Die  erste zu übernehmende  Zeile der  Eingabedatei wird  als Über-
  9336.     schrift genommen und beim Scrollen des Hilfstextes in  MDEBUG immer
  9337.     angezeigt.  Ein Rahmen um den  Hilfstext muß   Bestandteil der Ein-
  9338.     gabedatei sein, falls er angezeigt werden soll.
  9339.  
  9340.     Alle Zeilen der Eingabedatei,  die mit  einem Punkt  in der  ersten
  9341.     Spalte  beginnen, werden als Befehl für  MDMKHLP  angesehen. Hinter
  9342.     einem korrekten Befehl kann noch ein beliebiger  Text als Kommentar
  9343.     stehen. Die Befehle setzen evtl. anders angegebene Parameter  außer
  9344.     Kraft.
  9345.  
  9346.  
  9347.  
  9348.  
  9349.  
  9350.  
  9351.  
  9352.  
  9353.  
  9354.  
  9355.  
  9356.  
  9357.  
  9358.  
  9359.     ────────────────────────────────────────────────────────────────────────────────
  9360.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  148
  9361.  
  9362.  
  9363.  
  9364.     Folgende Befehle sind implementiert:
  9365.  
  9366.     .Mn     mit 1 <= n <= 9
  9367.  
  9368.     Mit  diesem Befehl  kann  ein Marker mit  der Adresse der folgenden
  9369.     Zeile  als Voreinstellung belegt  werden. Für jeden Marker kann nur
  9370.     ein .M-Befehl in einer Datei angegeben werden. .M-Befehle für schon
  9371.     gesetzte  Marker werden als  falsche  Befehle behandelt.  Nicht ge-
  9372.     setzte Marker  werden von MDMKHLP auf die zweite Zeile der Ausgabe-
  9373.     datei  gesetzt.  MDMKHLP  gibt  jeweils für  jeden gesetzten Marker
  9374.     die Zeilennummer aus.
  9375.  
  9376.     .I0
  9377.  
  9378.     Interpretierung der besonderen Zeichen bei der Ausgabe für die fol-
  9379.     genden Zeilen verhindern
  9380.  
  9381.     .I1
  9382.  
  9383.     Interpretierung  der  besonderen  Zeichen für  die folgenden Zeilen
  9384.     wieder einschalten
  9385.  
  9386.     .N0
  9387.  
  9388.     Komprimierung der folgenden Zeilen verhindern
  9389.  
  9390.     .N1
  9391.  
  9392.     Komprimierung der folgenden Zeilen wieder einschalten
  9393.  
  9394.     .Kz
  9395.  
  9396.     Nehme das Zeichen z als Kommentar-Zeichen für die Eingabedatei.
  9397.     Voreinstellung für z ist das Zeichen '@'.
  9398.  
  9399.     .Q1
  9400.  
  9401.     Meldungen und Warnungen unterdrücken
  9402.  
  9403.     .Q0
  9404.  
  9405.     Meldungen und Warnungen ausgeben
  9406.  
  9407.  
  9408.  
  9409.  
  9410.  
  9411.  
  9412.  
  9413.  
  9414.  
  9415.  
  9416.  
  9417.  
  9418.  
  9419.     ────────────────────────────────────────────────────────────────────────────────
  9420.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  149
  9421.  
  9422.  
  9423.  
  9424.     .B
  9425.  
  9426.     Beende  die  Interpretierung  von Befehlen,  d.h.  ab diesen Befehl
  9427.     werden auch alle mit einem Punkt beginnenden Zeilen in die Ausgabe-
  9428.     datei übernommen. (von diesem Befehl gibt es kein zurück!)
  9429.  
  9430.  
  9431.     Die  folgenden  Befehle können jeweils nur EINMAL  VOR  dem eigent-
  9432.     lichen  Text  der  Hilfstext-Datei  angegeben  werden. (Fehlerhafte
  9433.     Befehle zählen nicht)  Der Hilfstext  beginnt  mit der ersten Zeile
  9434.     die  keinen  Befehl  enthält  und  nicht  nur aus  einem  Kommentar
  9435.     besteht. (Leerzeilen werden in den Hilfstext übernommen!)
  9436.  
  9437.     .Pz
  9438.  
  9439.     Nehme das Zeichen z als Prefix-Zeichen für  die Anzeige
  9440.     Voreinstellung für z ist das Zeichen '#'
  9441.  
  9442.     .Cz
  9443.  
  9444.     Nehme das Zeichen z als Control-Zeichen für die Anzeige
  9445.     Voreinstellung für z ist das Zeichen '^'
  9446.  
  9447.     .F1z
  9448.  
  9449.     Nehme das Zeichen z als 1. Farbmarker für die Anzeige
  9450.     Voreinstellung für z ist das Zeichen '$'
  9451.  
  9452.     .F2z
  9453.  
  9454.     Nehme das Zeichen z als 2. Farbmarker für die Anzeige
  9455.     Voreinstellung für z ist das Zeichen '!'
  9456.  
  9457.     Für den Parameter z der Befehle gilt:
  9458.  
  9459.     Außer  den Zeichen mit dem ASCII-Codes 00h,  07h, 08h, 09h, 0Ah und
  9460.     0Dh  kann jedes  Zeichen als besonderes Zeichen benutzt werden.  Es
  9461.     ist nicht möglich einem Zeichen mehrere Bedeutungen zuzuordnen.
  9462.  
  9463.     Für  jeden fehlerhaften  Befehl gibt  MDMKHLP  eine Warnung auf die
  9464.     Standard-Ausgabe  aus. Zeilen  mit falschen Befehlen  werden  nicht
  9465.     übernommen und führen nicht zum Programm-Abbruch.
  9466.  
  9467.  
  9468.  
  9469.  
  9470.  
  9471.  
  9472.  
  9473.  
  9474.  
  9475.  
  9476.  
  9477.  
  9478.  
  9479.     ────────────────────────────────────────────────────────────────────────────────
  9480.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  150
  9481.  
  9482.  
  9483.  
  9484.     Soll eine Zeile, die mit einem Punkt beginnt, bei aktiver Interpre-
  9485.     tierung  der Befehle  durch  MDMKHLP in die Ausgabedatei übernommen
  9486.     werden,  so muß  diese  mit  einem  vorangestellten  Prefix-Zeichen
  9487.     versehen werden.
  9488.  
  9489.     MDMKHLP gibt jeweils eine Meldung über die Bearbeitungsschritte auf
  9490.     die Standard-Ausgabe auf. Falls ein Fehler bei der Dateibearbeitung
  9491.     oder ein Syntax-Fehler auftritt, wird  das Programm abgebrochen und
  9492.     eine Fehlermeldung auf die Standard-Ausgabe ausgegeben.
  9493.     Bei  Syntaxfehlern  werden  die Zeile  und die  Spalte des falschen
  9494.     Zeichens  mit ausgegeben. Die Angaben beziehen sich  dabei  auf die
  9495.     Eingabedatei (Kommentarzeilen zählen dabei mit).
  9496.  
  9497.     Nach einer  erfolgreichen Bearbeitung  gibt MDMKHLP  die  Größe der
  9498.     Ausgabedatei  in  Byte und  die  verwendeten  Sonderzeichen auf die
  9499.     Standard-Ausgabe aus.
  9500.  
  9501.     Hinweis:
  9502.  
  9503.     Falls  bei  Angabe des  Schalters /S ohne  den Schalter /N  das 80.
  9504.     Zeichen in einer Folge mit mehr als 3 Zeichen  liegt, so werden nur
  9505.     die vor dem 80. Zeichen liegenden Zeichen dieser Folge angezeigt.
  9506.     Das gleiche gilt für die Spalten 160 und 240.
  9507.  
  9508.     Abhilfe:  Komprimierung für diese Zeile(n) ausschalten.
  9509.  
  9510.  
  9511.  
  9512.  
  9513.  
  9514.  
  9515.  
  9516.  
  9517.  
  9518.  
  9519.  
  9520.  
  9521.  
  9522.  
  9523.  
  9524.  
  9525.  
  9526.  
  9527.  
  9528.  
  9529.  
  9530.  
  9531.  
  9532.  
  9533.  
  9534.  
  9535.  
  9536.  
  9537.  
  9538.  
  9539.     ────────────────────────────────────────────────────────────────────────────────
  9540.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  151
  9541.  
  9542.  
  9543.  
  9544.     MDSHELP.COM  (VV)
  9545.  
  9546.     MDSHELP.COM ist ein Programm zum Überprüfen der  Formatierung einer
  9547.     mit MDMKHLP erstellten Hilfstextdatei für MDEBUG.
  9548.  
  9549.     Aufruf: MDSHELP {hilfstextdatei} {@} {kommentar}
  9550.  
  9551.     Parameter:
  9552.  
  9553.     hilfstextdatei - Name der zu testenden Datei
  9554.                      Der Name  der Hilfstextdatei  kann nicht mit dem
  9555.                      Zeichen '@' beginnen.
  9556.  
  9557.     @              - Rest der Parameter überlesen
  9558.  
  9559.     Die Voreinstellung  für die Hilfstextdatei ist 'MDEBUG.HLP' im akt.
  9560.     Directory.
  9561.  
  9562.     MDSHELP zeigt den Hilfstext in der oberen  Bildschirmhälfte genauso
  9563.     wie er in der Online-Hilfe von MDEBUG angezeigt würde an.
  9564.  
  9565.     Zusätzlich gibt MDSHELP zur Information  auch  noch die verwendeten
  9566.     Sonderzeichen  in der Datei auf die Standard-Ausgabe  aus. Bei  der
  9567.     Anzeige sind alle Tasten wie in der Onlinehilfe von MDEBUG  belegt.
  9568.     Allerdings  kann das Fenster von  MDSHELP  nicht  verschoben werden
  9569.     und MDSHELP unterstützt keine  externen Bildschirmtreiber. (MDSHELP
  9570.     ermittelt die Daten des aktuellen  Bildschirm-Modus über den Inter-
  9571.     rupt 10h und die BIOS-Data-Area.)
  9572.  
  9573.     MDSHELP kann bis zu 55 K große Dateien bearbeiten.
  9574.  
  9575.  
  9576.     SETMD.EXE
  9577.  
  9578.     Mit  SETMD kann das Passwort von MDEBUG geändert, gelöscht oder neu
  9579.     eingerichtet werden.
  9580.  
  9581.     Aufruf: SETMD
  9582.  
  9583.     SETMD erfragt alle benötigten Daten im Dialog mit dem Benutzer.
  9584.  
  9585.     Falls eine mit einem Passwort versehene Version von MDEBUG geändert
  9586.     werden soll, so muß  das alte Passwort bekannt sein. Ein Fehler bei
  9587.     der Eingabe führt zum Programm-Abbruch.
  9588.  
  9589.  
  9590.  
  9591.  
  9592.  
  9593.  
  9594.  
  9595.  
  9596.  
  9597.  
  9598.  
  9599.     ────────────────────────────────────────────────────────────────────────────────
  9600.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  152
  9601.  
  9602.  
  9603.  
  9604.     SETREGNR.EXE  (VV)
  9605.  
  9606.     Mit dem Programm  SETREGNR kann  ein Benutzer der Vollversion seine
  9607.     Registrierungs-Nummer  in  das  Programm  MDEBUG.COM eintragen. Die
  9608.     Eintragung deaktiviert die Shareware-Meldung und gibt den Parameter
  9609.     'MAKE' frei.
  9610.  
  9611.     Aufruf: SETREGNR
  9612.  
  9613.     SETREGNR erfragt alle  benötigten Daten im Dialog mit dem Benutzer.
  9614.  
  9615.  
  9616.     CALLMDB.COM  (VV)
  9617.  
  9618.     CALLMDB.COM ist ein Programm zum Aufruf von MDEBUG aus einer Batch-
  9619.     datei heraus.
  9620.  
  9621.     Aufruf: CALLMDB {/opt} {"text"} {#nnnn} {...} {#} {@ kommentar}
  9622.  
  9623.     Parameter:
  9624.  
  9625.     opt  - Optionen für CALLMDB:
  9626.  
  9627.              N     - Diese  Option unterdrückt das  Anhängen  von <F10>
  9628.                      hinter den Parametern durch CALLMDB
  9629.  
  9630.              Pxxxx - 'xxxx' ist das Passwort für MDEBUG
  9631.  
  9632.  
  9633.     text - Text der zeichenweise übergeben wird
  9634.  
  9635.     Falls das Zeichen " übergeben werden soll, muß  es durch "" angege-
  9636.     ben werden.  Control-Codes  können durch  das Zeichen ^ gefolgt von
  9637.     einem  Großbuchstaben  eingegeben werden.  Das  Zeichen ^ vor einem
  9638.     Großbuchstaben muß als ^^ angegeben werden.
  9639.  
  9640.  
  9641.  
  9642.  
  9643.  
  9644.  
  9645.  
  9646.  
  9647.  
  9648.  
  9649.  
  9650.  
  9651.  
  9652.  
  9653.  
  9654.  
  9655.  
  9656.  
  9657.  
  9658.  
  9659.     ────────────────────────────────────────────────────────────────────────────────
  9660.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  153
  9661.  
  9662.  
  9663.  
  9664.     #nnnn - Scancode einer Taste (hexadezimal)
  9665.               speziell:
  9666.  
  9667.               #0 - Simuliere leeren Tastaturpuffer.
  9668.                      Der Code ist notwendig, falls nach einen mit einen
  9669.                      Fehler endenden Befehl noch weitere Befehle ausge-
  9670.                      führt werden sollen.  (MDEBUG löscht den Tastatur-
  9671.                      puffer nach einem Fehler)
  9672.  
  9673.     Die  Scancodes  der  Funktionstasten  können  der  Tabelle  in  der
  9674.     Dokumentation von MDEBUG entnommen  werden oder  über MDEBUG ermit-
  9675.     telt werden.  Der  angegebene Wert  darf  nicht  größer  als 0FFFFh
  9676.     sein;  führende Nullen  sind möglich.  Der ermittelte Wert wird bis
  9677.     auf Wortgröße  von links mit Nullen aufgefüllt (z.B. wird aus '#0D'
  9678.     der Scancode 000Dh). Da MDEBUG den Status der Umschalt-Tasten nicht
  9679.     berücksichtigt,  können  auch die Tastaturcodes für Tasten wie z.B.
  9680.     <SHIFT-F6> o.ä. übergeben werden.
  9681.  
  9682.  
  9683.     # - Ausgabe der von CALLMDB verwendeten Tastencodes und Beenden des
  9684.         Aufrufs. Falls die Codes der Tasten <F10>,  <F4> oder  <ESC> in
  9685.         MDEBUG geändert werden, müssen die neuen Codes auch  in CALLMDB
  9686.         eingetragen werden!
  9687.         (siehe Beschreibung der Parameter von MDEBUG)
  9688.  
  9689.  
  9690.     @ - Rest der Parameter überlesen
  9691.  
  9692.  
  9693.     Übergeben werden nur die  Zeichen  zwischen  zwei  Gänsefüßchen und
  9694.     die  explizit  angegebenen  Scancodes.  Zwischen  diesen dürfen zur
  9695.     Trennung Leerzeichen und Tabulatoren gesetzt werden. Maximal können
  9696.     256 Tastencodes übergeben werden. Dieses Maximum kann aber aufgrund
  9697.     der Beschränkung von DOS nie erreicht werden.
  9698.  
  9699.     Ein falscher Parameter führt zum Abbruch von CALLMDB.
  9700.  
  9701.     Der User-Int von MDEBUG muß  installiert sein falls CALLMDB benutzt
  9702.     werden soll.  CALLMDB installiert, nachdem es festgestellt hat, das
  9703.     MDEBUG mit einem User-Int geladen ist,  eine eigene Routine für die
  9704.     Ermittlung der Tastatureingaben in MDEBUG und ruft den User-Int von
  9705.     MDEBUG auf.  Die Parameter  werden dann sequentiell an MDEBUG über-
  9706.     geben.
  9707.     Nach  dem Aufruf  über CALLMDB startet MDEBUG immer im Interpreter.
  9708.  
  9709.  
  9710.  
  9711.  
  9712.  
  9713.  
  9714.  
  9715.  
  9716.  
  9717.  
  9718.  
  9719.     ────────────────────────────────────────────────────────────────────────────────
  9720.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  154
  9721.  
  9722.  
  9723.  
  9724.     Befehle  für MDEBUG  können  wie im  Interpreter angegeben  werden,
  9725.     müssen  aber jeweils  mit dem  ScanCode der  Taste <RETURN> beendet
  9726.     werden:
  9727.  
  9728.     Beispiel:   CALLMDB "M FS,CS ^M FO,0 ^M "
  9729.                                  ─┐      ┌─
  9730.                                   └──┬───┘
  9731.                                  <RETURN>
  9732.                 oder
  9733.  
  9734.                 CALLMDB "M FS,CS " #0D " M FO,0" #0D
  9735.                                    ──┐           ┌──
  9736.                                      └───┬───────┘
  9737.                                       <RETURN>
  9738.  
  9739.     Die  Tastenumbelegungen des Interpreters sind auch für über CALLMDB
  9740.     übergebene Befehl gültig:
  9741.  
  9742.     Beispiel:  CALLMDB "M AX,4ä1" #0D
  9743.                        ──────────
  9744.                        Interpreter-Befehl: M AX,4«1
  9745.  
  9746.  
  9747.     Kleinbuchstaben  werden von MDEBUG in  Großbuchstaben  konvertiert.
  9748.     Soll  ein Kleinbuchstabe eingegeben werden, so muß  diesem der Code
  9749.     für <CTRL-P> vorangestellt werden.
  9750.  
  9751.     Beispiel:   CALLMDB "M R8,'^Pa' ^M "
  9752.                                ──
  9753.                                <CTRL-P>
  9754.                 oder
  9755.  
  9756.                 CALLMDB "M R8,'" #1910 "a'" #0D
  9757.                                  ─────
  9758.                                  <CTRL-P>
  9759.  
  9760.     Steuerzeichen müssen ebenfalls mit dem Prefix-Zeichen versehen ein-
  9761.     gegeben werden.
  9762.  
  9763.     Hinter den angegegebenen Parametern setzt CALLMDB noch den Scancode
  9764.     für <F10> damit MDEBUG nach der Bearbeitung sofort wieder verlassen
  9765.     wird. Soll dies verhindert werden, so muß CALLMDB mit dem Parameter
  9766.     '/N' aufgerufen  werden  oder  als letzter Befehl für MDEBUG der W-
  9767.     Befehl übergeben werden:
  9768.  
  9769.     Beispiel:   CALLMDB "M R8,'A' ^ W " #0D
  9770.  
  9771.  
  9772.  
  9773.  
  9774.  
  9775.  
  9776.  
  9777.  
  9778.  
  9779.     ────────────────────────────────────────────────────────────────────────────────
  9780.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  155
  9781.  
  9782.  
  9783.  
  9784.     Hinweis:
  9785.  
  9786.     Falls das Passwort von MDEBUG aktiv ist und der  Parameter '/P' für
  9787.     CALLMDB nicht angegeben wird,  wird MDEBUG nach der Bearbeitung der
  9788.     Parameter NICHT sofort verlassen.
  9789.  
  9790.  
  9791.     Natürlich kann in den  Parametern auch  vorher schon ein Befehl zum
  9792.     Verlassen von MDEBUG enthalten sein. Die  Parameterteile,  die dann
  9793.     von MDEBUG  nicht mehr  bearbeitet  werden, werden verworfen (keine
  9794.     Weitergabe an andere Programme).
  9795.  
  9796.     Beispiel:   CALLMDB {irgendwas}  #1B #1B      {irgendwas}
  9797.                         ──────────   ───────      ───────────
  9798.                         wird ausge-  2 x <ESC>,   wird ignoriert
  9799.                         führt        MDEBUG
  9800.                                      verlassen
  9801.  
  9802.     Falls das  Passwort  von  MDEBUG aktiv  ist, sollte  der  Parameter
  9803.     '/Pxxxx' benutzt werden, da das Passwort  ansonsten zweimal vor den
  9804.     eigentlichen Parametern und zusätzlich einmal manuell eingegeben werden
  9805.     muß.
  9806.     Falls  nach  jedem Start  von MDEBUG über CALLMDB  Voreinstellungen
  9807.     vorgenommen werden sollen, wird sinnvollerweise  das Passwort durch
  9808.     SETMD zwar eingerichtet,  aber so,  daß es beim Start zuerst ausge-
  9809.     schaltet ist. Als erster  Parameter für CALLMDB wird dann der Scan-
  9810.     code  von <F3>, #3D00h,  angegeben womit das Passwort eingeschaltet
  9811.     wird.
  9812.  
  9813.     Beispiel:   CALLMDB #3D00 {weitere Befehle/Tasten}
  9814.  
  9815.     Über CALLMDB kann auch  während der  Abarbeitung  einer Batch-Datei
  9816.     die Tastatur für einen Teil der Befehle gesperrt werden:
  9817.  
  9818.          REM Befehle, die unterbrechenbar ausgeführt werden sollen
  9819.          REM ...
  9820.  
  9821.          REM Tastatur blockieren (falls das Passwort von MDEBUG schon
  9822.          REM eingeschaltet ist, kann der Tastencode #3D00 entfallen,
  9823.          REM xxxx = Passwort von MDEBUG)
  9824.          CALLMDB #3D00 "QL ^M" /Pxxxx
  9825.  
  9826.          REM Befehle, die mit Tastaturblockierung ausgeführt werden
  9827.          REM sollen
  9828.          REM ...
  9829.  
  9830.          REM und Tastaturblockierung wieder aufheben
  9831.          CALLMDB /Pxxxx
  9832.  
  9833.  
  9834.  
  9835.  
  9836.  
  9837.  
  9838.  
  9839.     ────────────────────────────────────────────────────────────────────────────────
  9840.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  156
  9841.  
  9842.  
  9843.  
  9844.     DISSTAT.COM  (VV)
  9845.  
  9846.  
  9847.     DisStat.COM ist ein Util zum Konvertieren einer Status-Datei des
  9848.     Disassemblers MDDISDRV in ein lesbares Format.
  9849.  
  9850.     DisStat.COM kann folgendermaßen aufgerufen werden:
  9851.  
  9852.     DISSTAT statusdatei {>ausgabeeinheit}
  9853.  
  9854.     Da DisStat die Ausgaben auf die Standard-Ausgabe schreibt, sollte
  9855.     diese immer in eine Datei oder auf ein Gerät umgeleitet werden.
  9856.  
  9857.  
  9858.  
  9859.  
  9860.  
  9861.  
  9862.  
  9863.  
  9864.  
  9865.  
  9866.  
  9867.  
  9868.  
  9869.  
  9870.  
  9871.  
  9872.  
  9873.  
  9874.  
  9875.  
  9876.  
  9877.  
  9878.  
  9879.  
  9880.  
  9881.  
  9882.  
  9883.  
  9884.  
  9885.  
  9886.  
  9887.  
  9888.  
  9889.  
  9890.  
  9891.  
  9892.  
  9893.  
  9894.  
  9895.  
  9896.  
  9897.  
  9898.  
  9899.     ────────────────────────────────────────────────────────────────────────────────
  9900.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  157
  9901.  
  9902.  
  9903.  
  9904.     TESTMD.PAS
  9905.  
  9906.     Demo-Programm in Turbo-Pascal 4.0/5.0 zur Demonstration der Nutzung
  9907.     von MDEBUG in eigenen Programmen.
  9908.  
  9909.     Zur Compilierung werden die Dateien
  9910.  
  9911.          CHECKMD.OBJ, CALLMD.OBJ, MDCMD.OBJ und KONVERT.OBJ
  9912.  
  9913.     benötigt.
  9914.  
  9915.     TESTMD.EXE
  9916.  
  9917.     Übersetzte Version von TESTMD.PAS
  9918.  
  9919.     Aufruf: TESTMD
  9920.  
  9921.  
  9922.     CHECKMD.A86
  9923.  
  9924.     Assember-Routine  zum Überprüfen,  ob MDEBUG  installiert  ist und,
  9925.     falls ja, Ermitteln des User-Ints von MDEBUG. Der Quelltext ist für
  9926.     die Übersetzung mit dem Assembler A86 geschrieben.
  9927.  
  9928.     Die  Routine wurde  speziell zur Nutzung in Turbo-Pascal-Programmen
  9929.     geschrieben und sollte für andere  Programmiersprachen als Beispiel
  9930.     genommen werden.
  9931.  
  9932.     CHECKMD.OBJ
  9933.  
  9934.     Übersetzte Version von CHECKMD.A86
  9935.  
  9936.  
  9937.     CALLMD.A86
  9938.  
  9939.     Assembler-Routine  zum Aufruf  des User-Ints  von MDEBUG  aus einem
  9940.     Turbo-Pascal-Programm heraus. Der Quelltext ist für die Übersetzung
  9941.     mit dem Assembler A86 geschrieben.
  9942.  
  9943.     Die  Routine wurde  speziell zur Nutzung in Turbo-Pascal-Programmen
  9944.     geschrieben und sollte für andere Programmiersprachen als  Beispiel
  9945.     genommen werden.
  9946.  
  9947.     CALLMD.OBJ
  9948.  
  9949.     Übersetzte Version von CALLMD.A86
  9950.  
  9951.  
  9952.  
  9953.  
  9954.  
  9955.  
  9956.  
  9957.  
  9958.  
  9959.     ────────────────────────────────────────────────────────────────────────────────
  9960.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  158
  9961.  
  9962.  
  9963.  
  9964.     MDCMD.A86
  9965.  
  9966.     Assembler-Routine  zur Ausführung von  Befehlszeilen über MDEBUG in
  9967.     eigenen Programmen.  Der Quelltext ist für die  Übersetzung mit dem
  9968.     Assembler A86 geschrieben.
  9969.  
  9970.     Die  Routine wurde  speziell zur Nutzung in Turbo-Pascal-Programmen
  9971.     geschrieben und sollte für andere Programmiersprachen als  Beispiel
  9972.     genommen werden.
  9973.  
  9974.     MDCMD.OBJ
  9975.  
  9976.     Übersetzte Version von MDCMD.A86
  9977.  
  9978.  
  9979.     KONVERT.A86
  9980.  
  9981.     Konvertierungs-Routinen für TESTMD.PAS
  9982.     Der  Quelltext  ist  für  die  Übersetzung  mit  dem  Assembler A86
  9983.     geschrieben.
  9984.  
  9985.     KONVERT.OBJ
  9986.  
  9987.     Übersetzte Version von KONVERT.A86
  9988.  
  9989.  
  9990.     UPSTR.BIN
  9991.     LOWSTR.BIN
  9992.  
  9993.     Beispieldateien für die Möglichkeit über den Parameter '&name' auch
  9994.     übersetzte  Routinen ins PSP von MDEBUG  einzulesen.  In den beiden
  9995.     Dateien  steht jeweils  am Ende  der Datei die Länge  des Codes als
  9996.     Wort (eingerahmt  mit der Zeichenfolge  '**') und dahinter der Name
  9997.     der Routine (abgeschl. durch '*').
  9998.     UPSTR.BIN und LOWSTR.BIN belegen jeweils 32 Byte.
  9999.  
  10000.     Benutzung (z.B.):  MDEBUG &upstr.bin,,,N
  10001.                        MDEBUG SET &lowstr.bin,0,32,N
  10002.  
  10003.     UPSTR.A86
  10004.     LOWSTR.A86
  10005.  
  10006.     Quelldateien für UPSTR.BIN und LOWSTR.BIN. Die Übersetzung erfolgte
  10007.     mit  dem A86.  Dieser Assembler  ist für solche  Aufgaben auf jedem
  10008.     Fall dem MASM vorzuziehen.
  10009.  
  10010.  
  10011.  
  10012.  
  10013.  
  10014.  
  10015.  
  10016.  
  10017.  
  10018.  
  10019.     ────────────────────────────────────────────────────────────────────────────────
  10020.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  159
  10021.  
  10022.  
  10023.  
  10024.     SHOW2FP.COM
  10025.  
  10026.     SHOW2FP ist  ein Programm zum  Testen der Prozessnummern des Inter-
  10027.     rupts 2Fh.
  10028.  
  10029.     Aufruf: SHOW2FP {prozessnummer} {@ kommentar}
  10030.  
  10031.     Parameter:
  10032.  
  10033.     prozessnummer
  10034.  
  10035.     'prozessnummer'  ist  die zu  testende Prozessnummer des Interrupts
  10036.     2Fh (hex., Interavll: 0C0h..0FEh).
  10037.  
  10038.     @      - Rest der Parameter überlesen
  10039.  
  10040.     Ist eine Prozessnummer  angegeben, gibt  SHOW2FP aus,  ob diese und
  10041.     die folgende Prozessnummer schon belegt ist oder nicht.
  10042.  
  10043.     Wird kein Parameter  angegeben,  so gibt SHOW2FP alle belegten Pro-
  10044.     zessnummern zwischen C0h und FFh aus.
  10045.  
  10046.  
  10047.     FREESTCK.COM
  10048.  
  10049.     Programm  zur  Freigabe aller  belegten  und  übergelaufenen Stack-
  10050.     Frames der STACK-Verwaltung.
  10051.     (erst ab DOS 3.3 vorhanden, siehe 'Stack-Überlauf')
  10052.  
  10053.     Aufruf: FREESTCK
  10054.  
  10055.  
  10056.     MDCGADRV.ASM  (VV)
  10057.  
  10058.     Quelltext des Treibers MDCGADRV.COM
  10059.     (ausführlich kommentierter Assemblertext für den A86)
  10060.  
  10061.  
  10062.     MDHGCDRV.ASM  (VV)
  10063.  
  10064.     Quelltext des Treibers MDHGCDRV.COM
  10065.     (ausführlich kommentierter Assemblertext für den A86)
  10066.  
  10067.  
  10068.  
  10069.  
  10070.  
  10071.  
  10072.  
  10073.  
  10074.  
  10075.  
  10076.  
  10077.  
  10078.  
  10079.     ────────────────────────────────────────────────────────────────────────────────
  10080.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  160
  10081.  
  10082.  
  10083.  
  10084.     MDDRIVER.ASM  (VV)
  10085.  
  10086.     Gerüst zur Programmierung von eigenen Bildschirmtreibern.
  10087.     (ausführlich kommentierter Assemblertext für den A86)
  10088.     MDDRIVER.ASM  enthält  schon  die gesamte  Logik des Treibers;  was
  10089.     fehlt sind nur die Routinen zum Erkennen, Sichern und  Restaurieren
  10090.     der Bildschirmdaten.
  10091.  
  10092.  
  10093.     MDBSPDRV.ASM  (VV)
  10094.  
  10095.     Quelltext des Kommandotreibers MDBSPDRV.COM (residenter Teil)
  10096.     (ausführlich kommentierter Assemblertext für den A86)
  10097.  
  10098.     MDBSPDRV.INC  (VV)
  10099.  
  10100.     Quelltext des Kommandotreibers MDBSPDRV.COM (transienter Teil)
  10101.     (ausführlich kommentierter Assemblertext für den A86)
  10102.  
  10103.  
  10104.  
  10105.  
  10106.  
  10107.  
  10108.  
  10109.  
  10110.  
  10111.  
  10112.  
  10113.  
  10114.  
  10115.  
  10116.  
  10117.  
  10118.  
  10119.  
  10120.  
  10121.  
  10122.  
  10123.  
  10124.  
  10125.  
  10126.  
  10127.  
  10128.  
  10129.  
  10130.  
  10131.  
  10132.  
  10133.  
  10134.  
  10135.  
  10136.  
  10137.  
  10138.  
  10139.     ────────────────────────────────────────────────────────────────────────────────
  10140.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  161
  10141.  
  10142.  
  10143.  
  10144.  
  10145.  
  10146.  
  10147.  
  10148.  
  10149.  
  10150.  
  10151.  
  10152.  
  10153.  
  10154.  
  10155.  
  10156.  
  10157.  
  10158.  
  10159.  
  10160.  
  10161.  
  10162.  
  10163.  
  10164.  
  10165.  
  10166.  
  10167.  
  10168.  
  10169.  
  10170.  
  10171.  
  10172.  
  10173.  
  10174.  
  10175.  
  10176.  
  10177.  
  10178.  
  10179.  
  10180.  
  10181.  
  10182.  
  10183.  
  10184.  
  10185.  
  10186.  
  10187.  
  10188.  
  10189.  
  10190.  
  10191.  
  10192.  
  10193.  
  10194.  
  10195.  
  10196.  
  10197.  
  10198.  
  10199.     ────────────────────────────────────────────────────────────────────────────────
  10200.     MDEBUG - Benutzer- und Referenz-Handbuch                            Seite  162
  10201.