cosy
Goto Top

Unter XP RAM-Einstellungen für DOS-Programme optimieren

Unsere alten DOS-Programme müssen unter XP laufen und benötigen minimal 240 KB freier Basisspeicher. Wie kann ich XP dazu bringen, dass mir möglichst viel Speicher für das Programm zur Verfügung steht?

Wir benutzen diese Programme (ERP) unter DOS, weil die DB nie migriert wurde und das heute zu teuer wäre. Eher wird das mal komplett abgelöst.
Die Programme sind alle unter Modula2 und einem Borland Compiler geschrieben und als 16 Bit .exe vorhanden. DOS starte ich aus einem Batch heraus. autoexec.nt und config.nt habe ich angepasst, so gut es ging. Die lokale Verwendung der beiden Steuerfiles funktioniert nicht (Ich hätte gerne DOSX nicht geladen, damit mehr Base RAM bleibt, aber gewisse Funktionen und 16Bit Windowsprogramme benötigen dies (z.B. NAL von Novell zur SW-Verteilung). Die Befehle mem mit Optionen sind mir bekannt, DPMS funktioniert scheinbar nicht in meiner Konfiguration - oder hat zumindest keine Wirkung.
Hat einer eine IDEE?
Gruss aus der (nassen) Schweiz.

Content-Key: 14874

Url: https://administrator.de/contentid/14874

Printed on: April 16, 2024 at 04:04 o'clock

Member: Biber
Biber Aug 25, 2005 at 08:42:39 (UTC)
Goto Top
Moin cosy,

Bedarf 240 KB Basisspeicher?
Und das ist ein Problem??
Was hast Du denn an Deiner XP-Config rumgeschraubt?

Bei mir sagt "mem" am CMD-Prompt ohne Anpassungen:
&lt= 9:21:12  D:\temp=&gt
>mem

    655360 Bytes gesamter konventioneller Speicher
    655360 Bytes für MS-DOS verfügbar
    626560 maximale Größe für ausführbares Programm

   1048576 Bytes gesamter fortlaufender Erweiterungsspeicher
         0 Bytes fortlaufender Erweiterungsspeicher verfügbar
    941056 Bytes XMS-Speicher verfügbar
           MS-DOS ist resident im oberen Speicherbereich (HMA).
Poste (oder sende als Nachricht) doch mal deine config.nt und autoexec.nt.
Ist denn für die DOS-Anwendung ein Hochsetzen der "FILES=20" nötig oder warum fasst/passt Du überhaupt die config-Dateien an.
Frank / der Biber aus Bremen
Member: cosy
cosy Aug 26, 2005 at 18:25:35 (UTC)
Goto Top
Ja, aber ich meinte 240 KB nachdem das Prg und die "Treiber" geladen sind , den Platz brauchts für die Overlays. .
Schau mal was mem bei geladenem Prg zeigt, bevor das Ovl geladen wird: 227 KB

MEM zeigt im DOS - Fenster:
C:\DOKUME~1\cob>mem


655360 Bytes gesamter konventioneller Speicher
655360 Bytes für MS-DOS verfügbar
611856 maximale Größe für ausführbares Programm

1048576 Bytes gesamter fortlaufender Erweiterungsspeicher
0 Bytes fortlaufender Erweiterungsspeicher verfügbar
983040 Bytes XMS-Speicher verfügbar
MS-DOS ist resident im oberen Speicherbereich (HMA).

und im Detail ist geladen:
C:\DOKUME~1\cob>mem /d

Adresse Name Größe Typ
------- -------- ----- ------
000000 000400 Interrupt-Vektor
000400 000100 ROM-Übertragungsbereich
000500 000200 DOS-Übertragungsbereich

000700 IO 000370 Systemdaten
CON System-Gerätetreiber
AUX System-Gerätetreiber
PRN System-Gerätetreiber
CLOCK$ System-Gerätetreiber
COM1 System-Gerätetreiber
LPT1 System-Gerätetreiber
LPT2 System-Gerätetreiber
LPT3 System-Gerätetreiber
COM2 System-Gerätetreiber
COM3 System-Gerätetreiber
COM4 System-Gerätetreiber

000A70 MSDOS 001670 Systemdaten

0020E0 IO 002030 Systemdaten
KBD 000CE0 Systemprogramm
HIMEM 0004E0 DEVICE=
XMSXXXX0 Install. Gerätetreiber=
0003F0 FILES=
000090 FCBS=
0001B0 LASTDRIVE=
0007E0 STACKS=
004120 COMMAND 000BA0 Programm
004CD0 MSDOS 000070 -- Frei --
004D50 COMMAND 0004F0 Umgebung
005250 VLMSUP 003B70 Programm
008DD0 MEM 000410 Umgebung
0091F0 KB16 0017D0 Programm
00A9D0 MEM 0174E0 Programm
021EC0 MSDOS 07E120 -- Frei --
09FFF0 SYSTEM 032000 Systemprogramm

0D2000 IO 003100 Systemdaten
MOUSE 0030F0 Systemprogramm
0D5110 MSDOS 000410 -- Frei --
0D5530 REDIR 000A70 Programm
0D5FB0 MSDOS 002040 -- Frei --

Na siehste: ich hab doch nicht gemoppelt..
Member: Biber
Biber Aug 27, 2005 at 03:43:42 (UTC)
Goto Top
Öhöm, cosy,
ich kenn ich mich ja nicht so gut aus mit DOS- und CMD-Bildschirmen, aber von weitem sieht das für mich eher aus wie der Output vom Mem.exe und nicht so sehr wie die config.xxx bzw autoexex.yyy, die Du für diese Anwendung(en) benutzt.
Was sind denn das für DOS-Programme? Clipper vermutlich, wenn die unter XP stabil laufen.... da hast du gute Chancen, noch XMS/EMS zu nutzen..
Falls Dir das zu umfangreich zum Posten ist, schick mir doch bitte die Config-Dateien + das, was Du über die Exe'n weißt, als Nachricht. Oder per Mail.
Ich leg Dir auch meine Mail-Addy in Deinen Nachrichtenkorb.

Und mach jetzt erstmal kurz Wochenende.
Member: cosy
cosy Aug 27, 2005 at 13:20:55 (UTC)
Goto Top
Nix mit Wochenende, ich muss unsere Firewall neu aufsetzen heute (Samstag).
Der Ausdruck war vom Prg mem.exe.
Die Programme sind alle selbst entwickelt (von der Firma), dementsprechend gut bekannt und sind wie gesagt in der Sprache Modula-2 geschrieben und tw. Assembler und benutzen als Datenbank Btrieve (das ist der Vorläufer von Pervasive - eine SQL DB ähnlich Oracle aus USA) Btrieve ist auf Novell- Fileservern gelagert. Dies spielt a ber keine Rolle, da erstens das Prg. so etwas wie Fileoperationen an eine Netzwerkadresse schickt und die Inhalte als Antwort zurückbekommt.

Die Frage reduziert sich auf das Problem, wie man unter XP möglichst viel Arbeitsspeicher erhält für ein Programm unter DOS.

Nun, alles was ich bisher gefunden habe und weiss, hab ich als Kommentar in die Files eingetragen. Aber schau doch mal selbst.
Die Konfigs sind ganz einfach:
[b]Autoexec.nt[/b]
@echo off
REM
REM xxxxxxxxx AG
REM Steuerfiles für ERP
REM Windows Clients Standort xxxxxxxxx
REM -------------------------------------------------------------
REM ZOM, COB 16.8.2005 V9.0b AUTOEXEC.NT
REM -------------------------------------------------------------
REM Lokales Steuerfile welches ins Verzeichnis c:\erp9\ gehört
REM -------------------------------------------------------------
REM
REM C:\AUTOEXEC.BAT wird nicht zum Initialisieren der
REM MS-DOS-Umgebung verwendet.
REM Stattdessen wird die Datei AUTOEXEC.NT verwendet,
REM wenn es nicht anders in einer PIF-Datei angegeben wird.
REM
REM Installieren der CD ROM-Erweiterung
REM lh %SystemRoot%\system32\mscdexnt.exe
REM
REM Installieren des Netzwerk-Redirectors
lh %SystemRoot%\system32\redir
REM
REM Installieren der DPMI-Unterstützung
REM lh %SystemRoot%\system32\dosx
REM lh %SystemRoot%\system32\vipx.exe
lh %SystemRoot%\system32\vlmsup.exe

[b]config.nt[/b]
@echo off
REM
REM Digital-Logic AG
REM Steuerfiles für ERP
REM Windows Clients Standort Luterbach
REM --------------------------------------------------
REM COB,ZOM 16.8.2005 V9.0b CONFIG.NT
REM --------------------------------------------------
REM Lokales Steuerfile welches ins Verzeichnis c:\erp9\ gehört
REM Erlaeuterungen
REM ----------------------------------
REM
REM MS-DOS-Initialisierungsdatei für Windows
REM
REM CONFIG.SYS versus CONFIG.NT
REM CONFIG.SYS wird nicht verwendet, um die MS-DOS-Umgebung zu
REM initialisieren. Statt dessen wird die Datei CONFIG.NT verwendet,
REM es sei denn, in der PIF-Datei einer Anwendung wird eine andere
REM Initialisierungsdatei angegeben.
REM
REM ECHOCONFIG
REM Standardmäßig ist die Informationsanzeige während der
REM Initialisierung der MS-DOS-Umgebung deaktiviert. Um
REM CONFIG.NT-/AUTOEXEC.NT-Informationen anzuzeigen, müssen Sie
REM den Befehl "EchoConfig" zu der Datei CONFIG.NT oder einer
REM anderen Initialisierungsdatei hinzufügen.
REM
REM NTCMDPROMPT
REM Wenn Sie von einem TSR-Programm oder einer MS-DOS-Anwendung aus
REM zur Eingabeaufforderung zurückzukehren, führt Windows
REM COMMAND.COM aus. Dadurch bleibt das TSR-Programm aktiv. Um den
REM Windows-Befehlsinterpreter CMD.EXE (statt COMMAND.COM) auszu-
REM führen, müssen Sie den Befehl "NTCmdPrompt" zu der Datei
REM CONFIG.NT oder einer anderen Initialisierungsdatei hinzufügen.
REM
REM DOSONLY
REM Standardmäßig kann jede Anwendung gestartet werden, wenn
REM COMMAND.COM ausgeführt wird. Wenn Sie eine Nicht-MS-DOS-Anwendung
REM aufrufen, werden TSR-Programme möglicherweise unterbrochen.
REM Um sicherzustellen, dass nur MS-DOS-Anwendungen gestartet werden,
REM müssen Sie den Befehl "DosOnly" zu der Datei CONFIG.NT oder
REM einer anderen Initialisierungsdatei hinzufügen.
REM
REM EMM
REM Verwenden Sie eine EMM-Befehlszeile, um den EMM (Expanded Memory
REM Manager) zu konfigurieren.
REM Die Syntax lautet:
REM
REM EMM = [A=AltRegSets] [B=BaseSegment] [RAM]
REM
REM AltRegSets
REM gibt die gesamten Alternative Mapping Register Sets an, die
REM das System unterstützen soll. 1 <= AltRegSets <= 255. Der
REM Standardwert ist 8.
REM BaseSegment
REM gibt die Anfangs-Segmentadresse im konventionellen DOS-Speicher
REM an, den das System für die EMM-Seitenrahmen reservieren soll.
REM Der Wert muss als Hexadezimalzahl angegeben werden.
REM 0x1000 <= BaseSegment <= 0x4000. Der Wert wird auf die nächste
REM 16 KB-Grenze abgerundet. Der Standardwert ist 0x4000.
REM RAM
REM gibt an, dass das System nur 64 KB Adressraum im oberen Speicher
REM (Upper Memory Block; UMB) für die EMM-Seitenrahmen reservieren
REM soll. Der Rest (falls verfügbar) wird von DOS für die
REM Unterstützung der Befehle "loadhigh" und "devicehigh" verwendet.
REM Standardmäßig reserviert das System den gesamten verfügbaren
REM UMB für Seitenrahmen.
REM
REM Die EMM-Größe wird in der PIF-Datei (entweder die Datei _DEFAULT.PIF
REM oder die PIF-Datei, die mit der Anwendung verknüpft ist) bestimmt.
REM Wenn die in der PIF-Datei angegebene Größe Null ist, wird EMM
REM deaktiviert und die EMM-Zeile nicht berücksichtigt.
REM
REM Load Extended memory manager
REM ---------------------------------------------
dos=high, umb
device=%SystemRoot%\system32\himem.sys
REM
REM Created # of Filebuffers and I/Obuffers
REM -----------------------------------------------
REM COB: Anz. Files. die geöffnet werden können: 8..255, DLAG = 50->35
FILES=35
REM COB: Anz. I/O- Buffers für Disc und RAM : 2..255, DLAG = 50->35
Buffers=35
REM
REM #Stackframes
REM ------------------------------------------------
REM COB: Pro Interrupt wird 1 Stackframe belegt. Wenns zuwenig hat -> overflow
REM n,s n= Anzahl (8..64) Stacks s= Grösse eines Stacks (32..512) Bytes
REM DLAG = 9,128 ergibt 1kB RAM
Stack=9,128
REM
REM # FCB's
REM -------------------------------------------------
REM COB: Anz. File Control Blocks : x,y x=max. offene files y= Anz. Files, welche einen
REM Close - Schutz erhalten. DLAG = 4,0
REM Nur alte DOS-Versionen arbeiten noch mit diesen Einstellwerten!
FCB=4,0
REM
Member: Biber
Biber Aug 28, 2005 at 11:09:32 (UTC)
Goto Top
Jo, cosy,
da lässt sich noch was machen.. ich frag aber an x Stellen noch mal zurück:
- Du hast in der config.nt stehern : dos=high, umb
Macht denn eins der Progs was mit den upper memory blocks? Sonst sind die für die Tonne
- himem.sys ist gut und schön, aber es folgt kein Emm386.sys (oder ähnlicher Treiber)??
- können die Progs XMS/EMS erkennen/verwerten (zb für Indizes etc)?
- FCB muss FCBS heißen, sonst bringt es nix *g

Melde mich morgen nochmal (Kids wollen an die frische Luft)
Frank / der Biber aus Bremen
Member: cosy
cosy Aug 28, 2005 at 11:31:19 (UTC)
Goto Top
umb: ist das nicht dazu da, dass die Treibe rin den Beriech zwischen 640 KB und 1024 Kb geladen werden?

EMS brauche ich doch nicht, oder?
Member: moinsen
moinsen Jun 26, 2006 at 08:17:09 (UTC)
Goto Top
Hallo Allerseits,

falls es noch jemanden interessiert.

Wenn ich irgend etwas mit DOS und Seicher vorhabe, ändere ich in den Eigenschaften der _default.pif (im %windir%) die Einstellungen der Registerkarte Speicher (in der Regel alles auf automatisch). Danach sollte es eigentlich keine Probleme geben. Die DOS-Programme, die mein Unternehmen derzeitig für unsere Bestandskunden noch pflegt, brauchen bis zu 540 kb DOS-Speicher.

Gruß aus Hamburg
Member: jens-44
jens-44 Dec 18, 2006 at 18:01:47 (UTC)
Goto Top
hallo

ich schlage mich seit mehreren Tagen mit XP rum (habe doch jetzt schon von W98 auf XP umgestellt....).
Habe ein DOS-Programm, das für mich gaaanz wichtig ist für die tägliche Arbeit, das unter Borland-Pascal (ehemals Turbo-Pascal) entwickelt wurde und auch schon im protected mode läuft.
Habe schon alle greifbaren Tips ausprobiert, es will einfach nicht laufen: "Überlauf bei Division" immer und immer wieder.

Ist es denn wirklich aussichtslos unter XP ??
Was kann man noch probieren ??

Wer kann helfen - der vielleicht ähnliche Probleme hatte ?? Wäre unwahrscheinlich dankbar für einen Tip der geht !!

Amerkung:
Mit DOSBox bekomme ich es zum laufen, allerdings - trotz mordernem Rechner - kann man sich die Schuhe besohlen beim Starten > und drucken (direkt an LPT1 wie früher halt üblich) tut es auch nicht.
Member: Biber
Biber Dec 18, 2006 at 18:46:31 (UTC)
Goto Top
Moin jens-44,

ist ein bekanntes, aber gefixtes Problem.

Dazu/dagegen gibt es einen Patch in ~zig Varianten.
Ein ungeprüftes Beispiel hier: http://private.addcom.de/czech/rte200.htm

Tausende andere beim Suchmaschine-Befragen mit: "Pascal DOS Überlauf bei Division"

Gruß
Biber
Member: cosy
cosy Dec 30, 2006 at 07:51:45 (UTC)
Goto Top
Hallo Biber
Leider hat mein Problem überhaupt rein gar nix mit einem Overflow /Division Error zu tun. Kannst glauben, dass ich so einen Fehler von dem von mir beschriebenen RAM-Problem genau unterscheiden kann: in Deinem beschriebenen Fall stürzt die virtuelle 32-Bitumgebung von DOS ab. Das passiert bei uns überhaupt nicht. Die einzelnen Anwendungsprogramme hängen, wenn sie ein (zu grosses) Overlay zu laden versuchen, die Virtuelle Umgebung jedoch läuft fehlerfrei weiter. Zudem würde ein von Dir beschriebener Fehler vom WXP-Kernel abgefangen (ist ja alles virtuell!!)
Tschüss und ein gutes neues Jahr!

cosy
Member: cosy
cosy Dec 30, 2006 at 07:57:30 (UTC)
Goto Top
Zum Druckproblem:
Die LPT1- Schnittstelle musst Du umleiten, dann geht's. Einfach beim Einrichten des Druckers in WXP eine Freigabe machen (die Drucker sind ja meist USB- das versteht DOS überhaupt gar nicht, desshalb die Umleitung in ein anderes OS, nämlich das WXP oder so)
Danach nochmal einen Drucker einrichten und den dann bei der Schnittstelle als LPT1 konfigurieren. Der Druckertyp ist weniger wichtig: für DOS-Programme genügt meist ein Basic-Typ wie zum Beispiel "HP Laser Jet generic " oder sowas.
Falls Du den 32Bit Client für Netware hast: damit geht es noch einfacher (klick-klick)
cosy