MS-DOS Speicheroptimierung auf dem Monotech NuXT Turbo PC

Vor gut zwei Jahren hatte ich meinen Monotech NuXT Turbo PC vorgestellt. Ein Design für einen Turbo XT aus dem Jahr 2019 nach aktueller ATX-Spezifikation mit wahlweise Intel 8088 oder NEC V20 CPU, Intel 8087 FPU, eingebauten XT-IDE Controller, und und und! Ausgestattet ist es aber auch mit 832 KiB RAM aufgeteilt auf zwei ICs in DIP-Gehäuse.

englischdeutsch
UMAUpper Memory Areaoberer Speicherbereich
HMAHigh Memory Areahoher Speicherbereich
Vollständige Nutzung des konventionellen Speichers

In der Zeit bis jetzt hatte ich den PC unter MS-DOS ausschließlich mit den 640 KiB konventionellen Speicher genutzt, was bedeutete, dass das gesamte DOS-Betriebssystem, sowie alle aktiven Treiber nur diesen verwendeten und im Zweifel für Anwendungsprogramme, beziehungsweise für Spiele nicht mehr ausreichend RAM zur Verfügung steht. Jetzt habe ich mich aber mal hingesetzt und den noch zur Verfügung stehenden, sogenannten Upper Memory Area (kurz UMA, deutsch: ‚oberen Speicherbereich‘) aktiviert, konfiguriert, sowie versucht zu optimieren, damit mehr konventioneller Speicher für Programme und Spiele zur Verfügung steht. Schließlich hat Monotech Vintage PCs auf der mit MS-DOS vorinstallierten, sowie mitgelieferten CompactFlash-Karte auch gleich die passenden Treiber und Tools wie USE!UMB und DOSMAX beigefügt.
Abzüglich der 640 KiB konventionellen Speicher stehen mir also von den physischen 832 KiB grundsätzlich noch 192 KiB Upper Memory Area zur Verfügung. Dieser ist wiederum in sechs 32 KiB große Upper Memory Blocks (UMB) aufgeteilt. Über den auf dem NuXT Mainboard aufgelöteten 6-fach Dip-Switch lassen sich die einzelnen Blöcke stufenweise aktivieren. Allerdings muss ich hier beachten, dass es Erweiterungskarten für den ISA-Bus gibt, die auch den oberen Speicherbereich nutzen. Das wären neben Speichererweiterungskarten, Netzwerkkarten mit oder ohne Boot ROM, Karten mit eigenen Option ROMs wie HDD-/FDD-Controller auch EGA und VGA Grafikkarten wie die auch bei Monotech Vintage PCs mitgelieferte ‚Onboard PC/104 VGA Card‘. Das heißt, dass ich den ersten 32 KiB Block UMB nicht aktivieren kann, da es sonst zu einem Konflikt kommt und ich keine Grafikausgabe bekomme. So bleiben mir also effektiv nur fünf Blöcke mit zusammen 160 KiB als oberen Speicherbereich. Wirklich mehr als genug um die ersten 640 KiB konventionellen Speicher zu entlasten.
Dank der kurzen Anleitung im ‚NuXT Turbo PC‘ Handbuch, den originalen Dateiversionen der autoexec.bat und config.ays, sowie etwas Selbstoptimierung habe ich den verfügbaren Speicher für ausführbare Programme nun von 548 auf 625 KiB erhöht. Dies habe ich erreicht, in dem ich erst einmal überhaupt mit dem USE!UMBS.SYS Treiber den oberen Speicherbereich für MS-DOS zur Verfügung gestellt habe. In diesen wurden dann bereits einige Teile vom MS-DOS Betriebssystem, der Teriber für den USB2ISA Adapter und der Maus SYS-Treiber verschoben.

Systemteile und Treiber wurden in hohen und oberen Speicherbereich verlagert

Neben dem oberen Speicherbereich (UMA) kann in der config.sys auch noch der hohe Speicherbereich (HMA = High Memory Area) aktiviert werden. Das Programm DOSMAX sorgt dafür, dass weitere Teile des MS-DOS Betriebssystems nun in den zusätzlich zur Verfügung stehenden hohen Speicherbereich geladen werden. DOSMAX selber wurde natürlich zuvor in den oberen Speicherbereich geladen. Für den hohen Speicherbereich wird anscheinend aber wieder ein Teil des oberen Speicherbereichs genutzt. Zumindest werden mir mit dem Programm mem.exe wieder nur 123 KiB gesamt UMA angezeigt, der HMA wird leider nicht aufgezeigt.
Bei immer noch so viel zur Verfügung stehenden oberen Speicher habe ich mir auch mal das MS-DOS eigene Programm doskey.exe gegönnt und in die Startkonfiguration hinzugefügt. doskey.exe ist ein kleines Programm, welches eine Commandline-History für die aktuelle DOS-Sitzung seit Systemstart bietet.

Seit Aktivierung der Upper Memory Area zeigt das DOS-Programm mem.exe als insgesamt zur Verfügung stehenden Speicher nun 1024 KiB an. Dies stimmt insofern, als DOS mit dem entsprechenden aktivierten Speicherbereich die Menge auch verwalten und nutzen kann, allerdings kommuniziert DOS – zumindest beim NuXT – nicht mit dem BIOS, sodass der Wert nicht mit dem physisch zur Verfügung stehenden Speicher korrespondiert. Es geht stattdessen nur davon aus, dass 1024 KiB RAM zur Verfügung steht. Sieht man sich das Board Layout des NuXTs unter Verwendung des Handbuchs an, so scheint der physisch zur Verfügung stehende Arbeitsspeicher aus zwei 512 KiB D-RAM Speicherbausteine zu bestehen. – Was in Summe 1024 KiB sind. Da aber über die DIP-Schalter nur bis zu sechs UMBs à 32 KiB zusätzlich zu dem konventionellen Speicher zugeschaltet werden können, können praktisch auch nur maximal 832 KiB Gesamspeicher genutzt werden. Das ist MS-DOS hier nicht in der Lage exakt zu prüfen. Außerdem werden laut dem NuXT Handbuch noch Teile des UMAs für den Video-RAM (MDA, CGA, EGA oder VGA), für das XT-IDE Universal BIOS, sowie für das System BIOS genutzt. Der Power On Self Test zählt unabhängig davon trotzdem nach wie vor nur den gesamten konventionellen Speicher von 640 KiB hoch. Der zusätzlich konfigurierte hohe, sowie obere Speicherbereich – sprich die gesamten 832 KiB – sieht das BIOS anscheinend gar nicht.

Aufschlüsselung, welche Programme im konventionellen, sowie oberen Speicherbereich liegen.

Links: