IBM DOS Speicheraufteilung

Die DOS Speicheraufteilung ist nicht unkompliziert. Die Historie begr√ľndet, wie es dazu kam: der IBM-PC war 1981 als Konkurrenz zu etablierten Mikrocomputern konzipiert worden, die auf dem 8-Bit Betriebssystem CP/M basierten (Osborne, Kaypro u.v.m.). CP/M-Maschinen konnten prinzipbedingt nur 64KiB Hauptspeicher verwalten. Daher ging man bei IBM davon aus, das in einem ‘Single Task’- Betriebssystem wie DOS der residente Teil des Betriebssystems (command.com) und eine gestartete Anwendung zusammen niemals mehr als 640KiB Speicher ben√∂tigen w√ľrde. So kam es zur Einf√ľhrung der 640KiB Speichergrenze f√ľr DOS, obwohl man mit der verwendeten 16-Bit 8086/8088 CPU bis zu 1024KiB h√§tte adressieren k√∂nnen. Es war anfangs tats√§chlich so, das man bereits mit 64KiB RAM ganz passabel arbeiten konnte. Der erste IBM PC 5150 wurde in der Minimal-Konfiguration mit nur 16KiB RAM ausgeliefert, wenn man DOS verwenden wollte mit 64KiB. Msdos.sys, io.sys und der speicheresistente command.com der DOS-Versionen 1.x ben√∂tigten nur etwas mehr als 12KiB im Speicher, 52KiB blieben √ľbrig f√ľr die Anwendung.

Und das reichte den ersten Versionen von z.B. Wordstar oder dBase II. Diese wurden einfach von CP/M auf DOS umgesetzt und mussten vorher auch unter CP/M mit 64KiB RAM auskommen. Der Nachfolger XT besa√ü bereits standardm√§√üig 128KiB RAM, wurde jedoch meist mit “√ľppigen” 256KiB bestellt.

Ab Mitte der 1980iger wurden die Anspr√ľche der Anwender an das Betriebssystem DOS immer h√∂her, denn die Anwendungen erhielten mit jeder neuen Version zus√§tzliche speicherfressende Features. Speicherresidente Programme (TSR, z.B. Borland’s Sidekick) und Treiber f√ľr zus√§tzliche Adapter (z.B. Sound- und Netzwerkkarten) verursachten zus√§tzlichen Speicherbedarf, und so wurde die 640 KiB Speichergrenze wider Erwarten doch zum Problem. MS, IBM und andere findige Entwickler erkannten dies und begaben sich auf die Suche nach zus√§tzlichem Speicher, um das Problem zu l√∂sen oder wenigstens zu mildern. Die Nachfolge-CPU Intel 80286 kam im IBM AT 5170 zum Einsatz und konnte bis zu 16MiB Speicher ansprechen. Um kompatibel zur Vorg√§nger-CPU zu bleiben, allerdings nur im sogenannten Protected Mode. Normalerweise lief der 80286 unter DOS aber im “Real Mode” und verhielt sich dann wie ein h√∂her getakteter 8088/8086. Wurde die CPU von einer Anwendung in den “Protected Mode” geschaltet, dann bestand die M√∂glichkeit, nicht nur Speicher oberhalb der 1MiB Grenze zu adressieren sondern auch die 384 KiB zu nutzen, die zwischen 640 KiB (ab 0xA000) und unterhalb 1MB lag. Dieser Speicherbereich war f√ľr das BIOS des IBM PC, das BIOS von Adapterkarten und den Bildschirmspeicher vorgesehen. Der ben√∂tigte Speicherbereich f√ľr diese Komponenten musste noch unter der 1MiB-Grenze liegen, damit die 80xx-CPU diesen auch adressieren konnte. In den meisten Konfigurationen wurden diese 384KiB aber nur teilweise ben√∂tigt. So bot sich die M√∂glichkeit, in die ungenutzten Bereiche zumindest TSR- und Treiberprogramme auszulagern, um die wertvollen 640KiB DOS Speicher weitgehend f√ľr die eigentlichen Anwendungen freizuhalten.

Durch diese Tricks wurde die Konfiguration der Speicherverwaltung von DOS im Laufe der Zeit recht komplex und es gibt es ziemlich viele Begriffe, deren Bedeutungen verstanden werden wollen.

Kurze Zusammenfassung bis hierher: unter 640KiB, das ist der “konventionelle Speicher”, hier hat DOS die vollst√§ndige Kontrolle. Den Bereich √ľber 640KiB (0xA0000) bis zur 1024KiB Grenze (0xF0000) k√∂nnte DOS zwar noch adressieren, aber hier gibt es – auch bei Rechnern, die mit 1MB RAM und mehr ausgestattet sind – normalerweise kein durch DOS ansprechbares RAM. Dieser Adressbereich wird als UMA (Upper Memory Area) bezeichnet und ist reserviert: der Bildschirmspeicher der Grafikkarte, das eigene BIOS von Adaptern (z.B. SCSI-Controller, Netzwerkkarte) und das PC-BIOS selbst m√ľssen – wie bereits erw√§hnt – zwingend in einen f√ľr DOS adressierbaren Adressbereich unter der 1 MB – Grenze eingeblendet (gemapped) werden.

Extended Memory

Damit DOS (ab der Version 5.0) auf RAM jenseits der 1024KiB Grenze zugreifen kann, muss eine CPU vom Real Mode (der Standard-Modus, in dem DOS normalerweise l√§uft) in den sogenannten Protected Mode umgeschaltet werden. Wie erw√§hnt gibt es diesen Modus seit dem 80286, in einer pratikableren Implementierung erst ab dem i386. Um die freien Bereiche der UMA als RAM nutzen zu k√∂nnen ben√∂tigt man reales RAM, das dort eingeblendet werden kann und Treiberprogramme wie z.B. EMM386, 386Max, Qemm oder UMBPCI. Alle benutzen den “Protected Mode” und k√∂nnen so auf realen Speicher oberhalb der 1MB Grenze (Extended Memory) zugreifen, um in den nicht belegten Bereichen der UMA (UMB, Upper Memory Blocks) weiteren f√ľr DOS-Programme adressierbaren Speicher einzublenden. Dazu muss der Bereich √ľber 1MiB (Extended Memory) aber vorher durch einen weiteren Treiber – im Normalfall HIMEM.SYS – zug√§nglich gemacht werden. HIMEM.SYS stellt ihn nach der Extended Memory Specification (XMS) zur Verf√ľgung und √ľbernimmt die Verwaltung des Zugriffs der einzelnen Programme. XMS-Speicher kann von DOS Programmen neueren Datums, die auf DPMI (‘DOS Protected Mode Interface’) basieren, auch direkt benutzt werden.

Die nachfolgende Speicheraufteilung ist nur beispielhaft, da sie abhängig von der verwendeten Grafikkarte (CGA, EGA, Hercules, VGA), dem Vorhandensein von Zusatzkarten mit eigenem BIOS oder dem Computermodell ist (die IBM PS/2 Modelle belegen mit ihrem BIOS den oberen Teil der UMA).

IBM DOS Memory Map
Zusätzliche Informationen: https://support.microsoft.com

Das war noch nicht alles, seit dem Erscheinen des Intel 80286 und einer hier vorhandenen zus√§tzliche Adressleitung (A20) gibt es auch noch die HMA (High Memory Area), mit der die ersten 64 KiB des Speichers oberhalb der der 1MiB-Grenze durch einen Trick als adressierbarer Speicher f√ľr DOS-Programme zur Verf√ľgung gestellt werden k√∂nnen. Das funktioniert nicht nur im Protected Mode des 80286, sondern auch im Real Mode. Erst ab der Version 5.0 war DOS in der Lage, den eigenen Systemkern in die HMA zu verlagern (DOS=HIGH) und damit viel konventionellen Speicher freizur√§umen.

Treiberinstallation in CONFIG.SYS

Bemerkung: verständlicherweise kann nicht jeder Parameter eines jeden Treibers kann hier beschrieben werden

  • MO-Laufwerk: Hier wird der Treiber benutzt, der auf der originalen Fujitsu-Diskette zu finden war (MODISKAP.SYS). Der Treiber sollte aber auch im Internet zu finden sein.
  • USB Unterst√ľtzung. Die “Motto Hairu” Treiber USBASPI.SYS (ohne weitere Parameter, eine USB-Floppy wird nicht ben√∂tigt) und DI1000DD.SYS. Diese Treiber m√ľssen im Internet bezogen werden. Ein USB Laufwerk muss √ľbrigens bereits vor dem Booten angeschlossen sein, damit der Treiber es erkennen kann. Ist eben kein Plug&Play, wie man es von Windows her kennt. USB Sticks und Festplatten funktionieren nur bis zu einer Gr√∂√üe bis ca. 120 GB. Speicherkarten, Zip-Laufwerke und – mit entsprechendem Parameter – USB Floppy Laufwerke gehen auch, letzeres sogar bootf√§hig. Ist kein Laufwerk beim Booten angeschlossen, wird der Treiber nicht geladen und verbraucht somit auch kein RAM. Den Treiber und vieles andere mehr finden Sie auf Hiren&Pankays Homepage.
  • NANSI.SYS (sch√∂nere Prompts, ein bisschen Farbe in Batchdateien, DOS-Befehle auf Tastendruck). NANSI.SYS ist dem Standart ANSI.SYS nicht nur deswegen zu bevorzugen, weil er nur 3KiB statt 4KiB RAM beansprucht, sondern weil er wesenlich schneller ist.
  • EMM386.EXE tauschen wir gegen UMBPCI.SYS. Wir brauchen kein EMS, und dieser Speichermanager verbraucht viel weniger konventionellen Speicher, auch weil HIMEM.SYS nicht mehr ben√∂tigt wird. Abh√§ngig vom Chipsatz ihres Mainboards kann es bei Verwendung von UMBPCI.SYS notwendig sein, zus√§tzlich den Treiber LOWDMA.SYS zu installieren. Dieser darf nicht Fall hochgeladen werden. Bei unserem Mainboard mit Intel Chipsatz 440BX muss er installiert sein, sonst gibt es Probleme mit Diskettenzugriffen, wenn z.B. DOSLFN hochgeladen wird und in den Speicher unter E000h rutscht. Dieser Bereich ist beim verwendeten Board nicht ISA-DMA f√§hig. Lesen Sie bei Verwendung zum besseren Verst√§ndnis von UMBPCI.SYS unbedingt die Seite von Uwe Sieber. Weitere Links mit Tipps zu den DOS-Konfigurationsdateien: www.deinmeister.de, www.madsenworld.dk
  • IFSHLP.SYS, f√ľr sp√§tere Netzwerkinstallation

