Hallo,
laut all den Fachbüchern die ich habe legt DOS für jedes Programm das es startet einen Environment-Block im Speicher an.
Bei manchen Programmen scheint dies jedoch nicht der Fall zu sein, z.B. starte ich in meiner AUTOEXEC.BAT die Programme MSCDEX.EXE, KEYB.COM und DOSKEY.COM
Ich hab mir ein Turbo Pascal Programm geschrieben welches die Kette der Memory Control Blocks im Speicher durchläuft und die jeweiligen Environments der Programme die gefunden werden auflistet (also die Strings die da gespeichert sind).
Wenn ich die Memory Control Blocks der Reihe nach durchlaufe dann tauchen in der Liste zwar die MCBs für die oben genannten Programme auf, aber es fehlt der jeweilige MCB für das zugehörige Environment was für mich dannach aussieht als würden diese Programme über kein Environment verfügen.
Bei Turbo Pascal Programmen die ich selber geschrieben habe oder auch beispielsweise bei TURBO.EXE (Turbo Pascal IDE) selbst existiert der zugehörige Environment MCB jedoch.
Macht DOS da bei manchen Programmen Ausnahmen und legt keinen Environment-Block an?
Was auch total seltsam ist:
Man kann die Segment-Adresse des Environment-Blocks ja aus dem PSP des jeweiligen Programms auslesen (das Word bei Offset 44)
Und in den genannten drei Programmen steht an dieser Stelle die Segmentadresse des Environment-Blocks von meinem Turbo Pascal Programm.
Meine Erwartung wäre eben gewesen daß hier eine Segmentadresse vermerkt ist welche auf den Environment-Block des jeweiligen Programms zeigt und nicht auf jenen von meinem Programm.
Neben der fehlenden Existenz eines Environment-Blocks ist das der zweite Punkt der mir keine Ruhe lässt.
Kann mir da wer weiterhelfen?
lg, Markus