Programme/TSR’s in der AUTOEXEC.BAT

  • SMARTDRV.EXE beschleunigt den Dateizugriff erheblich. Allerdings haben wir uns f√ľr LBACache aus FreeDOS entschieden. Es braucht viel weniger Speicher als Smartdrive und ist wohl das modernste Cache-Programm, das man momentan f√ľr DOS finden kann. Die Pufferung f√ľr die Diskettenlaufwerke A und B kann abgeschaltet werden. LBACache werden 4 MiB Speicher zugeteilt, es ist ja genug Extended Memory vorhanden. Der Schreib-Cache sowie der Cache f√ľr Diskettenlaufwerke wird nicht eingeschaltet. Das Programm k√∂nnte auch √ľber die config.sys eingebunden werden. 4MiB schneller Cache unter DOS, das macht sich effektiv bemerkbar! Weitere Cache-Programme: Norton Desktop beinhaltet nwcache2, PC Tools Desktop bringt pc-cache mit. Bestimmt keine schlechten Programme, aber mehr als 15 Jahre √§lter als LBACache. Das gleiche gilt f√ľr die Cache-Programme Hyperdisk 4.65 und Super.exe aus PC-Kwik 3.1. Alle k√∂nnen u.E. nicht mal mit Smartdrv aus DOS 7.1 mithalten. Da von den Letztgenannten nur Shareware vorhanden ist, wurden sie nach dem Testen wieder gel√∂scht.
    Tipp: mehr Cache-Speicher ben√∂tigt nicht nur mehr XMS, sondern aus Verwaltungsgr√ľnden auch mehr konventionellen Speicher bzw. wenn das Programm hochgeladen wird, auch mehr Speicher in den UMB’s.
    Tipp: Bei Verwendung eines Cache-Programms sollte man den Eintrag BUFFERS in der CONFIG.SYS auf 3 heruntersetzen, sonst wird zweimal gepuffert!
    Tipp: Wir empfehlen im Zusammenhang mit Flash-Speichern (DOM, SD, CF) gar keine Cache-Programme zu verwenden!
  • VSHIELD: ein Virenscanner sollte permanent laufen. Wir haben die schlechte Erfahrung gemacht, das sich auch auf manchen Originaldisketten im Laufe der Jahre ein Bootsektor-Virus oder √§hnliches eingenistet haben kann. Es gibt allerdings keine aktuellen Virenscanner, die noch unter DOS betreibbar sind. Das muss aber auch nicht sein. Die Viren, die hier vorkommen k√∂nnen, deckt ein Virenscanner von 1997 (McAfee 3.0 mit Virendefinitionen der Version 3.2.2) weitestgehend ab.
  • F√ľr das CD-ROM wird SHCDX33E verwendet. Er braucht wesentlich weniger Speicher als MSCDEX.
  • KEYB.COM wird durch KBD.COM ersetzt. Das ist ein kleiner, allerdings nur deutscher Tastaturtreiber, der auch den Treiber COUNTRY.SYS in der CONFIG.SYS obsolet macht. Trotzdem sollte der Eintrag COUNTRY.SYS nicht entfernt werden, einige Programme benutzen diese Einstellungen (z.B. f√ľr das Anzeigeformat von Datum und Uhrzeit)
  • CTMOUSE wird als Maustreiber eingesetzt. Er braucht wenig Speicher und kann mit allen M√§usen.
  • F√ľr die Ramdisk wird XMSDSK verwendet. Ihm werden 32 MB XMS-Speicher und der Laufwerksbuchstaben Z:. zugeteilt. Das ist ist √ľppig, aber komfortabel zum Entpacken von gro√üen Archiv- und Installationsdateien. Einige DOS Programme bieten eine Einstellung f√ľr tempor√§ren Speicher. Der wird – wo m√∂glich – auch auf Z: (der Laufwerksbuchstabe der RAM-Disk) gelegt.

Wenn diese Konfiguration gebootet wird, ohne irgendwas in UMB’s hochzuladen, dann bleiben nur noch ca. 560 KiB konventioneller Speicher √ľbrig. Das Speicheroptimierungsprogramm MEMMAKER (Bestandteil von DOS 7.1) kann hier zwar helfen, Feintuning aber nicht ersetzen. Soll MEMMAKER eingesetzt werden, ist es √ľbrigens besser, tempor√§r EMM386 mit der Option NOEMS in der CONFIG.SYS wieder zu aktivieren. Wir ziehen manuelles Speichertuning vor:

  • Dabei immer wichtig: eine DOS 7.1 Bootdiskette mit deutschem Tastaturtreiber und einem ASCII-Editor (z.B. edit.com) oder z.B. Volkov Commander! Falls was schiefgeht und der Rechner nicht mehr hochf√§hrt, kann man von der Diskette booten und die Konfigurationsdateien bearbeiten. Gute Praxis ist, vor dem Laden der verschiedenen Treiber und Programme ein PAUSE-Statement einzubauen, damit man besser feststellen kann, wo es hakt. Es gibt √ľbrigens auch die M√∂glichkeit, in der CONFIG.SYS den Ablauf anzuhalten: suchen Sie im Netz nach PAUSE.SYS.
  • CONFIG.SYS: alle hochladbaren Treiber mit DEVICEHIGH versuchen, in den UMB’s unterzubringen.
  • AUTOEXEC.BAT: alle Programme mit LOADHIGH hochladen. Ausnahmen: McAfee’s VSHIELD und XMSDSK, die laden sich ohne LOADHIGH automatisch hoch.
  • Danach sollte “mem /c /p” schon mehr freien Speicher anzeigen.
  • Notieren Sie sich die Gr√∂√üen, die die Programme im Speicher belegen, denn diese Werte sind f√ľr eine Optimierung relevant. mem /c /p zeigt das ja an wie auch den noch verf√ľgbaren Speicher in der UMA. Sie k√∂nnen die Ausgabe von “mem /c” auch in eine Datei umleiten, dann ersparen Sie sich das Aufschreiben: mem /c >c:mem.txt.
  • Grunds√§tzlich ist es empfehlenswert, die Programme mit dem gr√∂√üten Speicherbedarf soweit m√∂glich zuerst zu laden. In der CONFIG.SYS wie auch in der AUTOEXEC.BAT. Das liegt daran, das sich die Treiber und Programme immer den gr√∂√üten freien UMB suchen. Werden kleine Treiber oder Programme/TSR’s zuerst geladen, belegen sie immer den gr√∂√üten vorhandenen UMB, auch wenn sie in einen kleineren passen w√ľrden. Gr√∂√üere Treiber und Programme sind dann vielleicht nicht mehr komplett in einem UMB unterzubringen und laden sich dann in den konventionellen Speicher. Wichtig ist aber, die gr√∂√üeren Programme/Treiber in den UMB’s unterzubringen und wenn’s dann nicht mehr reicht, ein paar kleinere im konventionellen Speicher zu haben. Es ist ein Geduldsspiel mit vielen Bootvorg√§ngen. Zugegeben, FreeDOS macht das besser. Tipp: googel’n Sie Optimizing your Use of Upper Memory Blocks. Sie m√ľssten bei Microsoft einen Artikel finden, der einen interessanten Absatz enth√§lt: Finding the best Load Order. Wir haben unsere 628KiB freien konventionellen Speicher nur √ľber die Reihenfolge hingekriegt.
  • Es gibt nat√ľrlich noch die M√∂glichkeit, einzelne Programme gezielt in bestimmte UMB’s zu laden. Wird bei DEVICEHIGH oder LOADHIGH beispielweise der Parameter /L:1 angegeben, wird versucht das Programm in diesen UMB abzulegen. MemMaker macht das so. Wenn man hier manuell vorgeht sollte man aber Bescheid wissen welche UMB’s in welcher Gr√∂√üe zur Verf√ľgung stehen.
  • Optimierte und funktionierende Konfigurationsdateien immer sichern. Eine sp√§tere Programminstallation kann den ganzen sch√∂nen Feinschliff √ľber den Haufen werfen. Ausserdem ist man froh, noch Konfigurationsdateien zu haben, mit denen man nicht mehr funktionierende schnell wieder ersetzen kann, falls der Rechner mal w√§hrend des Bootens stehenbleibt und man von Diskette booten mu√ü.

Am Ende sollten mindestens 620KiB freier Speicher vorhanden sein, aber das h√§ngt nat√ľrlich von den ben√∂tigten Treibern und TSR-Programmen und der verbauten Hardware ab. In der beschriebenen Konfiguration sind es 629KiB, wenn ein USB Laufwerk angeschlossen und VSHIELD resident geladen ist. Das ist u.E. das Maximum, das mit DOS 7.1 m√∂glich ist.

Die derzeitige CONFIG.SYS (mit Kommentaren)

[MENU]

MENUCOLOR 6,0
MENUITEM=NOINTERLNK, Boot ohne Interlink
MENUITEM=INTERLNK, Boot mit Interlink
MENUDEFAULT=NOINTERLNK,10

[COMMON]

REM ---------- COMMAND INTERPRETER ENVIROMENT
SHELL=C:\COMMAND.COM C:\ /E:1024 /F /P

REM UMB's ermöglichen
DOS=HIGH,UMB,AUTO

REM DOS 7.1 versucht automatisch, diese Treiber in den hohen Bereich
REM zu laden, wenn in DOS=HIGH,UMB kein NOAUTO angehängt ist.
BUFFERS=3,0
FILES=80
LASTDRIVE=Z
STACKS=12,512
FCBS=4,0

REM UMA erm√ģglichen. Das Intel 440BX Chipset des Rechners ist laut DMACHK
REM von C800 bis DFFF nicht DMA fähig. Zudem wird ein Cache-Programm
REM hochgeladen. LOWDMA.SYS ist daher notwendig. Der /I= Parameter wird
REM nicht mehr benötigt bei Version 3.xx
DEVICE=C:\DRIVERS\MEMORY\UMBPCI\UMBPCI.SYS
DEVICE=C:\DRIVERS\MEMORY\UMBPCI\LOWDMA.SYS

REM Der Aufruf von HIRAM.EXE ist notwendig, um HIMEM.SYS hochzuladen
DEVICE=C:\DRIVERS\MEMORY\HIRAM\HIRAM.EXE
DEVICEHIGH=C:\DOS71\HIMEM.SYS /NUMHANDLES=128 /TESTMEM:OFF /Q

REM ---------- SCREEN
REM ANSIPLUS braucht zuviel Speicher (36KB), ANSIPLSR braucht
REM weniger, hat aber kein Scroll-Back der Kommandozeile
REM DEVICEHIGH=C:\DRIVERS\ANSIPLUS\ANSIPLUS.EXE
DEVICEHIGH=C:\DOS71\NANSI.SYS

REM ---------- USB DRIVER
REM Der Treiber USBASPI.SYS verbraucht nur Speicher, wenn ein USB Laufwerk
REM beim Booten angeschlossen ist (nur Harddisk, ZIP, CD-ROM möglich).
DEVICEHIGH=C:\DRIVERS\USB228\USBASPI.SYS
DEVICEHIGH=C:\DRIVERS\USB228\DI1000DD.SYS

REM ---------- MO DRIVER
DEVICEHIGH=C:\DRIVERS\MO\MODISKAP.SYS

REM ---------- CD-ROM DRIVER
DEVICEHIGH=C:\DOS71\VIDE-CDD.SYS /D:IDE-CD

REM ---------- NETWORK WFW 3.11
DEVICEHIGH=C:\WINDOWS\IFSHLP.SYS

REM ---------- DOS VERSION
DEVICEHIGH=C:\DOS71\SETVER.EXE

REM ---------- GERMAN CONVENTIONS
REM Wird zwar bei KBD.COM (siehe autoexec.bat) nicht ben√ģtigt,
REM ist aber trotzdem eingebunden, da manche Programme landesspezifische
REM Information aus der COUNTRY Einstellung beziehen
COUNTRY=049,850,C:\DOS71\COUNTRY.SYS

REM DEVICE=C:\EMULATOR\SCOPY\CDRIVE.SYS -RA1 -U1
LASTDRIVE=Z

REM ---------- SERIELL/PARALLEL COMMUNICATION
REM Serielle oder parallele öbertragung von oder auf einen anderen Computer.
REM .
REM 1. Die Rechner optimalerweise mit einem parallelen Laplink Kabel
REM    verbinden. Den PAR Umschalter auf 'A Laplink' stellen.
REM 2. Auf dem Host-Rechner (Server) das Programm INTERSRV.EXE starten
REM    Beispiel: intersvr c: (um die Diskettenlaufwerke auszublenden).
REM 3. Bei diesem Rechner das REM vor 'INTERLNK' entfernen und neu booten
REM .
REM Bei aktueller Konfiguration und installierter Verbindung wird
REM normalerweise der Laufwerksbuchstabe I: f√ľr den Server vergeben.
REM Um den Laufwerksbuchstaben zu ermitteln, mit dem verbunden wurde:
REM einfach nochmal INTERLNK eingeben.
REM .
[INTERLNK]
DEVICE=C:\DOS71\INTERLNK.EXE /NOPRINTER
DEVICE=C:\DOS71\PAUSE.SYS

[NOINTERLNK]

Die derzeitige AUTOEXEC:BAT (mit Kommentaren)

@ECHO OFF
REM **********************************************************************
REM ** Das Netzwerk (TCP-IP) steht nur in Windows (WfW 3.11)		**
REM ** zur Verf√ľgung.							**
REM **********************************************************************
C:\WINDOWS\net start

REM ---------- ANSI-COLORS
SET GREEN=
SET BROWN=
SET WHITE=
SET RED=

REM ---------- ENVIROMENT VARIABLES
SET DOS71=C:\DOS71
SET DISKIMG=C:\DISKIMG
SET VIRUSDIR=C:\VIRUS
SET DIRCMD=/4
SET PMDIR=C:\DOSDESK\PM
SET 1DIRPLUS=C:\DOSDESK\1DIRPLUS
SET TEMP=Z:
SET LIB=C:\DOSDEV\QC25\LIB
SET INCLUDE=C:\DOSDEV\QC25\INCLUDE
SET DILLO=C:\DILLODOS
SET WATTCP.CFG=%DILLO%\BIN
SET ETC=%DILLO%
SET SCREENTHIEF=C:\ /M- /O:BMP
SET TDCHECK=%DISKIMG%\TELEDISK
SET PCTOOLS=C:\DOSDESK\PCTOOLS\DATA

REM ---------- PATH
SET PATH=%DOS71%;%DOS71%\BATCH;%DOS71%\NORTON;C:\DOSDESK\PM;%DISKIMG%\TELEDISK%;C:\NET
SET PATH=%PATH%;%DISKIMG%\IMD;%DISKIMG%\ANADISK;C:\EMULATOR\22DISK;C:\GUI\FLW
SET PATH=%PATH%;C:\NSSI;%VIRUSDIR%\MCAFEE;%VIRUSDIR%\FPROT;C:\UTIL\NSSI;C:\WORD
SET PATH=%PATH%;C:\GUI\NDO;C:\DOSDEV\QC25\BIN;C:\UTIL\SCRCHIEF;C:\DILLODOS;C:\123V3
SET PATH=%PATH%;C:\WINDOWS;C:\WINDOWS\NDW;C:\UTIL\EDITOR\EDITV;C:\DOSDEV\DJGPP\BIN

REM ---------- DJGPP
SET DJGPP=C:\DOSDEV\DJGPP\DJGPP.ENV

REM ---------- VIDEOMODUS
CALL TM.BAT

REM **********************************************************************
REM ** ACHTUNG !!!							**
REM ** Das Hochladen der Programme erfolgt in der optimalen		**
REM ** Reihenfolge. Veränderungen bewirken, das u.U. weniger konvent-	**
REM ** ioneller DOS Speicher Verf√ľgung steht.				**
REM **********************************************************************

REM ---------- CACHE
ECHO %BROWN%
LH C:\DRIVERS\LBACACHE\LBACACHE.COM 4096 TUNA
ECHO %WHITE%

REM ---------- MCAFEE VSHIELD
SET VCHOICE=1
ECHO %GREEN%
CHOICE MCAFEE VSHIELD laden /c:JN /tJ,5
if ERRORLEVEL 2 SET VCHOICE=2
if %VCHOICE% == 1 %VIRUSDIR%\MCAFEE\VSHIELD /NOEXPIRE /BOOTACCESS
ECHO %WHITE%

REM ---------- RAMDISK 32MB DRIVE Z:
XMSDSK Z: 32768 /Y /T

REM ---------- FILE SHARING (only for WfW 3.11)
LH C:\DOS71\SHARE.EXE

REM ---------- LONG FILENAMES
LH C:\DRIVERS\DOSLFN\DOSLFN /Z:C:\DRIVERS\DOSLFN\CP437UNI.TBL

REM ---------- KEYBOARD SPEED
MODE CON RATE=32 DELAY=1

REM ---------- REPEAT COMMAND LINE
LH C:\DRIVERS\RECALL12\RECALL.COM -I

REM ---------- MOUSE
LH CTMOUSE /Y

REM ---------- MOUSE POINTER GRAPHIC
LH C:\DRIVERS\MOUSE\PP111\PP

REM ---------- CD ROM LETTER X
LH C:\DRIVERS\CDROM\SHSUCDX /D:IDE-CD /C /L:X

REM ---------- GERMAN KEYBOARD DRIVER
LH C:\DRIVERS\KBD\KBD

REM ---------- Locking volumes to enable "direct disk access":
CALL LOCKDRV.BAT
BREAK ON

REM ---------- LFN in FOR Batchschleifen
LFNFOR ON

REM ---------- MCAFEE VShield resident
ECHO %RED%
if %VCHOICE% == 1 %VIRUSDIR%\MCAFEE\VSHIELD /RECONNECT
ECHO %WHITE%

REM ---------- PROMPT (s.a. PROMPT.TXT im Verzeichnis DOS71)
PROMPT $e[0;33;40m$t$e[6D/$d$e[5D$e[40;32m$l$e[37;40m$p$e[40;32m$g$e[40;37m

REM ---------- HELP FOR BATCH-FILES
CALL PRG.BAT

REM ---------- DOS VERSION
ECHO %BROWN%
VER
ECHO %WHITE%

REM ---------- DOS Navigator
DN

Anmerkungen:

  • Warum NET START aufgerufen wird, aber keine weiteren Netzwerktreiber eingebunden werden, liegt nur an der sp√§teren Installation von “Windows 3.11”. Wenn das nicht vorgesehen ist, dann bitte weglassen.
  • Die SET und die PATH Anweisungen h√§ngen nat√ľrlich von den installierten Programmen ab.
  • Es wird auffallen, das zwar eine Soundkarte eingebaut ist, aber nicht installiert wird. Das liegt daran, das zum Abspielen von MP3’s mit MPXPlay keine entsprechende Treiberinstallation notwendig ist. Das Programm hat eine automatische Erkennung der Soundkarte. Wenn Sie DOS-Spiele einrichten, mu√ü nat√ľrlich der Soundkarten-Treiber dauerhaft in der autoexec.bat installiert werden. In diesem Fall w√§re auch bei unserer Konfiguration ein Umbau notwendig, wenn weiter so viel konventioneller Speicher frei bleiben soll.
  • TM.BAT (‚ÄěTM -c80 -r34‚Äú) setzt den Textmode auf 34 Zeilen und 80 Spalten, Wir benutzen an diesem Rechner einen 17″ Monitor. Das Utility TM (Text Mode) zum Setzen des Textmodes auf VGA-Karten ist Freeware.
  • Die ECHO‘s mit den ANSI-Farben sind nur eine Spielerei und k√∂nnen nat√ľrlich auch weggelassen werden. Das kryptische PROMPT sollte Sie ebenfalls nicht irritieren, ein einfaches PROMPT $P$G tut’s auch. Die von Batch-Datei “PRG.BAT” zeigt Infos zu anderen Batches an, mit denen verschiedene Programme gestartet werden.
  • KILLER soll fehlerhafte Opcodes eliminieren. Wenn es bei einem Rechner √Ąrger macht: rauswerfen
  • SHARE ist eigentlich nur bei Netzwerkbetrieb notwendig, kann ansonsten weggelassen werden. Dann werden ca. 5 KiB in den UMB’s frei, die man vielleicht f√ľr was anderes n√∂tiger brauchen k√∂nnte. Da wir nachfolgend auch WfW 3.11 auf dem Rechner haben werden, ist die Installation empfehlenswert.
  • VSHIELD ist die speicherresistente Variante des McAfee Virenscanners. Dadurch wird jede Diskette, die eingelegt automatisch untersucht. Die Erfahrung hat gezeigt, das ein Virenscanner beim Archivieren hunderter alter Disketten kein Luxus sondern Notwendigkeit ist. Durch die Abfrage mit CHOICE kann beim Booten das Laden von VSHIELD optional auch unterdr√ľckt werden.

So sieht die Ausgabe von mem /c nach der Optimierung aus (mit USB-Laufwerk):

Modules using memory below 1Mb:

  Name           Total       =   Conventional   +   Upper Memory
  --------  ----------------   ----------------   ----------------
  SYSTEM      25.552   (25K)     10.704   (10K)     14.848   (15K)
  LOWDMA         672    (1K)        672    (1K)          0    (0K)
  HIMEM        1.104    (1K)          0    (0K)      1.104    (1K)
  NANSI        3.520    (3K)          0    (0K)      3.520    (3K)
  MODISKAP    14.768   (14K)          0    (0K)     14.768   (14K)
  VIDE-CDD     5.008    (5K)          0    (0K)      5.008    (5K)
  IFSHLP       3.856    (4K)          0    (0K)      3.856    (4K)
  SETVER         864    (1K)          0    (0K)        864    (1K)
  COMMAND      7.808    (8K)          0    (0K)      7.808    (8K)
  XMSDSK         688    (1K)          0    (0K)        688    (1K)
  RECALL       2.560    (3K)          0    (0K)      2.560    (3K)
  LBACACHE     9.504    (9K)          0    (0K)      9.504    (9K)
  VSHIELD     31.760   (31K)          0    (0K)     31.760   (31K)
  KBD          1.520    (1K)          0    (0K)      1.520    (1K)
  SHARE        5.696    (6K)          0    (0K)      5.696    (6K)
  PP           7.328    (7K)          0    (0K)      7.328    (7K)
  DOSLFN      11.488   (11K)          0    (0K)     11.488   (11K)
  CTMOUSE      3.104    (3K)          0    (0K)      3.104    (3K)
  SHSUCDX      5.872    (6K)          0    (0K)      5.872    (6K)
  FREE       676.496  (661K)    643.968  (629K)     32.528   (32K)

Memory summary:

  Type of Memory       Total    =     Used    +     Free
  ----------------  -----------   -----------   -----------
  Conventional          655.360        11.392       643.968
  Upper                 163.824       131.296        32.528
  Reserved              294.928       294.928             0
  Extended (XMS)     99.549.184    37.901.312    61.647.872
  ----------------  -----------   -----------   -----------
  Total memory      100.663.296    38.338.928    62.324.368

  Total under 1Mb       819.184       142.688       676.496

  Total Extended (XMS)                 99.549.184  (97.216K)
  Free Extended (XMS)                  61.647.872  (60.203K)

  Largest executable program size         643.952     (629K)
  Largest free upper memory block          31.328      (31K)
  Available space in High Memory Area       2.832       (3K)
  MS-DOS is resident in the high memory area.

Es sind also noch knapp 3KiB in den UMB’s verf√ľgbar. Das eine oder andere kleinere Programm oder Treiber w√§re also schon noch unterzubringen.

Hier die Ausgabe von mi (diesen mem-Ersatz finden Sie auch auf der Seite von Uwe Sieber unter “Utilities”). mi zeigt die Speicherbereiche, in die Treiber und TSR-Programme hochgeladen wurden. Im Bereich zwischen 0xA0000 und 0xC7FFF liegt der Bildschirmspeicher und das BIOS der VGA-Karte, dar√ľber die ersten UMB’s, beginnend mit USBASPI. In der Tabellenspalte “Unterer” sieht man die Treiber, die “konventionellen Speicher” belegen. Eine entsprechende Anzeige solcher Informationen k√∂nnen Sie aber auch mit mem /d /p erreichen.

Adrss  Unterer     Oberer     Programm oder Treiber
-----  --------  ----------- --------------------------
0213h    1 024        ..     IFS=
0254h      672        ..     Device=LOWDMA    Attr=E000h  Name=LOWDMA$$
027Fh      544        ..     IFS=
0303h  643 008        ..     <größter freier Bereich>
                                     
C803h      ..       1 104    Device=HIMEM     Attr=A000h  Name=XMSXXXX0
C849h      ..       3 520    Device=NANSI     Attr=8013h  Name=CON     
C926h      ..      14 768    Device=MODISKAP  Attr=68C2h  Laufwerk F
CCC2h      ..       5 008    Device=VIDE-CDD  Attr=C800h  Name=IDE-CD  
CDFCh      ..       3 856    Device=IFSHLP    Attr=D000h  Name=IFS$HLP$
CEEEh      ..         864    Device=SETVER    Attr=8000h  Name=SETVERXX
CF25h      ..         752    IFS=
D2BEh      ..       7 776    COMMAND   
D4ABh      ..         672    XMSDSK   
D4E4h      ..       9 488    LBACACHE 4096 TUNA
D736h      ..      31 744    VSHIELD   /NOEXPIRE /BOOTACCESS
DF2Fh      ..       5 680    SHARE    
E0CEh      ..      11 472    DOSLFN   I      COMMI.COM
E39Ch      ..       2 528    RECALL    -I
E4FAh      ..       7 296    PP       
E834h      ..       1 488    KBD      

655 360 Bytes (640k) gesamt DOS 7.10 konventioneller Speicher. 
643 008 Bytes (628k) größtes ladbares Programm.  
 31 312 Bytes, wenn hoch geladen.

Hoher Speicher mit DOS verwaltet.

     0  Bytes Extended (AT/286/386) Memory, von BIOS berichtet.
31 616k Bytes XMS 3.0 (3.65) Speicher: 36 949k belegt + 60 203k frei.
        DOS in HMA.